From: Anuj Phogat Date: Fri, 30 Jun 2017 17:29:23 +0000 (-0700) Subject: isl: Don't use surface format R32_FLOAT for typed atomic integer operations X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=0cd37f9178d79ed62f1952939e1044cda5701a3a;p=mesa.git 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" --- 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. */