From 0cd37f9178d79ed62f1952939e1044cda5701a3a Mon Sep 17 00:00:00 2001 From: Anuj Phogat Date: Fri, 30 Jun 2017 10:29:23 -0700 Subject: [PATCH] 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 Signed-off-by: Anuj Phogat Cc: "18.0 17.3" --- src/intel/isl/isl_storage_image.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/intel/isl/isl_storage_image.c b/src/intel/isl/isl_storage_image.c index a8aebce..20f6fd5 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. */ -- 2.7.4