Module: Mesa
Branch: master
Commit: bc50ecfa7af9976ce7543aeecef9337d5c874083
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=bc50ecfa7af9976ce7543aeecef9337d5c874083

Author: Eric Anholt <[email protected]>
Date:   Wed Jun 26 16:47:10 2019 -0700

freedreno: Fix more constlen overflows.

Fixes constlen overflow in
dEQP-GLES31.functional.shaders.builtin_var.compute.num_work_groups and
dEQP-GLES31.functional.image_load_store.buffer.image_size.readonly_32
and probably others.

Reviewed-by: Rob Clark <[email protected]>

---

 src/gallium/drivers/freedreno/ir3/ir3_gallium.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/gallium/drivers/freedreno/ir3/ir3_gallium.c 
b/src/gallium/drivers/freedreno/ir3/ir3_gallium.c
index ad74c8b1b66..eb0e866dd54 100644
--- a/src/gallium/drivers/freedreno/ir3/ir3_gallium.c
+++ b/src/gallium/drivers/freedreno/ir3/ir3_gallium.c
@@ -333,10 +333,11 @@ emit_image_dims(struct fd_context *ctx, const struct 
ir3_shader_variant *v,
                                dims[off + 1] = ffs(dims[off + 0]) - 1;
                        }
                }
+               uint32_t size = MIN2(ARRAY_SIZE(dims), v->constlen * 4 - offset 
* 4);
 
                ring_wfi(ctx->batch, ring);
                ctx->emit_const(ring, v->type, offset * 4,
-                       0, ARRAY_SIZE(dims), dims, NULL);
+                       0, size, dims, NULL);
        }
 }
 
@@ -635,9 +636,11 @@ ir3_emit_cs_consts(const struct ir3_shader_variant *v, 
struct fd_ringbuffer *rin
                                [IR3_DP_LOCAL_GROUP_SIZE_Y] = info->block[1],
                                [IR3_DP_LOCAL_GROUP_SIZE_Z] = info->block[2],
                        };
+                       uint32_t size = MIN2(ARRAY_SIZE(compute_params),
+                                       v->constlen * 4 - offset * 4);
 
                        ctx->emit_const(ring, MESA_SHADER_COMPUTE, offset * 4, 
0,
-                                       ARRAY_SIZE(compute_params), 
compute_params, NULL);
+                                       size, compute_params, NULL);
                }
        }
 }

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to