anv/cmd_buffer: Zero out binding tables and samplers in state_reset
authorJason Ekstrand <jason.ekstrand@intel.com>
Sat, 23 Jan 2016 06:57:02 +0000 (22:57 -0800)
committerJason Ekstrand <jason.ekstrand@intel.com>
Sat, 23 Jan 2016 06:57:05 +0000 (22:57 -0800)
This fixes a use of an undefined value if the client uses push constants in
a stage without ever setting any descriptors on GEN8-9.

src/vulkan/anv_cmd_buffer.c

index fe85e3e164e2b0595601a1f176803279bf47a9ea..d2cbf87578a744ef52827baddf988be6c2c382bb 100644 (file)
@@ -117,6 +117,11 @@ anv_cmd_state_reset(struct anv_cmd_buffer *cmd_buffer)
 
    memset(&state->descriptors, 0, sizeof(state->descriptors));
    memset(&state->push_constants, 0, sizeof(state->push_constants));
+   memset(state->binding_tables, 0, sizeof(state->binding_tables));
+   memset(state->samplers, 0, sizeof(state->samplers));
+
+   /* 0 isn't a valid config.  This ensures that we always configure L3$. */
+   cmd_buffer->state.current_l3_config = 0;
 
    state->dirty = ~0;
    state->vb_dirty = 0;
@@ -237,9 +242,6 @@ static VkResult anv_create_cmd_buffer(
    cmd_buffer->level = level;
    cmd_buffer->state.attachments = NULL;
 
-   /* 0 isn't a valid config.  This ensures that we always configure L3$. */
-   cmd_buffer->state.current_l3_config = 0;
-
    result = anv_cmd_buffer_init_batch_bo_chain(cmd_buffer);
    if (result != VK_SUCCESS)
       goto fail;