mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 09:38:07 +02:00
vc4: Take advantage of the 8888 pack function in pack_unorm_4x8.
One instruction instead of four, and it turns out you do this a lot for the Over operator. total uniforms in shared programs: 32168 -> 32087 (-0.25%) uniforms in affected programs: 318 -> 237 (-25.47%) total instructions in shared programs: 89830 -> 89472 (-0.40%) instructions in affected programs: 6434 -> 6076 (-5.56%)
This commit is contained in:
parent
f09ed63f43
commit
ae1d3322cc
1 changed files with 14 additions and 0 deletions
|
|
@ -738,6 +738,20 @@ ntq_emit_pack_unorm_4x8(struct vc4_compile *c, nir_alu_instr *instr)
|
|||
vec4 = nir_instr_as_alu(instr->src[0].src.ssa->parent_instr);
|
||||
}
|
||||
|
||||
/* If the pack is replicating the same channel 4 times, use the 8888
|
||||
* pack flag. This is common for blending using the alpha
|
||||
* channel.
|
||||
*/
|
||||
if (instr->src[0].swizzle[0] == instr->src[0].swizzle[1] &&
|
||||
instr->src[0].swizzle[0] == instr->src[0].swizzle[2] &&
|
||||
instr->src[0].swizzle[0] == instr->src[0].swizzle[3]) {
|
||||
struct qreg *dest = ntq_get_dest(c, &instr->dest.dest);
|
||||
*dest = qir_PACK_8888_F(c,
|
||||
ntq_get_src(c, instr->src[0].src,
|
||||
instr->src[0].swizzle[0]));
|
||||
return;
|
||||
}
|
||||
|
||||
for (int i = 0; i < 4; i++) {
|
||||
int swiz = instr->src[0].swizzle[i];
|
||||
struct qreg src;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue