Thanks Iago! This patch does not only fix the ssbo test mentioned below, but a lot of other GLES 3.1 CTS tests.
> -----Original Message----- > From: Iago Toral Quiroga [mailto:ito...@igalia.com] > Sent: Tuesday, December 15, 2015 12:55 PM > To: mesa-dev@lists.freedesktop.org > Cc: Lofstedt, Marta; Justen, Jordan L; Palli, Tapani; Iago Toral Quiroga > Subject: [PATCH] i965/gen8/cs: fix constant push buffer > > Page 502 of the Command Reference Broadwell PRM says that CURBE Total > Data Length must be 64-bit aligned. > > Fixes the following CTS tests: > ES31-CTS.shader_storage_buffer_object.basic-atomic-case1-cs > ES31-CTS.shader_storage_buffer_object.basic-operations-case1-cs > ES31-CTS.shader_storage_buffer_object.basic-operations-case2-cs > ES31-CTS.shader_storage_buffer_object.basic-stdLayout_UBO_SSBO-case2- > cs > ES31-CTS.shader_storage_buffer_object.advanced-write-fragment-cs > ES31-CTS.shader_storage_buffer_object.advanced-indirectAddressing- > case2-cs > ES31-CTS.shader_storage_buffer_object.advanced-matrix-cs > --- > src/mesa/drivers/dri/i965/gen7_cs_state.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/src/mesa/drivers/dri/i965/gen7_cs_state.c > b/src/mesa/drivers/dri/i965/gen7_cs_state.c > index 1fde69c..dbd1967 100644 > --- a/src/mesa/drivers/dri/i965/gen7_cs_state.c > +++ b/src/mesa/drivers/dri/i965/gen7_cs_state.c > @@ -77,7 +77,8 @@ brw_upload_cs_state(struct brw_context *brw) > > unsigned push_constant_data_size = > (prog_data->nr_params + local_id_dwords) * sizeof(gl_constant_value); > - unsigned reg_aligned_constant_size = ALIGN(push_constant_data_size, > 32); > + unsigned reg_aligned_constant_size = > + ALIGN(push_constant_data_size, brw->gen < 8 ? 32 : 64); > unsigned push_constant_regs = reg_aligned_constant_size / 32; > unsigned threads = get_cs_thread_count(cs_prog_data); > > @@ -241,7 +242,8 @@ brw_upload_cs_push_constants(struct brw_context > *brw, > > const unsigned push_constant_data_size = > (local_id_dwords + prog_data->nr_params) * > sizeof(gl_constant_value); > - const unsigned reg_aligned_constant_size = > ALIGN(push_constant_data_size, 32); > + const unsigned reg_aligned_constant_size = > + ALIGN(push_constant_data_size, brw->gen < 8 ? 32 : 64); > const unsigned param_aligned_count = > reg_aligned_constant_size / sizeof(*param); > > -- > 1.9.1 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev