anv: ensure prog params are initialized with 0s
authorLionel Landwerlin <lionel.g.landwerlin@intel.com>
Wed, 22 Jan 2020 13:49:25 +0000 (15:49 +0200)
committerLionel Landwerlin <lionel.g.landwerlin@intel.com>
Wed, 22 Jan 2020 14:47:55 +0000 (16:47 +0200)
As a result of 9baa33cef01f our backend compiler leaves params pretty
much untouched. So in order to avoid storing uninitialized values in
the shader cache blobs, just 0 out this array.

I've considered not even allocating this array which works on gen8+
but the vec4 backend still makes a copy of this array and so it
crashes on memcpy on HSW.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Fixes: 9baa33cef01f ("anv: Rework push constant handling")
Reported-by: Tapani Pälli <tapani.palli@intel.com>
Acked-by: Jason Ekstrand <jason@jlekstrand.net>
Acked-by: Tapani Pälli <tapani.palli@intel.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3516>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3516>

src/intel/vulkan/anv_nir_compute_push_layout.c

index 3a6e393672de2370d565ecbe1a087c6a5b985844..1dbfb08a100dd794914e4d39f9e7a8cc8ea4ff44 100644 (file)
@@ -106,7 +106,7 @@ anv_nir_compute_push_layout(const struct anv_physical_device *pdevice,
       pdevice->compiler->scalar_stage[nir->info.stage] ? 4 : 16;
    nir->num_uniforms = ALIGN(push_end - push_start, align);
    prog_data->nr_params = nir->num_uniforms / 4;
-   prog_data->param = ralloc_array(mem_ctx, uint32_t, prog_data->nr_params);
+   prog_data->param = rzalloc_array(mem_ctx, uint32_t, prog_data->nr_params);
 
    struct anv_push_range push_constant_range = {
       .set = ANV_DESCRIPTOR_SET_PUSH_CONSTANTS,