Repository navigation
fix(shader): decode forced degamma on biased RGBA8_UINT samples - #5472
Merged
adriadam10 merged 1 commit intoOct 14, 2026
Merged
Conversation
This was referenced Oct 13, 2026
eljackjoestar-cmd
force-pushed
the
codex/rgba8-uint-force-degamma
branch
from
October 14, 2026 01:29
c25423a to
e2101fc
Compare
11 tasks done
11 tasks done
11 tasks done
10 tasks done
RINNECODER
added a commit
to RINNECODER/AnyPS5
that referenced
this pull request
Oct 14, 2026
* Metal semantics: run upstream image execution tests through the Metal driver The existing semantics shim binds only guest buffers. A second shim (tests/metal_semantics/driver_shim) runs the upstream execution tests that bind images, samplers and color targets through the native Metal driver: dispatches bind their descriptors with MetalShaderResources and draws go through MetalDraw::DrawSynchronously, as in a title. The tests' host arrays are the guest memory; the device borrows every range the shader's buffer and image descriptors and the color targets name. ImagePlaneAddressOnLine and ImageVolumeAddressOnPlane (already on main) now run on Metal and pass. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DgW4n3qYgi5jAAohEmXRQj * fix(shader): capture image descriptors read from constant buffers at uniform offsets Removes the tracker check that refused a T# whose dwords come from a ReadConstBuffer, so a T# loaded with s_buffer_load from a table record that user data selects is captured like any other runtime descriptor. Metal: tests/metal_semantics/ImageTableRecord.cpp runs the upstream program through the Metal driver (MetalShaderResources image binding) and checks that the record user data selects is the texture sampled. It fails on main with the removed "is not a valid runtime value" error. Ported from upstream PR boykopovar#5188 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DgW4n3qYgi5jAAohEmXRQj * fix(shader): accept TYPE=0 images during materialization A T# with TYPE=0 is null on AMD hardware even when its base and other words are nonzero; the materializer now accepts it as a null image instead of refusing it as invalid (reserved TYPE=1 is still refused). Upstream's frontend test is ported to tests/ShaderMemory.cpp. Metal: the Metal image binding already treats TYPE=0 as null (IsNullTextureResource), so such an image binds no texture. The Metal ImageTableRecord test now also samples a TYPE=0 record with a nonzero base and reads zero; on main it fails with "runtime image descriptor is invalid". Debt note added to docs/dev/TechnicalDebt.md. Ported from upstream PR boykopovar#5473 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DgW4n3qYgi5jAAohEmXRQj * fix(shader): read 1D T#s through 3D image_sample and image_load accesses A DIM 3D image_sample_lz, plain image_sample or mip-less image_load whose T# is 1D gets a runtime image mode that binds the 1D texture: the sample reads the texel u selects, and the load reads the x texel when z is 0 and zero otherwise, as measured on RDNA1. Other 3D accesses of such an image still throw. ImageResource gains flatVolumeLineCompatible, so the shader disk cache FormatVersion goes from 35 to 36. This is the only bump in this series: the later image-mode fields reuse it. Metal: the 1D mode binds through the existing Image1D shape (a 2D texture of height 1) with no new view. Upstream's ImageVolumeAddressOnLine execution test runs unchanged through the Metal driver (anyps5_metal_driver_semantics_imagevolumeaddressonline). It fails without the materializer hunk ("incompatible with the static runtime image interface"). Debt note added to docs/dev/TechnicalDebt.md. Ported from upstream PR boykopovar#5375 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DgW4n3qYgi5jAAohEmXRQj * fix(shader): sample single-level volumes through biased 2D accesses A pixel-stage, direct, plain 32-bit image_sample_b with DIM 2D whose T# is a one-slice, single-level 3D image gets the 3D runtime image mode: the sample supplies a zero third coordinate and keeps the bias, as measured on RDNA2. The binding requires a normalized point sampler and the descriptor one slice and mip zero; other cases throw. ImageResource gains singleMipPlaneBiasCompatible; it is encoded by the shader disk cache under the FormatVersion 36 bump of this series (upstream's own bump to 31 is not taken). Metal: the 3D mode binds the volume as the Image3D shape it already has, with no new view. Upstream's ImagePlaneBiasOnSingleLevelVolume execution test (a pixel draw) runs unchanged through MetalDraw (anyps5_metal_driver_semantics_imageplanebiasonsinglelevelvolume). It fails without the tracker hunk ("incompatible with the static runtime image interface"). Debt note added to docs/dev/TechnicalDebt.md. Ported from upstream PR boykopovar#5461 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DgW4n3qYgi5jAAohEmXRQj * fix(shader): decode forced degamma on biased RGBA8_UINT samples A direct RGBA8_UINT image sampled only by plain biased pixel accesses (the one-slice volume case of boykopovar#5461) through samplers that all set FORCE_DEGAMMA is materialized as RGBA8_SRGB, which returns the same decoded floats as the hardware. Mixed sampler states, indirect images, other accesses and formats still throw. Metal: MetalSampler refused every FORCE_DEGAMMA S#, so this (and the existing sRGB case of ImageSampleForceDegamma) could not bind. Metal now does what the Vulkan driver does: MetalShaderResources::Bindings creates the sampler with forceDegammaPaired and refuses a sampled image of a non-sRGB format paired with a forcing sampler (the same message as RequireDegammaFormat). The rewritten descriptor binds through the existing sRGB pixel-format view. Upstream's extended ImagePlaneBiasOnSingleLevelVolume and the existing ImageSampleForceDegamma tests now pass on Metal; both failed with "forces sRGB decoding which is not implemented". Debt note added to docs/dev/TechnicalDebt.md. Ported from upstream PR boykopovar#5472 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DgW4n3qYgi5jAAohEmXRQj * fix(shader): read cube T#s through DIM 2D image_sample and image_load as face 0 A DIM 2D image_sample_lz, plain image_sample, image_sample_l or mip-less image_load whose T# is a cube gets the cube runtime image mode and reads the T#'s BASE_ARRAY face with face coordinate 0, as measured on RDNA1. Other DIM 2D accesses through a cube T# still throw. ImageResource gains cubeFaceCompatible; encoded under the series' FormatVersion 36 bump. Metal: a cube T# is already a 2D-array texture of faces and the cube mode binds the Image2DArray shape, so no new view is needed. Upstream's ImagePlaneAddressOnCube execution test runs unchanged through the Metal driver (anyps5_metal_driver_semantics_imageplaneaddressoncube) and fails without the materializer hunk. Debt note added to docs/dev/TechnicalDebt.md. Ported from upstream PR boykopovar#5509 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DgW4n3qYgi5jAAohEmXRQj * fix(shader): compare through 2D image_sample_c on 1D T#s The flat-line (2D access through a 1D T#) compatibility now ignores the compare flag, so image_sample_c and image_sample_c_lz with DIM 2D on a 1D T# take the 1D mode like their non-compare forms. Metal: the 1D mode binds through the existing Image1D shape (a 2D texture of height 1), with no new view. Upstream's ImagePlaneCompareOnLine execution test runs unchanged through the Metal driver (anyps5_metal_driver_semantics_imageplanecompareonline) and fails without the tracker hunk. The debt note in docs/dev/TechnicalDebt.md is updated as upstream's. Ported from upstream PR boykopovar#5456 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DgW4n3qYgi5jAAohEmXRQj * fix(shader): apply the V# DST_SEL to formatted buffer stores buffer_store_format_* (D16 included) wrote memory component i from data VGPR i whatever the V#'s DST_SEL. A formatted store now writes each format component from the slot its selector names, only for the DST_SELs measured on RDNA2 or covered by conformance tests: the identity, Z,Y,X,W on 8_8_8_8_UNORM and 16_16_16_16_UINT, and 0,0,0,X on 8_UNORM and 8_UINT. Every other DST_SEL on a formatted store is refused: a host V# throws in DescriptorBindingBuilder::Prepare, and a GPU-selected V# records an invalid-descriptor BDA fault and skips the store. BufferResource gains formattedWritten; encoded under the series' FormatVersion 36 bump. Metal: the store is lowered in the shared SPIR-V (SpirvRuntimeBuffer), so no Metal binding change. Upstream's BufferStoreFormatDstSel execution test runs unchanged through the Metal driver (anyps5_metal_driver_semantics_bufferstoreformatdstsel). Without the SpirvRuntimeBuffer hunk it fails (Z,Y,X,W on 8_8_8_8_UNORM writes 0x4033bfff, expected 0x40ffbf33). Debt note added to docs/dev/TechnicalDebt.md. Ported from upstream PR boykopovar#5172 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DgW4n3qYgi5jAAohEmXRQj --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
eljackjoestar-cmd
force-pushed
the
codex/rgba8-uint-force-degamma
branch
from
October 14, 2026 09:53
e2101fc to
b7855ec
Compare
eljackjoestar-cmd
force-pushed
the
codex/rgba8-uint-force-degamma
branch
from
October 14, 2026 15:26
b7855ec to
613bb8e
Compare
Collaborator
|
Measured on RDNA2 (gfx1035, wave32, IEEE=0): #5461 is merged, so I rebased the final commit alone onto main: the debt line now sits next to #5461's, |
adriadam10
force-pushed
the
codex/rgba8-uint-force-degamma
branch
from
October 14, 2026 21:33
613bb8e to
76eb60a
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
After #5461, Lost Soul Aside (PPSA26358) reaches a rejection of FORCE_DEGAMMA on guest format 60, RGBA8_UINT. Hardware does not leave these samples as integers: setting the sampler bit makes the same bytes return decoded floating-point sRGB values.
For the measured direct, plain biased pixel-sampling case, materialize the image descriptor as RGBA8_SRGB before selecting the runtime image mode and descriptor heap. This changes both the shader's numeric mode and the sampled image view. The underlying guest descriptor/user-data bytes remain unchanged. Only a one-slice 3D image at mip zero is accepted, and every sampler paired with it must force degamma. The #5461 sampler proof still requires normalized point filtering. Mixed sampler states, other access forms, indirect images and other shapes remain refused.
This depends on #5461's bias-use proof, restricted 3D runtime mode and regression fixture. Its prerequisite commit is included until that PR merges; the new change is the final commit.
Semantics measurement
Direct native RDNA2 measurement on AMD integrated gfx1036 (Ryzen 7 7800X3D), AMD driver 32.0.21036.18, Windows 11. An OpenCL-loaded native kernel executes
image_sample_bDIM 2D (f0940f08 00400000) against a 16×16×1 RGBA8_UINT 3D image at mip zero. The script below verifies the compiled instruction/register layout, removes coordinate preprocessing and patches the opcode/DIM and sampler flag before loading the native binary. No emulator shaders run in this measurement.Controls: wave32; IEEE off; DX10 clamp on; f32/f16 denormals preserved; round to nearest even; FP16 overflow off. Twenty rows combine biases -16/-0.5/0/0.5/16 and four UV pairs, including wrapped coordinates. The RGBA8_UINT texel bytes are 64,128,32,255:
64,128,32,255.3d520000,3e5d0000,3c6d0000,3f800000, bit-identical to the same RGBA8_UNORM bytes sampled with FORCE_DEGAMMA.20175700 03800000 00000000 a0500f2e): 140 RGBA8_UINT rows checked.Wave64 and PS5 gfx1013 are not measured; the scope and gaps are recorded in shader debt. The Vulkan pixel readback compares decoded channels with a scalar sRGB oracle within one output UNORM code, retaining exact checks for the original non-degamma cases.
Tested
Rebased onto main
84b01f9cd042e1d2e9e112f8783aa5a9d26399eeon 2026-10-14; PR head613bb8e90fd7ebe74d35c014016949de719e48c6. Standalone branch verification (#5461 plus this PR), Windows 11 Pro 10.0.26300, WinLibs GCC 15.2, Release, SPIRV-Tools OFF: runtime and selected native test targets built successfully. All 7 focused tests passed without skips in 3.03 s. Conventions and whitespace checks passed. The #5461 prerequisite is rebased onto the same main; it remains the only dependency. The cache format is 32, inherited from #5461. The Vulkan checks above used NVIDIA RTX 5070 / driver 617.14. Three image regressions also passed on AMD integrated gfx1036 / 32.0.21036.18 in 0.53 s, including the existing array-to-volume store regression. No new title/gameplay run, Linux, full-suite or CI result is claimed.Earlier validation, on the bases stated below:
a0f5916a2+ fix(shader): sample single-level volumes through biased 2D accesses #5461 + this change alone, WinLibs GCC 15.2.0x2017590000is now bound as guest format 130 through a sampled sRGB view (vk=43). No renderer rejection occurs before the memory guard stops loading with 1,580 MiB free commit headroom (process private memory 16,943 MiB). Gameplay is still unverified. This integration includes fix(agc): preserve array slice XOR in color target views #4551, fix(shader): map retained SPIR-V from shader cache entries #4806, fix(shader): ignore unused descriptor fields for scalar buffer loads #5049, fix(audio): preserve completed AudioOut2 grains across threads #5198, point-size and depth-storage prerequisites plus the occlusion workaround; those are not new changes in this PR.Checklist
main; no other open PR implements this UINT numeric-mode conversionRaw native measurements
{ "device": "gfx1036", "driver": "32.0.21036.18", "rows": [ [ -16.0, 0.03125, 0.03125, 0.0 ], [ -16.0, 0.53125, 0.78125, 0.0 ], [ -16.0, 0.96875, 0.96875, 0.0 ], [ -16.0, -0.03125, 1.03125, 0.0 ], [ -0.5, 0.03125, 0.03125, 0.0 ], [ -0.5, 0.53125, 0.78125, 0.0 ], [ -0.5, 0.96875, 0.96875, 0.0 ], [ -0.5, -0.03125, 1.03125, 0.0 ], [ 0.0, 0.03125, 0.03125, 0.0 ], [ 0.0, 0.53125, 0.78125, 0.0 ], [ 0.0, 0.96875, 0.96875, 0.0 ], [ 0.0, -0.03125, 1.03125, 0.0 ], [ 0.5, 0.03125, 0.03125, 0.0 ], [ 0.5, 0.53125, 0.78125, 0.0 ], [ 0.5, 0.96875, 0.96875, 0.0 ], [ 0.5, -0.03125, 1.03125, 0.0 ], [ 16.0, 0.03125, 0.03125, 0.0 ], [ 16.0, 0.53125, 0.78125, 0.0 ], [ 16.0, 0.96875, 0.96875, 0.0 ], [ 16.0, -0.03125, 1.03125, 0.0 ] ], "controls": { "wave32": true, "ieee": 0, "dx10_clamp": 1, "denorm32": 3, "denorm16": 3, "round32": 0, "round16": 0, "fp16_overflow": 0 }, "cases": [ { "format": "R32_UINT", "reduction": 0, "force_degamma": 0, "exact_game_sampler": false, "baseline_lz_dim3d": false, "output": [ [ 16777216, 0, 0, 1 ], [ 16780296, 0, 0, 1 ], [ 16781071, 0, 0, 1 ], [ 16777231, 0, 0, 1 ], [ 16777216, 0, 0, 1 ], [ 16780296, 0, 0, 1 ], [ 16781071, 0, 0, 1 ], [ 16777231, 0, 0, 1 ], [ 16777216, 0, 0, 1 ], [ 16780296, 0, 0, 1 ], [ 16781071, 0, 0, 1 ], [ 16777231, 0, 0, 1 ], [ 16777216, 0, 0, 1 ], [ 16780296, 0, 0, 1 ], [ 16781071, 0, 0, 1 ], [ 16777231, 0, 0, 1 ], [ 16777216, 0, 0, 1 ], [ 16780296, 0, 0, 1 ], [ 16781071, 0, 0, 1 ], [ 16777231, 0, 0, 1 ] ] }, { "format": "R32_UINT", "reduction": 0, "force_degamma": 1, "exact_game_sampler": false, "baseline_lz_dim3d": false, "output": [ [ 16777216, 0, 0, 1 ], [ 16780296, 0, 0, 1 ], [ 16781071, 0, 0, 1 ], [ 16777231, 0, 0, 1 ], [ 16777216, 0, 0, 1 ], [ 16780296, 0, 0, 1 ], [ 16781071, 0, 0, 1 ], [ 16777231, 0, 0, 1 ], [ 16777216, 0, 0, 1 ], [ 16780296, 0, 0, 1 ], [ 16781071, 0, 0, 1 ], [ 16777231, 0, 0, 1 ], [ 16777216, 0, 0, 1 ], [ 16780296, 0, 0, 1 ], [ 16781071, 0, 0, 1 ], [ 16777231, 0, 0, 1 ], [ 16777216, 0, 0, 1 ], [ 16780296, 0, 0, 1 ], [ 16781071, 0, 0, 1 ], [ 16777231, 0, 0, 1 ] ] }, { "format": "R32_UINT", "reduction": 1, "force_degamma": 0, "exact_game_sampler": false, "baseline_lz_dim3d": false, "output": [ [ 16777216, 0, 0, 1 ], [ 16780296, 0, 0, 1 ], [ 16781071, 0, 0, 1 ], [ 16777231, 0, 0, 1 ], [ 16777216, 0, 0, 1 ], [ 16780296, 0, 0, 1 ], [ 16781071, 0, 0, 1 ], [ 16777231, 0, 0, 1 ], [ 16777216, 0, 0, 1 ], [ 16780296, 0, 0, 1 ], [ 16781071, 0, 0, 1 ], [ 16777231, 0, 0, 1 ], [ 16777216, 0, 0, 1 ], [ 16780296, 0, 0, 1 ], [ 16781071, 0, 0, 1 ], [ 16777231, 0, 0, 1 ], [ 16777216, 0, 0, 1 ], [ 16780296, 0, 0, 1 ], [ 16781071, 0, 0, 1 ], [ 16777231, 0, 0, 1 ] ] }, { "format": "R32_UINT", "reduction": 1, "force_degamma": 1, "exact_game_sampler": false, "baseline_lz_dim3d": false, "output": [ [ 16777216, 0, 0, 1 ], [ 16780296, 0, 0, 1 ], [ 16781071, 0, 0, 1 ], [ 16777231, 0, 0, 1 ], [ 16777216, 0, 0, 1 ], [ 16780296, 0, 0, 1 ], [ 16781071, 0, 0, 1 ], [ 16777231, 0, 0, 1 ], [ 16777216, 0, 0, 1 ], [ 16780296, 0, 0, 1 ], [ 16781071, 0, 0, 1 ], [ 16777231, 0, 0, 1 ], [ 16777216, 0, 0, 1 ], [ 16780296, 0, 0, 1 ], [ 16781071, 0, 0, 1 ], [ 16777231, 0, 0, 1 ], [ 16777216, 0, 0, 1 ], [ 16780296, 0, 0, 1 ], [ 16781071, 0, 0, 1 ], [ 16777231, 0, 0, 1 ] ] }, { "format": "R32_UINT", "reduction": 2, "force_degamma": 0, "exact_game_sampler": false, "baseline_lz_dim3d": false, "output": [ [ 16777216, 0, 0, 1 ], [ 16780296, 0, 0, 1 ], [ 16781071, 0, 0, 1 ], [ 16777231, 0, 0, 1 ], [ 16777216, 0, 0, 1 ], [ 16780296, 0, 0, 1 ], [ 16781071, 0, 0, 1 ], [ 16777231, 0, 0, 1 ], [ 16777216, 0, 0, 1 ], [ 16780296, 0, 0, 1 ], [ 16781071, 0, 0, 1 ], [ 16777231, 0, 0, 1 ], [ 16777216, 0, 0, 1 ], [ 16780296, 0, 0, 1 ], [ 16781071, 0, 0, 1 ], [ 16777231, 0, 0, 1 ], [ 16777216, 0, 0, 1 ], [ 16780296, 0, 0, 1 ], [ 16781071, 0, 0, 1 ], [ 16777231, 0, 0, 1 ] ] }, { "format": "R32_UINT", "reduction": 2, "force_degamma": 1, "exact_game_sampler": false, "baseline_lz_dim3d": false, "output": [ [ 16777216, 0, 0, 1 ], [ 16780296, 0, 0, 1 ], [ 16781071, 0, 0, 1 ], [ 16777231, 0, 0, 1 ], [ 16777216, 0, 0, 1 ], [ 16780296, 0, 0, 1 ], [ 16781071, 0, 0, 1 ], [ 16777231, 0, 0, 1 ], [ 16777216, 0, 0, 1 ], [ 16780296, 0, 0, 1 ], [ 16781071, 0, 0, 1 ], [ 16777231, 0, 0, 1 ], [ 16777216, 0, 0, 1 ], [ 16780296, 0, 0, 1 ], [ 16781071, 0, 0, 1 ], [ 16777231, 0, 0, 1 ], [ 16777216, 0, 0, 1 ], [ 16780296, 0, 0, 1 ], [ 16781071, 0, 0, 1 ], [ 16777231, 0, 0, 1 ] ] }, { "format": "RGBA8_UNORM", "reduction": 0, "force_degamma": 0, "exact_game_sampler": false, "baseline_lz_dim3d": false, "output": [ [ 1048608897, 1056997505, 1040220289, 1065353216 ], [ 1048608897, 1056997505, 1040220289, 1065353216 ], [ 1048608897, 1056997505, 1040220289, 1065353216 ], [ 1048608897, 1056997505, 1040220289, 1065353216 ], [ 1048608897, 1056997505, 1040220289, 1065353216 ], [ 1048608897, 1056997505, 1040220289, 1065353216 ], [ 1048608897, 1056997505, 1040220289, 1065353216 ], [ 1048608897, 1056997505, 1040220289, 1065353216 ], [ 1048608897, 1056997505, 1040220289, 1065353216 ], [ 1048608897, 1056997505, 1040220289, 1065353216 ], [ 1048608897, 1056997505, 1040220289, 1065353216 ], [ 1048608897, 1056997505, 1040220289, 1065353216 ], [ 1048608897, 1056997505, 1040220289, 1065353216 ], [ 1048608897, 1056997505, 1040220289, 1065353216 ], [ 1048608897, 1056997505, 1040220289, 1065353216 ], [ 1048608897, 1056997505, 1040220289, 1065353216 ], [ 1048608897, 1056997505, 1040220289, 1065353216 ], [ 1048608897, 1056997505, 1040220289, 1065353216 ], [ 1048608897, 1056997505, 1040220289, 1065353216 ], [ 1048608897, 1056997505, 1040220289, 1065353216 ] ] }, { "format": "RGBA8_UNORM", "reduction": 0, "force_degamma": 1, "exact_game_sampler": false, "baseline_lz_dim3d": false, "output": [ [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ] ] }, { "format": "R32_UINT", "reduction": 1, "force_degamma": 1, "exact_game_sampler": true, "baseline_lz_dim3d": false, "output": [ [ 16777216, 0, 0, 1 ], [ 16780296, 0, 0, 1 ], [ 16781071, 0, 0, 1 ], [ 16777231, 0, 0, 1 ], [ 16777216, 0, 0, 1 ], [ 16780296, 0, 0, 1 ], [ 16781071, 0, 0, 1 ], [ 16777231, 0, 0, 1 ], [ 16777216, 0, 0, 1 ], [ 16780296, 0, 0, 1 ], [ 16781071, 0, 0, 1 ], [ 16777231, 0, 0, 1 ], [ 16777216, 0, 0, 1 ], [ 16780296, 0, 0, 1 ], [ 16781071, 0, 0, 1 ], [ 16777231, 0, 0, 1 ], [ 16777216, 0, 0, 1 ], [ 16780296, 0, 0, 1 ], [ 16781071, 0, 0, 1 ], [ 16777231, 0, 0, 1 ] ] }, { "format": "RGBA8_UINT", "reduction": 0, "force_degamma": 0, "exact_game_sampler": false, "baseline_lz_dim3d": false, "output": [ [ 64, 128, 32, 255 ], [ 64, 128, 32, 255 ], [ 64, 128, 32, 255 ], [ 64, 128, 32, 255 ], [ 64, 128, 32, 255 ], [ 64, 128, 32, 255 ], [ 64, 128, 32, 255 ], [ 64, 128, 32, 255 ], [ 64, 128, 32, 255 ], [ 64, 128, 32, 255 ], [ 64, 128, 32, 255 ], [ 64, 128, 32, 255 ], [ 64, 128, 32, 255 ], [ 64, 128, 32, 255 ], [ 64, 128, 32, 255 ], [ 64, 128, 32, 255 ], [ 64, 128, 32, 255 ], [ 64, 128, 32, 255 ], [ 64, 128, 32, 255 ], [ 64, 128, 32, 255 ] ] }, { "format": "RGBA8_UINT", "reduction": 0, "force_degamma": 1, "exact_game_sampler": false, "baseline_lz_dim3d": false, "output": [ [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ] ] }, { "format": "RGBA8_UINT", "reduction": 1, "force_degamma": 0, "exact_game_sampler": false, "baseline_lz_dim3d": false, "output": [ [ 64, 128, 32, 255 ], [ 64, 128, 32, 255 ], [ 64, 128, 32, 255 ], [ 64, 128, 32, 255 ], [ 64, 128, 32, 255 ], [ 64, 128, 32, 255 ], [ 64, 128, 32, 255 ], [ 64, 128, 32, 255 ], [ 64, 128, 32, 255 ], [ 64, 128, 32, 255 ], [ 64, 128, 32, 255 ], [ 64, 128, 32, 255 ], [ 64, 128, 32, 255 ], [ 64, 128, 32, 255 ], [ 64, 128, 32, 255 ], [ 64, 128, 32, 255 ], [ 64, 128, 32, 255 ], [ 64, 128, 32, 255 ], [ 64, 128, 32, 255 ], [ 64, 128, 32, 255 ] ] }, { "format": "RGBA8_UINT", "reduction": 1, "force_degamma": 1, "exact_game_sampler": false, "baseline_lz_dim3d": false, "output": [ [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ] ] }, { "format": "RGBA8_UINT", "reduction": 2, "force_degamma": 0, "exact_game_sampler": false, "baseline_lz_dim3d": false, "output": [ [ 64, 128, 32, 255 ], [ 64, 128, 32, 255 ], [ 64, 128, 32, 255 ], [ 64, 128, 32, 255 ], [ 64, 128, 32, 255 ], [ 64, 128, 32, 255 ], [ 64, 128, 32, 255 ], [ 64, 128, 32, 255 ], [ 64, 128, 32, 255 ], [ 64, 128, 32, 255 ], [ 64, 128, 32, 255 ], [ 64, 128, 32, 255 ], [ 64, 128, 32, 255 ], [ 64, 128, 32, 255 ], [ 64, 128, 32, 255 ], [ 64, 128, 32, 255 ], [ 64, 128, 32, 255 ], [ 64, 128, 32, 255 ], [ 64, 128, 32, 255 ], [ 64, 128, 32, 255 ] ] }, { "format": "RGBA8_UINT", "reduction": 2, "force_degamma": 1, "exact_game_sampler": false, "baseline_lz_dim3d": false, "output": [ [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ] ] }, { "format": "RGBA8_UINT", "reduction": 1, "force_degamma": 1, "exact_game_sampler": true, "baseline_lz_dim3d": false, "output": [ [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ], [ 1028784128, 1046282240, 1013776384, 1065353216 ] ] }, { "format": "R32_UINT", "reduction": 0, "force_degamma": 0, "exact_game_sampler": false, "baseline_lz_dim3d": true, "output": [ [ 16777216, 0, 0, 1 ], [ 16779264, 0, 0, 1 ], [ 16781056, 0, 0, 1 ], [ 16781056, 0, 0, 1 ], [ 16777224, 0, 0, 1 ], [ 16779272, 0, 0, 1 ], [ 16781064, 0, 0, 1 ], [ 16781064, 0, 0, 1 ], [ 16777216, 0, 0, 1 ], [ 16779264, 0, 0, 1 ], [ 16781056, 0, 0, 1 ], [ 16781056, 0, 0, 1 ], [ 16777224, 0, 0, 1 ], [ 16779272, 0, 0, 1 ], [ 16781064, 0, 0, 1 ], [ 16781064, 0, 0, 1 ], [ 16777216, 0, 0, 1 ], [ 16779264, 0, 0, 1 ], [ 16781056, 0, 0, 1 ], [ 16781056, 0, 0, 1 ] ] }, { "format": "R32_UINT", "reduction": 0, "force_degamma": 1, "exact_game_sampler": false, "baseline_lz_dim3d": true, "output": [ [ 16777216, 0, 0, 1 ], [ 16779264, 0, 0, 1 ], [ 16781056, 0, 0, 1 ], [ 16781056, 0, 0, 1 ], [ 16777224, 0, 0, 1 ], [ 16779272, 0, 0, 1 ], [ 16781064, 0, 0, 1 ], [ 16781064, 0, 0, 1 ], [ 16777216, 0, 0, 1 ], [ 16779264, 0, 0, 1 ], [ 16781056, 0, 0, 1 ], [ 16781056, 0, 0, 1 ], [ 16777224, 0, 0, 1 ], [ 16779272, 0, 0, 1 ], [ 16781064, 0, 0, 1 ], [ 16781064, 0, 0, 1 ], [ 16777216, 0, 0, 1 ], [ 16779264, 0, 0, 1 ], [ 16781056, 0, 0, 1 ], [ 16781056, 0, 0, 1 ] ] } ] }Reproduction script (Windows OpenCL, gfx1036)