mesa/src/gallium/auxiliary
Kenneth Graunke b6878d456f 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>
2023-03-17 21:30:48 +00:00
..
cso_cache cso: fix a regression from draw_vbo rework 2022-12-13 18:41:26 +00:00
draw fix: gallivm: limit usage of LLVMContextSetOpaquePointers() to LLVM 15 2023-02-06 19:50:35 +00:00
driver_ddebug tree-wide: Convert all usage of #ifdef PIPE_(OS|ARCH|CC)_* to #if DETECT_(OS|ARCH|CC)_* by use grep 2022-11-15 20:35:55 +00:00
driver_noop gallium: fixup some inconsistent uses of enum pipe_shader_type. 2022-08-04 08:17:39 +00:00
driver_trace aux/trace: delete GALLIUM_TRACE_NIR log message 2023-03-15 20:43:52 +00:00
gallivm fix: gallivm: fix LLVM #include of Host.h, moved to TargetParser 2023-03-12 14:02:23 +00:00
hud hud: add GALLIUM_HUD_OPACITY envvar 2023-03-06 16:50:27 +00:00
indices util/prim_convert: Don't set index_bounds_valid 2023-03-14 23:10:00 +00:00
nir ntt: add option to lower SSBO bindings to buffer index 2023-03-16 09:30:00 +00:00
os util/u_process: remove util_get_process_name_may_override() 2023-01-31 22:02:58 +00:00
pipe-loader driconf: Add ignore_discard_framebuffer option 2023-03-16 00:56:37 +00:00
pipebuffer gallium: Replace the usage of __FUNCTION__ with __func__ in all gallium code 2022-11-22 06:53:47 +00:00
postprocess postprocess: move the definition of pp_filters into **/pp_init.c 2023-01-03 14:45:28 +00:00
renderonly kmsro: Fix renderonly_scanout BO aliasing 2022-12-25 19:23:27 +09:00
rtasm tree-wide: Fixes multi-line macro width after replace to __func__ 2022-11-22 06:53:47 +00:00
target-helpers freedreno: Add driconf to disable conservative LRZ 2023-01-20 16:18:03 +00:00
tessellator gallium: use c++11 alignas instead of PIPE_ALIGN_VAR 2022-06-14 15:08:38 +00:00
tgsi gallium: Replace the usage of __FUNCTION__ with __func__ in all gallium code 2022-11-22 06:53:47 +00:00
translate util: Rename PIPE_CDECL to UTIL_CDECL and moved into util/macros.h 2022-11-24 06:21:39 +00:00
util st/mesa, iris: Add optional CPU-based ASTC void extent denorm flushing 2023-03-17 21:30:48 +00:00
vl vl/dri3: avoid deadlocking when polling deleted windows for events 2023-02-16 15:55:47 +00:00
meson.build meson: inline gtest_test_protocol now that it's always 'gtest' 2023-03-10 07:20:29 +00:00