From 2aa48bb5a8dbf3cc6584011ee2b869c586402d34 Mon Sep 17 00:00:00 2001 From: Icecream95 Date: Sun, 20 Sep 2020 15:30:45 +1200 Subject: [PATCH] panfrost: Clamp uniform buffer size Issue (57) for the ARB_uniform_buffer_object spec states: "The uniform buffer could be larger than the amount of uniform block(s) data inside it." This means we need to clamp the uniform buffer size in case it is bigger than what hardware supports. Fixes the OpenGL 3.3 renderer of GZDoom. Reviewed-by: Alyssa Rosenzweig Part-of: --- src/gallium/drivers/panfrost/pan_cmdstream.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/gallium/drivers/panfrost/pan_cmdstream.c b/src/gallium/drivers/panfrost/pan_cmdstream.c index b15e6b8..45ce989 100644 --- a/src/gallium/drivers/panfrost/pan_cmdstream.c +++ b/src/gallium/drivers/panfrost/pan_cmdstream.c @@ -905,8 +905,12 @@ panfrost_emit_const_buf(struct panfrost_batch *batch, continue; } + /* Issue (57) for the ARB_uniform_buffer_object spec says that + * the buffer can be larger than the uniform data inside it, + * so clamp ubo size to what hardware supports. */ + pan_pack(ubo_ptr + ubo, UNIFORM_BUFFER, cfg) { - cfg.entries = DIV_ROUND_UP(usz, 16); + cfg.entries = MIN2(DIV_ROUND_UP(usz, 16), 1 << 12); cfg.pointer = panfrost_map_constant_buffer_gpu(batch, stage, buf, ubo); } -- 2.7.4