freedreno/a6xx: fix hangs with large shaders
authorRob Clark <robdclark@gmail.com>
Fri, 22 Feb 2019 20:01:17 +0000 (15:01 -0500)
committerRob Clark <robdclark@gmail.com>
Tue, 26 Feb 2019 18:19:44 +0000 (13:19 -0500)
We were overflowing instrlen (which is # of groups of 16 instructions)
in a couple dEQP tests, causing gpu hangs:

dEQP-GLES31.functional.ubo.random.all_per_block_buffers.13
dEQP-GLES31.functional.ubo.random.all_per_block_buffers.20

Signed-off-by: Rob Clark <robdclark@gmail.com>
src/gallium/drivers/freedreno/a6xx/fd6_program.c

index 3e7aed63897a98750d0ee973b0543cfbfa38e64d..93e2c58b1388f883cff57fc979aeb1ab52889ab9 100644 (file)
@@ -239,9 +239,9 @@ struct stage {
        const struct ir3_shader_variant *v;
        const struct ir3_info *i;
        /* const sizes are in units of vec4, aligned to 4*vec4 */
-       uint8_t constlen;
+       uint16_t constlen;
        /* instr sizes are in units of 16 instructions */
-       uint8_t instrlen;
+       uint16_t instrlen;
 };
 
 enum {