search for: direct2dest_op

Displaying 3 results from an estimated 3 matches for "direct2dest_op".

2009 Sep 10
0
[PATCH 02/13] nv50: add functions for swizzle resolution
...v50/nv50_program.c @@ -1322,30 +1322,69 @@ tgsi_src(struct nv50_pc *pc, int chan, const struct tgsi_full_src_register *src, return r; } -/* returns TRUE if instruction can overwrite sources before they're read */ +/* return TRUE for ops that produce only a single result */ static boolean -direct2dest_op(const struct tgsi_full_instruction *insn) +is_scalar_op(unsigned op) { - if (insn->Instruction.Saturate) - return FALSE; - - switch (insn->Instruction.Opcode) { - case TGSI_OPCODE_COS: + switch (op) { + case TGSI_OPCODE_DP2: case TGSI_OPCODE_DP3: case TGSI_OPCODE_DP4: case TGSI_OPCODE...
2009 Jun 21
0
[PATCH] nv50: better insn generation
...ex; @@ -1327,10 +1334,15 @@ nv50_program_tx_insn(struct nv50_pc *pc, const union tgsi_full_token *tok) if (sat) { for (c = 0; c < 4; c++) { rdst[c] = dst[c]; - dst[c] = temp_temp(pc); + if (dst[c] && dst[c]->type != P_TEMP) + dst[c] = temp_temp(pc); } - } else - if (direct2dest_op(inst)) { + } + + if (direct2dest_op(inst) && (*pp_rtmp)) { + /* We really don't lose the real dst as we do not + * get here if sat overwrites dst with temp. + */ for (c = 0; c < 4; c++) { if (!dst[c] || dst[c]->type != P_TEMP) continue; @@ -1341,7 +1353,7 @@ nv50_...
2009 May 06
2
nv50: shader generation patches
Hi ! I've been trying to improve NV50 shader generation a bit the last couple of weeks, so here is what I've produced. I don't know if it's usable for you or just a pile of horrible hacks, but at least it makes some mesa demos render more correcly, p.e. the teapot (aside from mip-mapping issues of the floor texture), arbfplight, and I think the gears also didn't appear as they