st/mesa, iris: Add optional CPU-based ASTC void extent denorm flushing

Intel Gen9 GPUs have hardware ASTC support, but have a bug where they
don't handle denormalized values in void extent blocks correctly.  This
isn't that hard to work around - on upload, we can detect such blocks,
and flush any denorms to zero.  Because we're altering the data behind
the application's back, and applications can theoretically ask to
download the original unaltered image data, we unfortunately need to
maintain shadow copies of the data.

To make sure that we don't accidentally skip the void-extent flushing
via any fast-upload paths, and support download correctly, we plug this
into the st/mesa compressed texture format fallback paths, which store
a CPU copy of the original image data, and upload altered data.

This is unfortunately common code for what's likely to be a single
driver's issue (on a single generation), but it beats replicating an
entire framework we already have inside the driver.

Fixes dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr.*
using iris on Intel Gen9 GPUs.

Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/4167
Reviewed-by: Emma Anholt <emma@anholt.net>
Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Acked-by: Matt Turner <mattst88@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21943>
This commit is contained in:
Kenneth Graunke
2023-03-15 15:19:42 -07:00
committed by Marge Bot
parent f534c36ca5
commit b6878d456f
12 changed files with 90 additions and 61 deletions
-15
View File
@@ -1,18 +1,3 @@
# https://gitlab.freedesktop.org/mesa/mesa/-/issues/4167
dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr.10x10,Fail
dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr.10x5,Fail
dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr.10x6,Fail
dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr.10x8,Fail
dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr.12x10,Fail
dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr.12x12,Fail
dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr.4x4,Fail
dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr.5x4,Fail
dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr.6x5,Fail
dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr.6x6,Fail
dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr.8x5,Fail
dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr.8x6,Fail
dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr.8x8,Fail
# EGL_BAD_DISPLAY is generated if display is not an EGL display connection
# eglCreatePixmapSurface(0, 0x0000000000000000, 0x0000000000000000, { EGL_NONE });
# // 0x0000000000000000 returned
-15
View File
@@ -1,18 +1,3 @@
# https://gitlab.freedesktop.org/mesa/mesa/-/issues/4167
dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr.10x10,Fail
dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr.10x5,Fail
dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr.10x6,Fail
dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr.10x8,Fail
dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr.12x10,Fail
dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr.12x12,Fail
dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr.4x4,Fail
dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr.5x4,Fail
dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr.6x5,Fail
dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr.6x6,Fail
dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr.8x5,Fail
dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr.8x6,Fail
dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr.8x8,Fail
# New CTS failures in 1.3.5.0
KHR-GL46.polygon_offset_clamp.PolygonOffsetClampMinMax,Fail
KHR-GL46.polygon_offset_clamp.PolygonOffsetClampZeroInfinity,Fail
-15
View File
@@ -1,18 +1,3 @@
# https://gitlab.freedesktop.org/mesa/mesa/-/issues/4167
dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr.10x10,Fail
dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr.10x5,Fail
dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr.10x6,Fail
dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr.10x8,Fail
dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr.12x10,Fail
dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr.12x12,Fail
dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr.4x4,Fail
dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr.5x4,Fail
dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr.6x5,Fail
dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr.6x6,Fail
dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr.8x5,Fail
dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr.8x6,Fail
dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr.8x8,Fail
# X Error of failed request: BadMatch (invalid parameter attributes)
# Major opcode of failed request: 151 (GLX)
# Minor opcode of failed request: 11 (X_GLXSwapBuffers)
-15
View File
@@ -1,18 +1,3 @@
# https://gitlab.freedesktop.org/mesa/mesa/-/issues/4167
dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr.10x10,Fail
dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr.10x5,Fail
dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr.10x6,Fail
dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr.10x8,Fail
dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr.12x10,Fail
dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr.12x12,Fail
dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr.4x4,Fail
dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr.5x4,Fail
dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr.6x5,Fail
dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr.6x6,Fail
dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr.8x5,Fail
dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr.8x6,Fail
dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr.8x8,Fail
# New CTS failures in 1.3.5.0
KHR-GL46.polygon_offset_clamp.PolygonOffsetClampMinMax,Fail
KHR-GL46.polygon_offset_clamp.PolygonOffsetClampZeroInfinity,Fail