summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeha Bhende <[email protected]>2017-07-20 17:03:19 -0700
committerBrian Paul <[email protected]>2017-07-22 13:18:56 -0600
commit1820ef64c9914d8328d0306003f00063dfb2bca1 (patch)
tree6cbeb4c34e6f9cae56eb0314bfdfffadf9c8f62a
parent83ca6b9d31005a11380f9dbd1b5531294f5c3e92 (diff)
svga: Limit number of immediates in shader
imm {128.0, -128.0, 2.0, 3.0} is used for lit instruction which is not used very frequently. So allocate it only if lit instruction is used. Tested with mtt piglit and mtt glretrace v2: As per Charmaine's comment Reviewed-by: Brian Paul <[email protected]> Reviewed-by: Charmaine Lee <[email protected]>
-rw-r--r--src/gallium/drivers/svga/svga_tgsi_vgpu10.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/gallium/drivers/svga/svga_tgsi_vgpu10.c b/src/gallium/drivers/svga/svga_tgsi_vgpu10.c
index 71dafe75d18..d9b76c265ab 100644
--- a/src/gallium/drivers/svga/svga_tgsi_vgpu10.c
+++ b/src/gallium/drivers/svga/svga_tgsi_vgpu10.c
@@ -6275,15 +6275,17 @@ alloc_common_immediates(struct svga_shader_emitter_v10 *emit)
emit->common_immediate_pos[n++] =
alloc_immediate_float4(emit, 0.0f, 1.0f, 0.5f, -1.0f);
- emit->common_immediate_pos[n++] =
- alloc_immediate_float4(emit, 128.0f, -128.0f, 2.0f, 3.0f);
+ if (emit->info.opcode_count[TGSI_OPCODE_LIT] > 0) {
+ emit->common_immediate_pos[n++] =
+ alloc_immediate_float4(emit, 128.0f, -128.0f, 0.0f, 0.0f);
+ }
emit->common_immediate_pos[n++] =
alloc_immediate_int4(emit, 0, 1, 0, -1);
if (emit->key.vs.attrib_puint_to_snorm) {
emit->common_immediate_pos[n++] =
- alloc_immediate_float4(emit, -2.0f, -2.0f, -2.0f, -1.66666f);
+ alloc_immediate_float4(emit, -2.0f, 2.0f, 3.0f, -1.66666f);
}
if (emit->key.vs.attrib_puint_to_uscaled) {