summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnuj Phogat <[email protected]>2017-06-30 10:29:23 -0700
committerKenneth Graunke <[email protected]>2018-02-14 16:30:05 -0800
commit0cd37f9178d79ed62f1952939e1044cda5701a3a (patch)
treeabfa6da31c4f2fdb680688b3efbfac68dcb3b326
parent7be5f30bb1bbae7bba5ea52bd55c947ae131ca42 (diff)
isl: Don't use surface format R32_FLOAT for typed atomic integer operations
From Skylake PRM Surface Formats section: "The surface format for the typed atomic integer operations must be R32_UINT or R32_SINT." Fixes an error and a piglit GPU hang in simulation environment. Piglit test: gl45-imageAtomicExchange-float.shader_test Suggested-by: Francisco Jerez <[email protected]> Signed-off-by: Anuj Phogat <[email protected] Reviewed-by: Kenneth Graunke <[email protected]> Cc: "18.0 17.3" <[email protected]>
-rw-r--r--src/intel/isl/isl_storage_image.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/intel/isl/isl_storage_image.c b/src/intel/isl/isl_storage_image.c
index a8aebce6d49..20f6fd5faf6 100644
--- a/src/intel/isl/isl_storage_image.c
+++ b/src/intel/isl/isl_storage_image.c
@@ -88,9 +88,16 @@ isl_lower_storage_image_format(const struct gen_device_info *devinfo,
case ISL_FORMAT_R32G32B32A32_FLOAT:
case ISL_FORMAT_R32_UINT:
case ISL_FORMAT_R32_SINT:
- case ISL_FORMAT_R32_FLOAT:
return format;
+ /* The Skylake PRM's "Surface Formats" section says:
+ *
+ * "The surface format for the typed atomic integer operations must
+ * be R32_UINT or R32_SINT."
+ */
+ case ISL_FORMAT_R32_FLOAT:
+ return ISL_FORMAT_R32_UINT;
+
/* From HSW to BDW the only 64bpp format supported for typed access is
* RGBA_UINT16. IVB falls back to untyped.
*/