anv: fix crash when application does not provide push constants
authorLionel Landwerlin <lionel.g.landwerlin@intel.com>
Thu, 2 May 2019 14:08:42 +0000 (15:08 +0100)
committerLionel Landwerlin <lionel.g.landwerlin@intel.com>
Fri, 3 May 2019 09:21:40 +0000 (10:21 +0100)
Found while running Talos Principle.

As far as I can tell running a draw call with a pipeline having push
constants without the application having called vkCmdPushConstants
gives undefined push constant values.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Cc: mesa-stable@lists.freedesktop.org
src/intel/vulkan/anv_cmd_buffer.c

index 981c071..348764c 100644 (file)
@@ -797,7 +797,7 @@ anv_cmd_buffer_push_constants(struct anv_cmd_buffer *cmd_buffer,
       pipeline->shaders[stage]->prog_data;
 
    /* If we don't actually have any push constants, bail. */
-   if (prog_data == NULL || prog_data->nr_params == 0)
+   if (prog_data == NULL || prog_data->nr_params == 0 || data == NULL)
       return (struct anv_state) { .offset = 0 };
 
    struct anv_state state =