Lines Matching defs:info
37 nv50_vertprog_assign_slots(struct nv50_ir_prog_info *info)
39 struct nv50_program *prog = (struct nv50_program *)info->driverPriv;
43 for (i = 0; i < info->numInputs; ++i) {
45 prog->in[i].sn = info->in[i].sn;
46 prog->in[i].si = info->in[i].si;
48 prog->in[i].mask = info->in[i].mask;
50 prog->vp.attrs[(4 * i) / 32] |= info->in[i].mask << ((4 * i) % 32);
53 if (info->in[i].mask & (1 << c))
54 info->in[i].slot[c] = n++;
56 prog->in_nr = info->numInputs;
58 for (i = 0; i < info->numSysVals; ++i) {
59 switch (info->sv[i].sn) {
83 if (info->io.vertexId < info->numSysVals)
84 info->sv[info->io.vertexId].slot[0] = n++;
85 if (info->io.instanceId < info->numSysVals)
86 info->sv[info->io.instanceId].slot[0] = n++;
89 for (i = 0; i < info->numOutputs; ++i) {
90 switch (info->out[i].sn) {
95 prog->vp.clpd[info->out[i].si] = n;
101 prog->vp.bfc[info->out[i].si] = i;
107 prog->out[i].sn = info->out[i].sn;
108 prog->out[i].si = info->out[i].si;
110 prog->out[i].mask = info->out[i].mask;
113 if (info->out[i].mask & (1 << c))
114 info->out[i].slot[c] = n++;
116 prog->out_nr = info->numOutputs;
119 if (prog->vp.psiz < info->numOutputs)
126 nv50_fragprog_assign_slots(struct nv50_ir_prog_info *info)
128 struct nv50_program *prog = (struct nv50_program *)info->driverPriv;
135 for (m = 0, i = 0; i < info->numInputs; ++i) {
136 switch (info->in[i].sn) {
141 m += info->in[i].flat ? 0 : 1;
145 /* careful: id may be != i in info->in[prog->in[i].id] */
150 for (n = 0, i = 0; i < info->numInputs; ++i) {
151 if (info->in[i].sn == TGSI_SEMANTIC_POSITION) {
152 prog->fp.interp |= info->in[i].mask << 24;
154 if (info->in[i].mask & (1 << c))
155 info->in[i].slot[c] = nintp++;
157 if (info->in[i].sn == TGSI_SEMANTIC_FACE) {
158 info->in[i].slot[0] = 255;
160 unsigned j = info->in[i].flat ? m++ : n++;
162 if (info->in[i].sn == TGSI_SEMANTIC_COLOR)
163 prog->vp.bfc[info->in[i].si] = j;
166 prog->in[j].mask = info->in[i].mask;
167 prog->in[j].sn = info->in[i].sn;
168 prog->in[j].si = info->in[i].si;
169 prog->in[j].linear = info->in[i].linear;
185 info->in[j].slot[c] = nintp++;
203 if (info->prop.fp.numColourResults > 1)
206 for (i = 0; i < info->numOutputs; ++i) {
208 prog->out[i].sn = info->out[i].sn;
209 prog->out[i].si = info->out[i].si;
210 prog->out[i].mask = info->out[i].mask;
212 if (i == info->io.fragDepth || i == info->io.sampleMask)
214 prog->out[i].hw = info->out[i].si * 4;
217 info->out[i].slot[c] = prog->out[i].hw + c;
222 if (info->io.sampleMask < PIPE_MAX_SHADER_OUTPUTS)
223 info->out[info->io.sampleMask].slot[0] = prog->max_out++;
225 if (info->io.fragDepth < PIPE_MAX_SHADER_OUTPUTS)
226 info->out[info->io.fragDepth].slot[2] = prog->max_out++;
235 nv50_program_assign_varying_slots(struct nv50_ir_prog_info *info)
237 switch (info->type) {
239 return nv50_vertprog_assign_slots(info);
241 return nv50_vertprog_assign_slots(info);
243 return nv50_fragprog_assign_slots(info);
250 nv50_program_create_strmout_state(const struct nv50_ir_prog_info *info,
296 so->map[base[b] + p + c] = info->out[r].slot[s + c];
305 struct nv50_ir_prog_info *info;
309 info = CALLOC_STRUCT(nv50_ir_prog_info);
310 if (!info)
313 info->type = prog->type;
314 info->target = chipset;
315 info->bin.sourceRep = NV50_PROGRAM_IR_TGSI;
316 info->bin.source = (void *)prog->pipe.tokens;
318 info->io.ucpBinding = 15;
319 info->io.ucpBase = 0;
320 info->io.genUserClip = prog->vp.clpd_nr;
322 info->assignSlots = nv50_program_assign_varying_slots;
332 info->driverPriv = prog;
335 info->optLevel = debug_get_num_option("NV50_PROG_OPTIMIZE", 3);
336 info->dbgFlags = debug_get_num_option("NV50_PROG_DEBUG", 0);
338 info->optLevel = 3;
341 ret = nv50_ir_generate_code(info);
346 if (info->bin.syms) /* we don't need them yet */
347 FREE(info->bin.syms);
349 prog->code = info->bin.code;
350 prog->code_size = info->bin.codeSize;
351 prog->fixups = info->bin.relocData;
352 prog->max_gpr = MAX2(4, (info->bin.maxGPR >> 1) + 1);
353 prog->tls_space = info->bin.tlsSpace;
356 if (info->prop.fp.writesDepth) {
360 if (info->prop.fp.usesDiscard)
365 prog->so = nv50_program_create_strmout_state(info,
369 FREE(info);