|
9d41585e
|
2022-08-12T14:20:34
|
|
Make PLS coherent on D3D 11.3
Adds a new internal memory qualifier to the compiler called
"rasterOrdered", which we set in RewritePixelLocalStorage.cpp when D3D
11.3 Rasterizer Order Views are supported. The HLSL translator then
generates RasterizerOrderedTexture2D<> instead of RWTexture2D<> when
this qualifier is set.
Bug: angleproject:7279
Change-Id: I39b8c3279b7bff93b7e57272e8fb84d9c0312616
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3830288
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Chris Dalton <chris@rive.app>
|
|
4a636cdd
|
2022-07-20T22:44:30
|
|
Require all PLS formats to consume exactly 4 bytes of storage
D3D 11.0 UAVs only support R32_FLOAT, R32_UINT, R32_SINT formats.
EXT_shader_pixel_local_storage explicitly states that all PLS variables
consume exactly 4 bytes.
ESSL images can only have both read and write access if their format is
r32f, r32i, r32ui. (We were able to circumvent this via aliasing, but it
was a huge source of bugs.)
There is a large precedent for only supporting 4 bytes of storage in the
capabilities we use for PLS, so this CL removes support for all PLS
storage formats that are not 4 bytes. It also implements an "R32" mode
for PLS, that does manual packing and unpacking of r32* image formats.
If the application wants larger formats, it can always define multiple
PLS planes and piece them together.
Next up we ought to be able to support rg16* types with more
packing/unpacking.
With aliasing gone, and with a bit of tweaking, the PLS tests now pass
on the Pixel 4 GLES bot.
Bug: angleproject:7279
Bug: angleproject:7388
Bug: angleproject:7524
Bug: angleproject:7527
Change-Id: I6b8f62c2428ade6cb5413e33360d734e55dda0eb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3782579
Reviewed-by: Stephen White <senorblanco@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Chris Dalton <chris@rive.app>
|
|
fa3d7d5c
|
2022-08-05T00:57:40
|
|
Make PLS coherent on Vulkan
Uses the VK_EXT_fragment_shader_interlock extension to make the shader
image implementation of PLS coherent on Vulkan.
This extension is supported on AMD, Apple, NVIDIA, and Intel.
Bug: angleproject:7279
Change-Id: Ic0253eb20932eb6be0b1f433ba454e48b57be2f5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3813816
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Chris Dalton <chris@rive.app>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
6f80f0f0
|
2022-08-06T02:29:19
|
|
Translator: Clean up the compile flag passing interface
Historically, compile flags were sent to the translator as a bitmask.
Recently, we were getting close to running out of bits. Additionally,
direct-to-metal work had started to introduce constants to be passed to
the translator, which were misplaced in ShBuiltInResources and Caps.
Recent work on Pixel Local Storage adds even more constants, aggravating
the situation.
In this change, the interface to passing compile flags is reworked. A
struct is passed (instead of a bitmask) that has one bit for each flag.
This can be indefinitely extended. Additionally, the constants needed
by metal and PLS are also placed in this struct. In turn, the backends
can set these options directly, and don't have to hack them into Caps to
further get hacked into ShBuiltInResources.
Bug: angleproject:7559
Change-Id: If93f1e1b8818ad3a0ac708ab04ab93b4b397d114
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3812562
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
861149c7
|
2022-08-03T15:43:29
|
|
Make PLS coherent on desktop OpenGL
Implements ANGLE_shader_pixel_local_storage_coherent using fragment
shader synchronization extensions:
NV_fragment_shader_interlock
INTEL_fragment_shader_ordering
ARB_fragment_shader_interlock
With these extensions combined, we get coherency all 3 big desktop
vendors: NVIDIA, Intel, and AMD.
Bug: angleproject:7279
Change-Id: Ie20b251fb772898e89994b799640f1f2806581eb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3773990
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
d57ce815
|
2022-07-16T16:33:08
|
|
Use "readwrite" PLS images when possible
We actually only need readonly/writeonly aliases on ESSL, non
r32f/r32ui. For all other cases, this change updates the compiler to
emit a single readwrite image. We also optimize this image with the
"restrict" qualifier since PLS specifically disallows aliasing.
Removing the aliased load and store also eliminates our issue with an
Intel driver bug, and all the PLS tests now pass without any
workarounds.
Bug: angleproject:7279
Bug: angleproject:7398
Change-Id: I350b239793647da33add96509b8f4b1bbef02245
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3767537
Commit-Queue: Chris Dalton <chris@rive.app>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
77aa34ae
|
2022-07-16T13:08:00
|
|
Add support for PLS as function arguments
Bug: angleproject:7279
Change-Id: I89d5c02148cbdbbd02dc4840ffada2c96c2a849b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3767534
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Chris Dalton <chris@rive.app>
|
|
c460c299
|
2022-06-21T11:20:45
|
|
Implement GLSL additions for ANGLE_shader_pixel_local_storage
Specs out, implements, and thoroughly tests the GLSL additions for
ANGLE_shader_pixel_local_storage. Adds a simple transformation that
rewrites PLS directly into shader images. Updates the existing PLS tests
to use the newly built-in PLS features and ensures they continue
passing.
For now, applications call glBindImageTexture to configure their pixel
local storage. The OpenGL ES API side of this extension will follow
shortly.
Bug: angleproject:7279
Change-Id: I141183069b5cbfcca01cbb77b5b36d3e5f834bf5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3761876
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Chris Dalton <chris@rive.app>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|