{"id":2774,"date":"2021-09-29T09:22:38","date_gmt":"2021-09-29T15:22:38","guid":{"rendered":"https:\/\/www.lunarg.com\/?p=2774"},"modified":"2025-01-15T17:52:36","modified_gmt":"2025-01-16T00:52:36","slug":"vulkan-productivity-feature-shader-validation-caching","status":"publish","type":"post","link":"https:\/\/www.lunarg.com\/vulkan-productivity-feature-shader-validation-caching\/","title":{"rendered":"Vulkan Productivity Feature: Shader Validation Caching"},"content":{"rendered":"<p>Shader validation caching is a feature recently added to the Vulkan Validation Layers. It is useful because it avoids the delays involved in re-validating shaders that have already been previously validated.<\/p>\n<p><!--more-->Shader validation caching works by keeping a file with a hash of all shaders that have been validated by the current version of the spirv-tools shader validation code. When a Vulkan application runs with validation at CreateShaderModule time, if the hash of the shader about to be validated is in the shader validation cache file, the validation layer skips validating that shader. If the hash of the shader is not in the cache, the shader is validated, and if no problems are found, the hash of the shader is added to the cache and written to the cache file at the end of execution.<\/p>\n<p>Shader validation caching is enabled by default. It can be disabled by setting VK_VALIDATION_FEATURE_DISABLE_SHADER_VALIDATION_CACHE_EXT programmatically, or in a vk_layer_settiings.txt file. <strong><a href=\"https:\/\/vulkan.lunarg.com\/doc\/sdk\/1.2.189.2\/windows\/vkconfig.html\">The Vulkan Configurator<\/a> (VkConfig) can also be used to disable it.<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Shader validation caching is a feature recently added to the Vulkan Validation Layers. It is useful because it avoids the delays involved in re-validating shaders that have already been previously validated.<\/p>\n","protected":false},"author":14,"featured_media":2011,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_relevanssi_hide_post":"","_relevanssi_hide_content":"","_relevanssi_pin_for_all":"","_relevanssi_pin_keywords":"","_relevanssi_unpin_keywords":"","_relevanssi_related_keywords":"","_relevanssi_related_include_ids":"","_relevanssi_related_exclude_ids":"","_relevanssi_related_no_append":"","_relevanssi_related_not_related":"","_relevanssi_related_posts":"","_relevanssi_noindex_reason":"","footnotes":"","_links_to":"","_links_to_target":""},"categories":[130],"tags":[],"class_list":["post-2774","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Vulkan Productivity Feature: Shader Validation Caching - LunarG<\/title>\n<meta name=\"description\" content=\"Shader validation caching is a feature recently added to the Vulkan Validation Layers. It is useful because it avoids the delays involved in re-validating shaders that have already been previously validated.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.lunarg.com\/vulkan-productivity-feature-shader-validation-caching\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Vulkan Productivity Feature: Shader Validation Caching - LunarG\" \/>\n<meta property=\"og:description\" content=\"Shader validation caching is a feature recently added to the Vulkan Validation Layers. It is useful because it avoids the delays involved in re-validating shaders that have already been previously validated.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lunarg.com\/vulkan-productivity-feature-shader-validation-caching\/\" \/>\n<meta property=\"og:site_name\" content=\"LunarG\" \/>\n<meta property=\"article:published_time\" content=\"2021-09-29T15:22:38+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-01-16T00:52:36+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lunarg.com\/wp-content\/uploads\/2020\/05\/Vulkan-logo.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"600\" \/>\n\t<meta property=\"og:image:height\" content=\"400\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Dave Desormeaux\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Dave Desormeaux\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.lunarg.com\/vulkan-productivity-feature-shader-validation-caching\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.lunarg.com\/vulkan-productivity-feature-shader-validation-caching\/\"},\"author\":{\"name\":\"Dave Desormeaux\",\"@id\":\"https:\/\/www.lunarg.com\/#\/schema\/person\/493f4ece901c822208cfda3feb80420a\"},\"headline\":\"Vulkan Productivity Feature: Shader Validation Caching\",\"datePublished\":\"2021-09-29T15:22:38+00:00\",\"dateModified\":\"2025-01-16T00:52:36+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.lunarg.com\/vulkan-productivity-feature-shader-validation-caching\/\"},\"wordCount\":182,\"publisher\":{\"@id\":\"https:\/\/www.lunarg.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.lunarg.com\/vulkan-productivity-feature-shader-validation-caching\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.lunarg.com\/wp-content\/uploads\/2020\/05\/Vulkan-logo.jpg\",\"articleSection\":[\"Blog\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.lunarg.com\/vulkan-productivity-feature-shader-validation-caching\/\",\"url\":\"https:\/\/www.lunarg.com\/vulkan-productivity-feature-shader-validation-caching\/\",\"name\":\"Vulkan Productivity Feature: Shader Validation Caching - LunarG\",\"isPartOf\":{\"@id\":\"https:\/\/www.lunarg.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.lunarg.com\/vulkan-productivity-feature-shader-validation-caching\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.lunarg.com\/vulkan-productivity-feature-shader-validation-caching\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.lunarg.com\/wp-content\/uploads\/2020\/05\/Vulkan-logo.jpg\",\"datePublished\":\"2021-09-29T15:22:38+00:00\",\"dateModified\":\"2025-01-16T00:52:36+00:00\",\"description\":\"Shader validation caching is a feature recently added to the Vulkan Validation Layers. It is useful because it avoids the delays involved in re-validating shaders that have already been previously validated.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.lunarg.com\/vulkan-productivity-feature-shader-validation-caching\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.lunarg.com\/vulkan-productivity-feature-shader-validation-caching\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.lunarg.com\/vulkan-productivity-feature-shader-validation-caching\/#primaryimage\",\"url\":\"https:\/\/www.lunarg.com\/wp-content\/uploads\/2020\/05\/Vulkan-logo.jpg\",\"contentUrl\":\"https:\/\/www.lunarg.com\/wp-content\/uploads\/2020\/05\/Vulkan-logo.jpg\",\"width\":600,\"height\":400},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.lunarg.com\/vulkan-productivity-feature-shader-validation-caching\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.lunarg.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Vulkan Productivity Feature: Shader Validation Caching\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.lunarg.com\/#website\",\"url\":\"https:\/\/www.lunarg.com\/\",\"name\":\"LunarG\",\"description\":\"3D Graphics Software Solutions\",\"publisher\":{\"@id\":\"https:\/\/www.lunarg.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.lunarg.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.lunarg.com\/#organization\",\"name\":\"LunarG\",\"url\":\"https:\/\/www.lunarg.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.lunarg.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.lunarg.com\/wp-content\/uploads\/2020\/05\/logo.png\",\"contentUrl\":\"https:\/\/www.lunarg.com\/wp-content\/uploads\/2020\/05\/logo.png\",\"width\":767,\"height\":304,\"caption\":\"LunarG\"},\"image\":{\"@id\":\"https:\/\/www.lunarg.com\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.lunarg.com\/#\/schema\/person\/493f4ece901c822208cfda3feb80420a\",\"name\":\"Dave Desormeaux\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.lunarg.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/89944424b10c09db4e6c6e62b6ef1722?s=96&d=retro&r=pg\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/89944424b10c09db4e6c6e62b6ef1722?s=96&d=retro&r=pg\",\"caption\":\"Dave Desormeaux\"},\"sameAs\":[\"http:\/\/www.lunarg.com\"],\"url\":\"https:\/\/www.lunarg.com\/author\/dave-d\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Vulkan Productivity Feature: Shader Validation Caching - LunarG","description":"Shader validation caching is a feature recently added to the Vulkan Validation Layers. It is useful because it avoids the delays involved in re-validating shaders that have already been previously validated.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.lunarg.com\/vulkan-productivity-feature-shader-validation-caching\/","og_locale":"en_US","og_type":"article","og_title":"Vulkan Productivity Feature: Shader Validation Caching - LunarG","og_description":"Shader validation caching is a feature recently added to the Vulkan Validation Layers. It is useful because it avoids the delays involved in re-validating shaders that have already been previously validated.","og_url":"https:\/\/www.lunarg.com\/vulkan-productivity-feature-shader-validation-caching\/","og_site_name":"LunarG","article_published_time":"2021-09-29T15:22:38+00:00","article_modified_time":"2025-01-16T00:52:36+00:00","og_image":[{"width":600,"height":400,"url":"https:\/\/www.lunarg.com\/wp-content\/uploads\/2020\/05\/Vulkan-logo.jpg","type":"image\/jpeg"}],"author":"Dave Desormeaux","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Dave Desormeaux","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lunarg.com\/vulkan-productivity-feature-shader-validation-caching\/#article","isPartOf":{"@id":"https:\/\/www.lunarg.com\/vulkan-productivity-feature-shader-validation-caching\/"},"author":{"name":"Dave Desormeaux","@id":"https:\/\/www.lunarg.com\/#\/schema\/person\/493f4ece901c822208cfda3feb80420a"},"headline":"Vulkan Productivity Feature: Shader Validation Caching","datePublished":"2021-09-29T15:22:38+00:00","dateModified":"2025-01-16T00:52:36+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lunarg.com\/vulkan-productivity-feature-shader-validation-caching\/"},"wordCount":182,"publisher":{"@id":"https:\/\/www.lunarg.com\/#organization"},"image":{"@id":"https:\/\/www.lunarg.com\/vulkan-productivity-feature-shader-validation-caching\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lunarg.com\/wp-content\/uploads\/2020\/05\/Vulkan-logo.jpg","articleSection":["Blog"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.lunarg.com\/vulkan-productivity-feature-shader-validation-caching\/","url":"https:\/\/www.lunarg.com\/vulkan-productivity-feature-shader-validation-caching\/","name":"Vulkan Productivity Feature: Shader Validation Caching - LunarG","isPartOf":{"@id":"https:\/\/www.lunarg.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lunarg.com\/vulkan-productivity-feature-shader-validation-caching\/#primaryimage"},"image":{"@id":"https:\/\/www.lunarg.com\/vulkan-productivity-feature-shader-validation-caching\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lunarg.com\/wp-content\/uploads\/2020\/05\/Vulkan-logo.jpg","datePublished":"2021-09-29T15:22:38+00:00","dateModified":"2025-01-16T00:52:36+00:00","description":"Shader validation caching is a feature recently added to the Vulkan Validation Layers. It is useful because it avoids the delays involved in re-validating shaders that have already been previously validated.","breadcrumb":{"@id":"https:\/\/www.lunarg.com\/vulkan-productivity-feature-shader-validation-caching\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lunarg.com\/vulkan-productivity-feature-shader-validation-caching\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lunarg.com\/vulkan-productivity-feature-shader-validation-caching\/#primaryimage","url":"https:\/\/www.lunarg.com\/wp-content\/uploads\/2020\/05\/Vulkan-logo.jpg","contentUrl":"https:\/\/www.lunarg.com\/wp-content\/uploads\/2020\/05\/Vulkan-logo.jpg","width":600,"height":400},{"@type":"BreadcrumbList","@id":"https:\/\/www.lunarg.com\/vulkan-productivity-feature-shader-validation-caching\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lunarg.com\/"},{"@type":"ListItem","position":2,"name":"Vulkan Productivity Feature: Shader Validation Caching"}]},{"@type":"WebSite","@id":"https:\/\/www.lunarg.com\/#website","url":"https:\/\/www.lunarg.com\/","name":"LunarG","description":"3D Graphics Software Solutions","publisher":{"@id":"https:\/\/www.lunarg.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.lunarg.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.lunarg.com\/#organization","name":"LunarG","url":"https:\/\/www.lunarg.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lunarg.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.lunarg.com\/wp-content\/uploads\/2020\/05\/logo.png","contentUrl":"https:\/\/www.lunarg.com\/wp-content\/uploads\/2020\/05\/logo.png","width":767,"height":304,"caption":"LunarG"},"image":{"@id":"https:\/\/www.lunarg.com\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.lunarg.com\/#\/schema\/person\/493f4ece901c822208cfda3feb80420a","name":"Dave Desormeaux","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lunarg.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/89944424b10c09db4e6c6e62b6ef1722?s=96&d=retro&r=pg","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/89944424b10c09db4e6c6e62b6ef1722?s=96&d=retro&r=pg","caption":"Dave Desormeaux"},"sameAs":["http:\/\/www.lunarg.com"],"url":"https:\/\/www.lunarg.com\/author\/dave-d\/"}]}},"_links":{"self":[{"href":"https:\/\/www.lunarg.com\/wp-json\/wp\/v2\/posts\/2774","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lunarg.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lunarg.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lunarg.com\/wp-json\/wp\/v2\/users\/14"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lunarg.com\/wp-json\/wp\/v2\/comments?post=2774"}],"version-history":[{"count":0,"href":"https:\/\/www.lunarg.com\/wp-json\/wp\/v2\/posts\/2774\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lunarg.com\/wp-json\/wp\/v2\/media\/2011"}],"wp:attachment":[{"href":"https:\/\/www.lunarg.com\/wp-json\/wp\/v2\/media?parent=2774"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lunarg.com\/wp-json\/wp\/v2\/categories?post=2774"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lunarg.com\/wp-json\/wp\/v2\/tags?post=2774"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}