Fix push_constants host memory leak

https://bugs.freedesktop.org/show_bug.cgi?id=100452

Change-Id: I6fc921f9ddbd1c9f374f15f01b986ee923706e83
diff --git a/src/intel/vulkan/anv_cmd_buffer.c b/src/intel/vulkan/anv_cmd_buffer.c
index 44ae67d..8cbeaa9 100644
--- a/src/intel/vulkan/anv_cmd_buffer.c
+++ b/src/intel/vulkan/anv_cmd_buffer.c
@@ -118,7 +118,12 @@
    struct anv_cmd_state *state = &cmd_buffer->state;
 
    memset(&state->descriptors, 0, sizeof(state->descriptors));
-   memset(&state->push_constants, 0, sizeof(state->push_constants));
+   for (uint32_t i = 0; i < MESA_SHADER_STAGES; i++) {
+      if (state->push_constants[i] != NULL) {
+         vk_free(&cmd_buffer->pool->alloc, state->push_constants[i]);
+         state->push_constants[i] = NULL;
+      }
+   }
    memset(state->binding_tables, 0, sizeof(state->binding_tables));
    memset(state->samplers, 0, sizeof(state->samplers));
 
@@ -236,6 +241,9 @@
    if (cmd_buffer == NULL)
       return vk_error(VK_ERROR_OUT_OF_HOST_MEMORY);
 
+   for (uint32_t i = 0; i < MESA_SHADER_STAGES; i++) {
+      cmd_buffer->state.push_constants[i] = NULL;
+   }
    cmd_buffer->_loader_data.loaderMagic = ICD_LOADER_MAGIC;
    cmd_buffer->device = device;
    cmd_buffer->pool = pool;