[Mesa-dev] [PATCH] i965/gen8/cs: fix constant push buffer
Lofstedt, Marta
marta.lofstedt at intel.com
Tue Dec 15 05:18:09 PST 2015
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:itoral at igalia.com]
> Sent: Tuesday, December 15, 2015 12:55 PM
> To: mesa-dev at 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
More information about the mesa-dev
mailing list