Mesa (master): radv: don't crash if cache is disabled.

Samuel Pitoiset hakzsam at kemper.freedesktop.org
Thu Oct 12 12:15:29 UTC 2017


Module: Mesa
Branch: master
Commit: 6049fa454e4752a527cb8e13779082b27adcfb97
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=6049fa454e4752a527cb8e13779082b27adcfb97

Author: Dave Airlie <airlied at redhat.com>
Date:   Thu Oct 12 14:24:41 2017 +1000

radv: don't crash if cache is disabled.

If you set MESA_GLSL_CACHE_DISABLE, radv crashed.

Fixes: fd24be134f (radv: make use of on-disk cache)
Signed-off-by: Dave Airlie <airlied at redhat.com>
Reviewed-by: Timothy Arceri <tarceri at itsqueeze.com>

---

 src/amd/vulkan/radv_pipeline_cache.c | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/src/amd/vulkan/radv_pipeline_cache.c b/src/amd/vulkan/radv_pipeline_cache.c
index 51fa3f1b31..fabff9ed81 100644
--- a/src/amd/vulkan/radv_pipeline_cache.c
+++ b/src/amd/vulkan/radv_pipeline_cache.c
@@ -167,6 +167,8 @@ radv_create_shader_variant_from_pipeline_cache(struct radv_device *device,
 		entry = radv_pipeline_cache_search(device->mem_cache, sha1);
 
 	if (!entry) {
+		if (!device->physical_device->disk_cache)
+			return NULL;
 		uint8_t disk_sha1[20];
 		disk_cache_compute_key(device->physical_device->disk_cache,
 				       sha1, 20, disk_sha1);
@@ -317,11 +319,13 @@ radv_pipeline_cache_insert_shader(struct radv_device *device,
 	 * compiled shaders by third parties such as steam, even if the app
 	 * implements its own pipeline cache.
 	 */
-	uint8_t disk_sha1[20];
-	disk_cache_compute_key(device->physical_device->disk_cache, sha1, 20,
-			       disk_sha1);
-	disk_cache_put(device->physical_device->disk_cache,
-		       disk_sha1, entry, entry_size(entry), NULL);
+	if (device->physical_device->disk_cache) {
+		uint8_t disk_sha1[20];
+		disk_cache_compute_key(device->physical_device->disk_cache, sha1, 20,
+				       disk_sha1);
+		disk_cache_put(device->physical_device->disk_cache,
+			       disk_sha1, entry, entry_size(entry), NULL);
+	}
 
 	entry->variant = variant;
 	p_atomic_inc(&variant->ref_count);




More information about the mesa-commit mailing list