summaryrefslogtreecommitdiffstats
path: root/src/intel/vulkan/anv_pipeline_cache.c
diff options
context:
space:
mode:
authorJason Ekstrand <jason.ekstrand@intel.com>2016-08-24 17:14:11 -0700
committerJason Ekstrand <jason.ekstrand@intel.com>2016-08-24 20:42:05 -0700
commit2301705dee6324634520559b27ac6728ebb02191 (patch)
tree30832142f487a117e15b3c9f789ff119b5428bf3 /src/intel/vulkan/anv_pipeline_cache.c
parent05f36435ef117e48f457b44877d04dd6249b3bb7 (diff)
downloadexternal_mesa3d-2301705dee6324634520559b27ac6728ebb02191.zip
external_mesa3d-2301705dee6324634520559b27ac6728ebb02191.tar.gz
external_mesa3d-2301705dee6324634520559b27ac6728ebb02191.tar.bz2
anv: Include the pipeline layout in the shader hash
The pipeline layout affects shader compilation because it is what determines binding table locations as well as whether or not a particular buffer has dynamic offsets. Since this affects the generated shader, it needs to be in the hash. This fixes a bunch of CTS tests now that the CTS is using a pipeline cache. Signed-off-by: Jason Ekstrand <jason@jlekstrand.net> Reviewed-by: Kristian Høgsberg <krh@bitplanet.net> Cc: "12.0" <mesa-stable@lists.freedesktop.org>
Diffstat (limited to 'src/intel/vulkan/anv_pipeline_cache.c')
-rw-r--r--src/intel/vulkan/anv_pipeline_cache.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/intel/vulkan/anv_pipeline_cache.c b/src/intel/vulkan/anv_pipeline_cache.c
index 6af15d4..3f111a1 100644
--- a/src/intel/vulkan/anv_pipeline_cache.c
+++ b/src/intel/vulkan/anv_pipeline_cache.c
@@ -104,6 +104,7 @@ void
anv_hash_shader(unsigned char *hash, const void *key, size_t key_size,
struct anv_shader_module *module,
const char *entrypoint,
+ const struct anv_pipeline_layout *pipeline_layout,
const VkSpecializationInfo *spec_info)
{
struct mesa_sha1 *ctx;
@@ -112,6 +113,10 @@ anv_hash_shader(unsigned char *hash, const void *key, size_t key_size,
_mesa_sha1_update(ctx, key, key_size);
_mesa_sha1_update(ctx, module->sha1, sizeof(module->sha1));
_mesa_sha1_update(ctx, entrypoint, strlen(entrypoint));
+ if (pipeline_layout) {
+ _mesa_sha1_update(ctx, pipeline_layout->sha1,
+ sizeof(pipeline_layout->sha1));
+ }
/* hash in shader stage, pipeline layout? */
if (spec_info) {
_mesa_sha1_update(ctx, spec_info->pMapEntries,