Issue 7279 in angleproject: Implement a pixel local storage extension in ANGLE

94 views
Skip to first unread message

k… via monorail

unread,
Jun 2, 2022, 4:33:15 PM6/2/22
to angleproj...@googlegroups.com
Updates:
Status: Assigned
Summary: Implement a pixel local storage extension in ANGLE

Comment #13 on issue 7279 by k...@chromium.org: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c13

This extension would be very useful and address multiple customer requests both for KHR_blend_equation_advanced and EXT_shader_framebuffer_fetch. The WebGL working group is on board with shipping this extension if it's implementable without too much difficulty on top of the other mentioned extensions.

--
You received this message because:
1. The project was configured to send all issue notifications to this address

You may adjust your notification preferences at:
https://bugs.chromium.org/hosting/settings

jjbbo… via monorail

unread,
Jun 5, 2022, 3:07:04 AM6/5/22
to angleproj...@googlegroups.com

Comment #14 on issue 7279 by jjbbo...@gmail.com: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c14

(No comment was entered for this change.)

Attachments:
index.html 294 KB

syous… via monorail

unread,
Jun 9, 2022, 4:03:02 PM6/9/22
to angleproj...@googlegroups.com

Comment #15 on issue 7279 by syou...@chromium.org: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c15

General response to the CLs in progress that implement this idea in tests: More tests never hurt, so LGTM.

That said, please know that turning framebuffer attachments implicitly into storage images is terribly costly. In particular, this disables framebuffer compression which will considerably degrade the performance of the render pass. I'd argue that emulation with storage images is strictly inferior to drawing followed by binding as texture, texelFetch()-ing and writing to another framebuffer.

In particular, let's look at the two classes of hardware:

- On immediate mode renderers (IMR), the color attachment content makes its way to L2 / memory anyway during rendering. This means that using it as texture and texelFetch is practically free. All this emulation would do is disable framebuffer compression and hurt performance.
- On tile based renderers (TBR), the damage is much more. On TBR hardware, at least the contents of the attachment remain on tile until the end of the render pass. Using it as texture + texelFetch incurs a flush to memory and read back, which is not great (and that framebuffer fetch removes). With this emulation, not only is framebuffer compression disabled, but also *every draw call interacts with memory*, negating a major benefit of TBR hardware.

TL;DR, I don't think emulation with storage images is a good idea.

ch… via monorail

unread,
Jun 9, 2022, 5:33:58 PM6/9/22
to angleproj...@googlegroups.com

Comment #16 on issue 7279 by ch...@rive.app: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c16

Agreed that shader images are a very bad way of implementing this feature on TBR hardware! The plan for TBR is to use EXT_shader_pixel_local_storage and the myriad of other mechanisms that allow us to take advantage tiled memory. The wording and intent of this extension is that the local storage ideally should not interact with memory, which is achievable on virtually all TBR platforms.

The ES 3.1 shader image implementation is coarse scaffolding to bootstrap the test suite, that hopefully only needs to be used rarely if ever.


> I'd argue that emulation with storage images is strictly inferior to drawing followed by binding as texture, texelFetch()-ing and writing to another framebuffer.

The appeal of shader images is that they can be accessed coherently (overlapping draws, no barrier required) almost everywhere if we use one of:

GL_ARB_fragment_shader_interlock
GL_INTEL_fragment_shader_ordering
VK_EXT_fragment_shader_interlock
Direct3D ROVs

And there are many applications where coherency will unlock better performance (via improved batching, not requiring barriers) than framebuffer compression.

TL;DR of my thought process: the intent of this extension is to unlock the power of tiled rendering for the web, and on non-tiling hardware, coherent shader image access is a decent polyfill. Supporting coherency in the extension is higher priority than absolute write bandwidth on desktop GPUs.

Git Watcher via monorail

unread,
Jun 9, 2022, 6:56:06 PM6/9/22
to angleproj...@googlegroups.com

Comment #17 on issue 7279 by Git Watcher: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c17

The following revision refers to this bug:
https://chromium.googlesource.com/angle/angle/+/a894cb948d5b09111ec4b0cb218154785d0d17a5

commit a894cb948d5b09111ec4b0cb218154785d0d17a5
Author: Chris Dalton <ch...@rive.app>
Date: Wed May 11 03:15:59 2022

Bootstrap pixel local storage

This CL creates a very simple prototype that implements pixel local
storage in a thin layer on top of ES 3.1 shader images, and adds a
single test.

Assuming all goes well on the various devices and backends, the next
steps will be:

* Write many more tests.
* Compiler support, switch to API-specific shader images.
* Move the thin layer into ANGLE.
* Thorough validation and error handling.
* Add an implementation that uses render target attachments
(e.g., EXT_shader_framebuffer_fetch).
* Incremental, backend-specific optimizations as needed.

Bug: angleproject:7279
Change-Id: I7f9f0a1fe2d61f570b4105a7380687038ae45f5d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3645786
Reviewed-by: Kenneth Russell <k...@chromium.org>
Commit-Queue: Kenneth Russell <k...@chromium.org>
Reviewed-by: Geoff Lang <geof...@chromium.org>
Reviewed-by: Shahbaz Youssefi <syou...@chromium.org>

[modify] https://crrev.com/a894cb948d5b09111ec4b0cb218154785d0d17a5/src/tests/angle_end2end_tests.gni
[add] https://crrev.com/a894cb948d5b09111ec4b0cb218154785d0d17a5/src/tests/gl_tests/PixelLocalStorageTest.cpp
[modify] https://crrev.com/a894cb948d5b09111ec4b0cb218154785d0d17a5/src/tests/angle_end2end_tests_expectations.txt
[modify] https://crrev.com/a894cb948d5b09111ec4b0cb218154785d0d17a5/src/libANGLE/capture/capture_gles_3_1_params.cpp

syous… via monorail

unread,
Jun 9, 2022, 9:51:51 PM6/9/22
to angleproj...@googlegroups.com

Comment #18 on issue 7279 by syou...@chromium.org: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c18


> Agreed that shader images are a very bad way of implementing this feature on TBR hardware! The plan for TBR is to use EXT_shader_pixel_local_storage and the myriad of other mechanisms that allow us to take advantage tiled memory. The wording and intent of this extension is that the local storage ideally should not interact with memory, which is achievable on virtually all TBR platforms.

:thumbs_up:


> The ES 3.1 shader image implementation is coarse scaffolding to bootstrap the test suite, that hopefully only needs to be used rarely if ever.

That is an excellent strategy, no objections there.


> And there are many applications where coherency will unlock better performance (via improved batching, not requiring barriers) than framebuffer compression.
>
> TL;DR of my thought process: the intent of this extension is to unlock the power of tiled rendering for the web, and on non-tiling hardware, coherent shader image access is a decent polyfill. Supporting coherency in the extension is higher priority than absolute write bandwidth on desktop GPUs.

This is where I have doubts. Unless you can demonstrate emulation-through-images performing better than render-then-sample (obviously in something that's not a contrived test), it seems to me that it's better _not_ to expose this extension on desktop so the application's fallback would choose the more efficient path.

ch… via monorail

unread,
Jun 10, 2022, 6:23:03 PM6/10/22
to angleproj...@googlegroups.com

Comment #19 on issue 7279 by ch...@rive.app: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c19

You got me really curious, so I coded up an example that draws bubbles with the "color burn" blend mode. The benchmark (attached as bubbles.cpp) tests 3 different mechanisms for the blend:
* Coherent imageLoad/Store
* texelFetch with a texture barrier between draws
* KHR_blend_equation_advanced_coherent

Results: https://docs.google.com/spreadsheets/d/1NwVnzKLXaudNuVUS75GKDGai_sKv8fR7e_xbRoLyrDY

My summary:
* imageLoad/Store is always superior to texelFetch on my Intel chip.
* texelFetch on my NVIDIA chip is 1.75x faster than imageLoad/Store in the extreme case, but 20x slower in the other extreme.
* We could maybe improve this benchmark by reordering and reducing the number of barriers, but not every application can be reordered like that.
* imageLoad/Store is always at least as fast as both KHR_blend_equation_advanced_coherent implementations.
* To me, this is a nod toward imageLoad/Store as a reasonable enough way to implement PLS.
* KHR_blend_equation_advanced_coherent is very slow on NVIDIA. Their dedicated blend unit must not be getting prioritized.

Since there isn't a scenario where texelFetch is a clear winner across all platforms, I would lean toward simplicity and advocate implementing the extension coherently with imageLoad/Store. Barriers introduce undefined behavior, and WebGL tries to avoid undefined behavior. But if we want that 1.75x back on extreme cases on NVIDIA (and are committed to identifying the platforms where texelFetch isn't a de-optimization), we could add something to the spec that allows the client to explicitly declare a plane of pixel local storage as noncoherent. (Note that this would also require some wording to the spec that reduces the max number of texture units when using PLS.)


> it seems to me that it's better _not_ to expose this extension on desktop so the application's fallback would choose the more efficient path.

I think not exposing the extension on desktop isn't a good option because there isn't an efficient fallback. Some applications just require coherency, for which there is no fallback. For apps that don't need coherency, WebGL still doesn't provide a texture barrier. Your only option is to blit pixels out of the framebuffer between all your overlapping geometry, which is hugely inefficient.

Attachments:
bubbles.jpg 191 KB
bubbles.cpp 14.2 KB

syous… via monorail

unread,
Jun 10, 2022, 11:39:43 PM6/10/22
to angleproj...@googlegroups.com

Comment #20 on issue 7279 by syou...@chromium.org: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c20

I took a quick look at your test, and first I need to point this out:

Texel fetch **is** coherent. You don't need a glMemoryBarrier for that (and glMemoryBarrier shouldn't affect it either). There's no undefined behavior about _that_ (but actually there is still UB, see below)

That said, in the texelFetch mode, your test is creating a feedback loop, which is not valid GL. But your test does actually show that texelFetch is not really a good solution either. The framebuffer fetch scenarios I had in mind where about fullscreen effects (so you can render to FBO 1, then texelFetch+transform and render into FBO 2). I still maintain that texelFetch would be the best option for fullscreen framebuffer fetch effects (on non-TBR). But in examples like yours where every framebuffer fetch draw covers a small area, yeah using texelFetch without a feedback loop is extremely expensive (because the rest of the image needs to be copied over too to the new FBO).

So ok, I concede that there may be something to using storage images. However, for completeness I also suggest adding another test that does this:

- Create FBO outside loop like you already do
- In the loop:
* Render a heavy scene (just a number of fullscreen triangles for example with random colors to emulate it, say taking ~10ms if there's nothing else (no framebuffer fetch stuff) in test). Without framebuffer fetch stuff, this allows the FBO to use framebuffer compression, and still let the rendering take a substantial amount of time.
* Add your bubbles on top with framebuffer fetch (I guess no point in testing texel fetch, which again uses feedback loop and is invalid)

In your current tests, there is no scene rendering. So let's say the bubbles take 15ms to render. My suspicion is that if you use storage images, then the frame won't take 10ms+15ms, but rather something larger because the 10ms for scene rendering is now degraded due to lack of framebuffer compression.

---

And lol at advanced blend, that was unexpected!

ch… via monorail

unread,
Jun 11, 2022, 1:52:37 AM6/11/22
to angleproj...@googlegroups.com

Comment #21 on issue 7279 by ch...@rive.app: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c21


> And lol at advanced blend, that was unexpected!

Oh yeah, programmable blending is the primary feature driving this extension! We want it in WebGL.

---

And ok, I like where you're going with the new testcase. Added it to the spreadsheet and attached another .cpp.

Drawing 500 solid, fullscreen rectangles does expose a slowdown in shader images as you predicted, but on my GPUs it appears to be in the range of 75-80% the speed going through the normal raster pipeline, so nothing showstopping.


> in the texelFetch mode, your test is creating a feedback loop, which is not valid GL

I understood that glTextureBarrier() makes that feedback loop valid: https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glTextureBarrier.xhtml

(I had also assumed that glMemoryBarrier(GL_TEXTURE_FETCH_BARRIER_BIT) was the same as glTextureBarrier(), but now I'm questioning whether that is true ¯\_(ツ)_/¯)

> Texel fetch **is** coherent

I think this word is overloaded. I agree that it's coherent in that you don't have to call glMemoryBarrier.

When I've been saying "coherent" in the context of PLS, I meant the sense of the word that KHR_blend_equation_advanced_coherent uses, which means "you can draw overlapping stuff without a barrier in between". In that sense, I consider the rendering mode that uses texelFetch to not be "coherent" because you have to call glTextureBarrier between overlapping draws.

Attachments:
bubbles.cpp 16.4 KB

syous… via monorail

unread,
Jun 11, 2022, 10:06:56 PM6/11/22
to angleproj...@googlegroups.com

Comment #22 on issue 7279 by syou...@chromium.org: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c22


> I understood that glTextureBarrier() makes that feedback loop valid: https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glTextureBarrier.xhtml

Oh interesting, I didn't know about that function (it's not in GLES)


> (I had also assumed that glMemoryBarrier(GL_TEXTURE_FETCH_BARRIER_BIT) was the same as glTextureBarrier(), but now I'm questioning whether that is true ¯\_(ツ)_/¯)
> > Texel fetch **is** coherent
> I think this word is overloaded. I agree that it's coherent in that you don't have to call glMemoryBarrier.

Yeah ok, I was talking about glMemoryBarrier. You are right that with feedback loop, texel fetch is not coherent with draw (which I assumed is not valid GL, but seems to be valid in desktop GL)

syous… via monorail

unread,
Jun 11, 2022, 10:12:06 PM6/11/22
to angleproj...@googlegroups.com

Comment #23 on issue 7279 by syou...@chromium.org: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c23

And alright, the slowdown isn't too bad. It may be a good idea to slap a performance warning on the extension, advising devs to measure performance, just to avoid surprises.

ch… via monorail

unread,
Jun 13, 2022, 4:30:01 PM6/13/22
to angleproj...@googlegroups.com

Comment #24 on issue 7279 by ch...@rive.app: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c24


> It may be a good idea to slap a performance warning on the extension

Git Watcher via monorail

unread,
Jun 13, 2022, 5:43:06 PM6/13/22
to angleproj...@googlegroups.com

Comment #25 on issue 7279 by Git Watcher: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c25


The following revision refers to this bug:
https://chromium.googlesource.com/angle/angle/+/f1c21d688b82349cb2e3dd9daad80285e2a0a3e6

commit f1c21d688b82349cb2e3dd9daad80285e2a0a3e6
Author: Chris Dalton <ch...@rive.app>
Date: Sat Jun 04 08:26:36 2022

Add pixel local storage tests for all supported formats

Bug: angleproject:7279
Change-Id: I92728112f243cccf4e4ab2c5f4c096dcc0536fc2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3654266
Commit-Queue: Geoff Lang <geof...@chromium.org>
Reviewed-by: Kenneth Russell <k...@chromium.org>
Reviewed-by: Geoff Lang <geof...@chromium.org>

[modify] https://crrev.com/f1c21d688b82349cb2e3dd9daad80285e2a0a3e6/src/tests/gl_tests/PixelLocalStorageTest.cpp
[modify] https://crrev.com/f1c21d688b82349cb2e3dd9daad80285e2a0a3e6/src/tests/test_utils/ANGLETest.cpp
[modify] https://crrev.com/f1c21d688b82349cb2e3dd9daad80285e2a0a3e6/src/tests/test_utils/ANGLETest.h

Git Watcher via monorail

unread,
Jun 13, 2022, 9:52:07 PM6/13/22
to angleproj...@googlegroups.com

Comment #26 on issue 7279 by Git Watcher: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c26


The following revision refers to this bug:
https://chromium.googlesource.com/angle/angle/+/7c01db8f9387c747733090e2060517adecfe911e

commit 7c01db8f9387c747733090e2060517adecfe911e
Author: Chris Dalton <ch...@rive.app>
Date: Sat May 14 19:24:47 2022

Add tests for loadOps in pixel local storage

Bug: angleproject:7279
Change-Id: If060bae529d9af25cbc3e941d92fe32b2b254f22
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3652702
Auto-Submit: Chris Dalton <ch...@rive.app>
Reviewed-by: Geoff Lang <geof...@chromium.org>
Reviewed-by: Kenneth Russell <k...@chromium.org>
Commit-Queue: Kenneth Russell <k...@chromium.org>

[modify] https://crrev.com/7c01db8f9387c747733090e2060517adecfe911e/src/tests/gl_tests/PixelLocalStorageTest.cpp

Git Watcher via monorail

unread,
Jun 21, 2022, 6:31:18 PM6/21/22
to angleproj...@googlegroups.com

Comment #27 on issue 7279 by Git Watcher: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c27


The following revision refers to this bug:
https://chromium.googlesource.com/angle/angle/+/d55e06557bc797c9f3506fd63eff9aadf2bbfa50

commit d55e06557bc797c9f3506fd63eff9aadf2bbfa50
Author: Chris Dalton <ch...@rive.app>
Date: Tue Jun 07 02:24:55 2022

Add pls tests for fragment reject utilities

GL utilities for rejecting fragments should also prevent stores to pls.
(Namely: discard, return from main, depth/stencil, viewport.)

Bug: angleproject:7279
Bug: angleproject:7398
Change-Id: I91aac62fc7eeb703c7bc1ff1bc0c841700fd83d5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3696676

Reviewed-by: Kenneth Russell <k...@chromium.org>
Commit-Queue: Kenneth Russell <k...@chromium.org>

Git Watcher via monorail

unread,
Jun 22, 2022, 3:56:07 PM6/22/22
to angleproj...@googlegroups.com

Comment #28 on issue 7279 by Git Watcher: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c28


The following revision refers to this bug:
https://chromium.googlesource.com/angle/angle/+/329e1f9e1480ce120d38512d154de76a0a383216

commit 329e1f9e1480ce120d38512d154de76a0a383216
Author: Chris Dalton <ch...@rive.app>
Date: Sat Jun 04 08:30:56 2022

Ensure pls results are secure even without barriers

We can't guarantee the client will always use local storage barriers
correctly, but we CAN guard local storage passes such that the results
are only nondeterministic within predictable constraints. This CL adds a
test to ensure local storage is still predictable without barriers, and
that no data is random or leaked from other contexts.


Bug: angleproject:7279
Bug: angleproject:7398
Change-Id: I70da58c8ba79b09f560315df3df956d1721ff6b9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3654265
Reviewed-by: Kenneth Russell <k...@chromium.org>

Reviewed-by: Geoff Lang <geof...@chromium.org>
Auto-Submit: Chris Dalton <ch...@rive.app>

Git Watcher via monorail

unread,
Jun 27, 2022, 2:39:08 PM6/27/22
to angleproj...@googlegroups.com

Comment #29 on issue 7279 by Git Watcher: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c29


The following revision refers to this bug:
https://chromium.googlesource.com/angle/angle/+/2adb6327e50045386516d1166ceee3c6e3d76c77

commit 2adb6327e50045386516d1166ceee3c6e3d76c77
Author: Chris Dalton <ch...@rive.app>
Date: Sat May 14 05:09:31 2022

Add a pls test for memoryless storage

Bug: angleproject:7279
Change-Id: I4a992d04efa06ac99472d5334a1ac50839a13d06
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3654973
Reviewed-by: Geoff Lang <geof...@chromium.org>
Commit-Queue: Kenneth Russell <k...@chromium.org>
Auto-Submit: Chris Dalton <ch...@rive.app>
Reviewed-by: Kenneth Russell <k...@chromium.org>

[modify] https://crrev.com/2adb6327e50045386516d1166ceee3c6e3d76c77/src/tests/gl_tests/PixelLocalStorageTest.cpp

Git Watcher via monorail

unread,
Jun 29, 2022, 8:52:15 PM6/29/22
to angleproj...@googlegroups.com

Comment #30 on issue 7279 by Git Watcher: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c30


The following revision refers to this bug:
https://chromium.googlesource.com/angle/angle/+/4884e9de1da9fc84c9ec28f009e861a95514227e

commit 4884e9de1da9fc84c9ec28f009e861a95514227e
Author: Chris Dalton <ch...@rive.app>
Date: Mon May 16 04:57:57 2022

Add a pls test for maximum capacity

Check that it works to render with the maximum supported data payload:

GL_MAX_LOCAL_STORAGE_PLANES_ANGLE
GL_MAX_LOCAL_STORAGE_BYTES_ANGLE
GL_MAX_FRAGMENT_OUTPUTS_WITH_LOCAL_STORAGE_ANGLE

Bug: angleproject:7279
Change-Id: Ifdaff726edee0378b06ce5562001ad3dfe29284b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3654974

Reviewed-by: Kenneth Russell <k...@chromium.org>
Reviewed-by: Geoff Lang <geof...@chromium.org>
Auto-Submit: Chris Dalton <ch...@rive.app>

Git Watcher via monorail

unread,
Jul 1, 2022, 7:42:07 PM7/1/22
to angleproj...@googlegroups.com

Comment #31 on issue 7279 by Git Watcher: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c31


The following revision refers to this bug:
https://chromium.googlesource.com/angle/angle/+/85b0560153e7ab2b09ccd1da3b84482dcbc81ed0

commit 85b0560153e7ab2b09ccd1da3b84482dcbc81ed0
Author: Chris Dalton <ch...@rive.app>
Date: Wed Jun 08 20:05:47 2022

Add a pls test for load-only storage

It's conceivable that an implementation may need to be careful to
preserve the pls contents when a shader doesn't call pixelLocalStore().

Bug: angleproject:7279
Change-Id: I7b7fb25dced49902fd68685d2f5aa82219ced686
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3696503

Reviewed-by: Geoff Lang <geof...@chromium.org>
Commit-Queue: Kenneth Russell <k...@chromium.org>
Auto-Submit: Chris Dalton <ch...@rive.app>

Git Watcher via monorail

unread,
Jul 1, 2022, 7:56:07 PM7/1/22
to angleproj...@googlegroups.com

Comment #32 on issue 7279 by Git Watcher: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c32


The following revision refers to this bug:
https://chromium.googlesource.com/angle/angle/+/da984303fda121cced56dfa07c6890d3b29dc502

commit da984303fda121cced56dfa07c6890d3b29dc502
Author: Chris Dalton <ch...@rive.app>
Date: Sat May 14 03:05:48 2022

Add a pls test for in-shader coherency

Stores and loads in a single shader invocation should be coherent.

Bug: angleproject:7279
Change-Id: I1a4af6fdbef21f5506bb40c9eb8f5e76c12dd6cd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3654267
Reviewed-by: Geoff Lang <geof...@chromium.org>
Reviewed-by: Kenneth Russell <k...@chromium.org>
Commit-Queue: Chris Dalton <ch...@rive.app>

[modify] https://crrev.com/da984303fda121cced56dfa07c6890d3b29dc502/src/tests/gl_tests/PixelLocalStorageTest.cpp

Git Watcher via monorail

unread,
Jul 4, 2022, 9:57:06 PM7/4/22
to angleproj...@googlegroups.com

Comment #33 on issue 7279 by Git Watcher: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c33


The following revision refers to this bug:
https://chromium.googlesource.com/angle/angle/+/86c735bfe65063bd5fc319809ea3ddb939d65319

commit 86c735bfe65063bd5fc319809ea3ddb939d65319
Author: Chris Dalton <ch...@rive.app>
Date: Sat Jul 02 00:27:10 2022

pls: Rename GL_DISABLED_ANGLE -> GL_DISABLE_ANGLE

Match the other loadOps by using the imperative form.

Bug: angleproject:7279
Change-Id: I9f3a33961f640ea5dff1da7dcea12517cfdcd461
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3741221
Reviewed-by: Shahbaz Youssefi <syou...@chromium.org>
Commit-Queue: Shahbaz Youssefi <syou...@chromium.org>

[modify] https://crrev.com/86c735bfe65063bd5fc319809ea3ddb939d65319/src/tests/gl_tests/PixelLocalStorageTest.cpp

Git Watcher via monorail

unread,
Jul 15, 2022, 4:40:06 PM7/15/22
to angleproj...@googlegroups.com

Comment #34 on issue 7279 by Git Watcher: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c34


The following revision refers to this bug:
https://chromium.googlesource.com/angle/angle/+/15cc001307871813b368c73faf2014456a70b0b9

commit 15cc001307871813b368c73faf2014456a70b0b9
Author: Chris Dalton <ch...@rive.app>
Date: Fri Jul 15 05:32:05 2022

Add a GL_ANGLE_shader_pixel_local_storage extension

Plumbs through "GL_ANGLE_shader_pixel_local_storage" and
"GL_ANGLE_shader_pixel_local_storage_coherent" extension strings
advertised by ANGLE and stubs out an initial spec document. This change
doesn't add any new procedures or shader constructs, but it does allow
the PLS tests to start checking for the real extension strings and
requiring the GL_ANGLE_shader_pixel_local_storage extension.

Bug: angleproject:7279
Change-Id: I36877fe4117185a2121f803288123cd69a447cf3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3739590
Reviewed-by: Shahbaz Youssefi <syou...@chromium.org>

Reviewed-by: Kenneth Russell <k...@chromium.org>
Commit-Queue: Chris Dalton <ch...@rive.app>

[modify] https://crrev.com/15cc001307871813b368c73faf2014456a70b0b9/src/libANGLE/Context_gles_ext_autogen.h
[add] https://crrev.com/15cc001307871813b368c73faf2014456a70b0b9/extensions/ANGLE_shader_pixel_local_storage.txt
[modify] https://crrev.com/15cc001307871813b368c73faf2014456a70b0b9/doc/ExtensionSupport.md
[modify] https://crrev.com/15cc001307871813b368c73faf2014456a70b0b9/src/compiler/translator/ShaderLang.cpp
[modify] https://crrev.com/15cc001307871813b368c73faf2014456a70b0b9/src/tests/angle_end2end_tests_expectations.txt
[modify] https://crrev.com/15cc001307871813b368c73faf2014456a70b0b9/src/compiler/translator/ExtensionBehavior.h
[modify] https://crrev.com/15cc001307871813b368c73faf2014456a70b0b9/include/platform/frontend_features.json
[modify] https://crrev.com/15cc001307871813b368c73faf2014456a70b0b9/src/libANGLE/Context.cpp
[modify] https://crrev.com/15cc001307871813b368c73faf2014456a70b0b9/src/compiler/translator/TranslatorESSL.cpp
[modify] https://crrev.com/15cc001307871813b368c73faf2014456a70b0b9/src/compiler/translator/Initialize.cpp
[modify] https://crrev.com/15cc001307871813b368c73faf2014456a70b0b9/scripts/code_generation_hashes/GL_EGL_WGL_loader.json
[modify] https://crrev.com/15cc001307871813b368c73faf2014456a70b0b9/src/libANGLE/gen_extensions.py
[modify] https://crrev.com/15cc001307871813b368c73faf2014456a70b0b9/src/libANGLE/gles_extensions_autogen.cpp
[modify] https://crrev.com/15cc001307871813b368c73faf2014456a70b0b9/include/platform/FrontendFeatures_autogen.h
[modify] https://crrev.com/15cc001307871813b368c73faf2014456a70b0b9/src/libANGLE/Compiler.cpp
[modify] https://crrev.com/15cc001307871813b368c73faf2014456a70b0b9/scripts/code_generation_hashes/GL_EGL_entry_points.json
[modify] https://crrev.com/15cc001307871813b368c73faf2014456a70b0b9/scripts/registry_xml.py
[modify] https://crrev.com/15cc001307871813b368c73faf2014456a70b0b9/src/libANGLE/Display.cpp
[modify] https://crrev.com/15cc001307871813b368c73faf2014456a70b0b9/util/angle_features_autogen.cpp
[modify] https://crrev.com/15cc001307871813b368c73faf2014456a70b0b9/scripts/code_generation_hashes/proc_table.json
[modify] https://crrev.com/15cc001307871813b368c73faf2014456a70b0b9/src/tests/gl_tests/PixelLocalStorageTest.cpp
[modify] https://crrev.com/15cc001307871813b368c73faf2014456a70b0b9/util/angle_features_autogen.h
[modify] https://crrev.com/15cc001307871813b368c73faf2014456a70b0b9/scripts/code_generation_hashes/Extension_files.json
[modify] https://crrev.com/15cc001307871813b368c73faf2014456a70b0b9/src/compiler/translator/ExtensionBehavior.cpp
[modify] https://crrev.com/15cc001307871813b368c73faf2014456a70b0b9/src/libANGLE/gles_extensions_autogen.h
[modify] https://crrev.com/15cc001307871813b368c73faf2014456a70b0b9/scripts/code_generation_hashes/ANGLE_features.json
[modify] https://crrev.com/15cc001307871813b368c73faf2014456a70b0b9/include/GLSLANG/ShaderLang.h
[modify] https://crrev.com/15cc001307871813b368c73faf2014456a70b0b9/scripts/code_generation_hashes/GLenum_value_to_string_map.json

Git Watcher via monorail

unread,
Jul 21, 2022, 10:59:06 AM7/21/22
to angleproj...@googlegroups.com

Comment #35 on issue 7279 by Git Watcher: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c35


The following revision refers to this bug:
https://chromium.googlesource.com/angle/angle/+/c460c29914536bbbfe5d1bd8ce3b955892a1c7cf

commit c460c29914536bbbfe5d1bd8ce3b955892a1c7cf
Author: Chris Dalton <ch...@rive.app>
Date: Tue Jun 21 17:20:45 2022

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 <syou...@chromium.org>
Commit-Queue: Chris Dalton <ch...@rive.app>
Reviewed-by: Kenneth Russell <k...@chromium.org>

[modify] https://crrev.com/c460c29914536bbbfe5d1bd8ce3b955892a1c7cf/src/compiler/translator/tree_util/BuiltIn_complete_autogen.h
[modify] https://crrev.com/c460c29914536bbbfe5d1bd8ce3b955892a1c7cf/src/compiler/translator/Types.cpp
[modify] https://crrev.com/c460c29914536bbbfe5d1bd8ce3b955892a1c7cf/src/compiler/translator/glslang_tab_autogen.h
[modify] https://crrev.com/c460c29914536bbbfe5d1bd8ce3b955892a1c7cf/extensions/ANGLE_shader_pixel_local_storage.txt
[modify] https://crrev.com/c460c29914536bbbfe5d1bd8ce3b955892a1c7cf/src/compiler/translator/util.cpp
[modify] https://crrev.com/c460c29914536bbbfe5d1bd8ce3b955892a1c7cf/src/compiler.gni
[modify] https://crrev.com/c460c29914536bbbfe5d1bd8ce3b955892a1c7cf/src/compiler/translator/Compiler.cpp
[modify] https://crrev.com/c460c29914536bbbfe5d1bd8ce3b955892a1c7cf/src/compiler/translator/builtin_function_declarations.txt
[modify] https://crrev.com/c460c29914536bbbfe5d1bd8ce3b955892a1c7cf/src/compiler/translator/glslang_lex_autogen.cpp
[modify] https://crrev.com/c460c29914536bbbfe5d1bd8ce3b955892a1c7cf/src/compiler/translator/ImmutableString_autogen.cpp
[modify] https://crrev.com/c460c29914536bbbfe5d1bd8ce3b955892a1c7cf/src/compiler/translator/gen_builtin_symbols.py
[modify] https://crrev.com/c460c29914536bbbfe5d1bd8ce3b955892a1c7cf/src/compiler/translator/glslang_tab_autogen.cpp
[modify] https://crrev.com/c460c29914536bbbfe5d1bd8ce3b955892a1c7cf/CONTRIBUTORS
[modify] https://crrev.com/c460c29914536bbbfe5d1bd8ce3b955892a1c7cf/src/compiler/translator/ImmutableString_ESSL_autogen.cpp
[modify] https://crrev.com/c460c29914536bbbfe5d1bd8ce3b955892a1c7cf/src/compiler/translator/tree_util/BuiltIn_ESSL_autogen.h
[add] https://crrev.com/c460c29914536bbbfe5d1bd8ce3b955892a1c7cf/src/compiler/translator/tree_ops/RewritePixelLocalStorage.h
[modify] https://crrev.com/c460c29914536bbbfe5d1bd8ce3b955892a1c7cf/src/compiler/translator/BaseTypes.h
[modify] https://crrev.com/c460c29914536bbbfe5d1bd8ce3b955892a1c7cf/src/compiler/translator/ParseContext.h
[modify] https://crrev.com/c460c29914536bbbfe5d1bd8ce3b955892a1c7cf/src/compiler/translator/SymbolTable_ESSL_autogen.cpp
[modify] https://crrev.com/c460c29914536bbbfe5d1bd8ce3b955892a1c7cf/scripts/code_generation_hashes/Static_builtins.json
[modify] https://crrev.com/c460c29914536bbbfe5d1bd8ce3b955892a1c7cf/AUTHORS
[modify] https://crrev.com/c460c29914536bbbfe5d1bd8ce3b955892a1c7cf/src/tests/compiler_tests/ImmutableString_test_autogen.cpp
[modify] https://crrev.com/c460c29914536bbbfe5d1bd8ce3b955892a1c7cf/src/compiler/translator/glslang.l
[modify] https://crrev.com/c460c29914536bbbfe5d1bd8ce3b955892a1c7cf/src/tests/compiler_tests/ImmutableString_test_ESSL_autogen.cpp
[modify] https://crrev.com/c460c29914536bbbfe5d1bd8ce3b955892a1c7cf/src/compiler/translator/ParseContext.cpp
[modify] https://crrev.com/c460c29914536bbbfe5d1bd8ce3b955892a1c7cf/src/compiler/translator/glslang.y
[modify] https://crrev.com/c460c29914536bbbfe5d1bd8ce3b955892a1c7cf/scripts/code_generation_hashes/ANGLE_shader_translator.json
[add] https://crrev.com/c460c29914536bbbfe5d1bd8ce3b955892a1c7cf/src/compiler/translator/tree_ops/RewritePixelLocalStorage.cpp
[modify] https://crrev.com/c460c29914536bbbfe5d1bd8ce3b955892a1c7cf/src/compiler/translator/SymbolTable_autogen.cpp
[modify] https://crrev.com/c460c29914536bbbfe5d1bd8ce3b955892a1c7cf/src/tests/gl_tests/PixelLocalStorageTest.cpp
[modify] https://crrev.com/c460c29914536bbbfe5d1bd8ce3b955892a1c7cf/src/compiler/translator/Operator_autogen.h

Git Watcher via monorail

unread,
Jul 21, 2022, 6:59:06 PM7/21/22
to angleproj...@googlegroups.com

Comment #36 on issue 7279 by Git Watcher: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c36


The following revision refers to this bug:
https://chromium.googlesource.com/angle/angle/+/77aa34ae10fa0e97ca1e1f3aab1a3dbccda85e4d

commit 77aa34ae10fa0e97ca1e1f3aab1a3dbccda85e4d
Author: Chris Dalton <ch...@rive.app>
Date: Sat Jul 16 19:08:00 2022

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 <syou...@chromium.org>
Commit-Queue: Chris Dalton <ch...@rive.app>

[modify] https://crrev.com/77aa34ae10fa0e97ca1e1f3aab1a3dbccda85e4d/src/compiler/translator/Types.h
[modify] https://crrev.com/77aa34ae10fa0e97ca1e1f3aab1a3dbccda85e4d/src/compiler/translator/tree_ops/RewritePixelLocalStorage.cpp
[modify] https://crrev.com/77aa34ae10fa0e97ca1e1f3aab1a3dbccda85e4d/src/tests/gl_tests/PixelLocalStorageTest.cpp
[modify] https://crrev.com/77aa34ae10fa0e97ca1e1f3aab1a3dbccda85e4d/src/compiler/translator/Compiler.cpp
[modify] https://crrev.com/77aa34ae10fa0e97ca1e1f3aab1a3dbccda85e4d/src/compiler/translator/tree_ops/MonomorphizeUnsupportedFunctions.cpp
[modify] https://crrev.com/77aa34ae10fa0e97ca1e1f3aab1a3dbccda85e4d/src/compiler/translator/tree_ops/MonomorphizeUnsupportedFunctions.h
[modify] https://crrev.com/77aa34ae10fa0e97ca1e1f3aab1a3dbccda85e4d/src/compiler/translator/TranslatorVulkan.cpp
[modify] https://crrev.com/77aa34ae10fa0e97ca1e1f3aab1a3dbccda85e4d/src/compiler/translator/TranslatorMetalDirect.cpp
[modify] https://crrev.com/77aa34ae10fa0e97ca1e1f3aab1a3dbccda85e4d/src/compiler/translator/tree_ops/RewritePixelLocalStorage.h

Git Watcher via monorail

unread,
Jul 21, 2022, 7:46:06 PM7/21/22
to angleproj...@googlegroups.com

Comment #37 on issue 7279 by Git Watcher: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c37


The following revision refers to this bug:
https://chromium.googlesource.com/angle/angle/+/aa7e6751ab8eaa5619b63b10c2dd8a70eed9aaa8

commit aa7e6751ab8eaa5619b63b10c2dd8a70eed9aaa8
Author: Chris Dalton <ch...@rive.app>
Date: Sat Jul 16 05:33:30 2022

Automatically enable early_fragment_tests when PLS is declared

When PLS is polyfilled by shader images, we need early_fragment_tests in
order to match the same depth/stencil behavior as when it is implemented
as framebuffer fetch.

Bug: angleproject:7279
Change-Id: I37f5a8682cc96a14ef247d53ed243e4aceb15f39
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3767535
Reviewed-by: Geoff Lang <geof...@chromium.org>

Reviewed-by: Shahbaz Youssefi <syou...@chromium.org>
Commit-Queue: Chris Dalton <ch...@rive.app>

Git Watcher via monorail

unread,
Jul 21, 2022, 7:59:06 PM7/21/22
to angleproj...@googlegroups.com

Comment #38 on issue 7279 by Git Watcher: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c38


The following revision refers to this bug:
https://chromium.googlesource.com/angle/angle/+/d57ce8150d5ae6d6dcfff1f12f8dac866ff1d0c0

commit d57ce8150d5ae6d6dcfff1f12f8dac866ff1d0c0
Author: Chris Dalton <ch...@rive.app>
Date: Sat Jul 16 22:33:08 2022

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

Git Watcher via monorail

unread,
Jul 22, 2022, 2:14:21 PM7/22/22
to angleproj...@googlegroups.com

Comment #39 on issue 7279 by Git Watcher: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c39


The following revision refers to this bug:
https://chromium.googlesource.com/angle/angle/+/90fa855b4c298b9b516bcf0a85ce6de64181fb45

commit 90fa855b4c298b9b516bcf0a85ce6de64181fb45
Author: Chris Dalton <ch...@rive.app>
Date: Fri Jul 22 16:11:01 2022

Suppress the early_fragment_tests PLS test on Pixel 6

Bug: angleproject:7279
Change-Id: Id56d43f9061e9f6d08388ff49b2f65a88408c145
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3782862
Commit-Queue: Chris Dalton <ch...@rive.app>
Reviewed-by: Yuly Novikov <ynov...@chromium.org>

[modify] https://crrev.com/90fa855b4c298b9b516bcf0a85ce6de64181fb45/src/tests/angle_end2end_tests_expectations.txt

Git Watcher via monorail

unread,
Aug 4, 2022, 10:05:10 AM8/4/22
to angleproj...@googlegroups.com

Comment #40 on issue 7279 by Git Watcher: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c40


The following revision refers to this bug:
https://chromium.googlesource.com/angle/angle/+/861149c7ace5f21c88148ce90120a2690c467557

commit 861149c7ace5f21c88148ce90120a2690c467557
Author: Chris Dalton <ch...@rive.app>
Date: Wed Aug 03 21:43:29 2022

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 <syou...@chromium.org>
Commit-Queue: Shahbaz Youssefi <syou...@chromium.org>
Reviewed-by: Geoff Lang <geof...@chromium.org>

[modify] https://crrev.com/861149c7ace5f21c88148ce90120a2690c467557/src/compiler/translator/tree_util/BuiltIn_complete_autogen.h
[modify] https://crrev.com/861149c7ace5f21c88148ce90120a2690c467557/src/libANGLE/renderer/gl/CompilerGL.h
[modify] https://crrev.com/861149c7ace5f21c88148ce90120a2690c467557/src/compiler/translator/tree_ops/vulkan/ReplaceForShaderFramebufferFetch.cpp
[modify] https://crrev.com/861149c7ace5f21c88148ce90120a2690c467557/src/libANGLE/renderer/gl/renderergl_utils.cpp
[modify] https://crrev.com/861149c7ace5f21c88148ce90120a2690c467557/src/compiler/translator/tree_util/IntermNode_util.cpp
[modify] https://crrev.com/861149c7ace5f21c88148ce90120a2690c467557/src/compiler/translator/ExtensionBehavior.h
[modify] https://crrev.com/861149c7ace5f21c88148ce90120a2690c467557/src/compiler/translator/builtin_function_declarations.txt
[modify] https://crrev.com/861149c7ace5f21c88148ce90120a2690c467557/src/libANGLE/Context.cpp
[modify] https://crrev.com/861149c7ace5f21c88148ce90120a2690c467557/src/compiler/translator/ImmutableString_autogen.cpp
[modify] https://crrev.com/861149c7ace5f21c88148ce90120a2690c467557/src/compiler/translator/gen_builtin_symbols.py
[modify] https://crrev.com/861149c7ace5f21c88148ce90120a2690c467557/include/platform/Feature.h
[modify] https://crrev.com/861149c7ace5f21c88148ce90120a2690c467557/src/compiler/translator/ImmutableString_ESSL_autogen.cpp
[modify] https://crrev.com/861149c7ace5f21c88148ce90120a2690c467557/src/compiler/translator/tree_util/BuiltIn_ESSL_autogen.h
[modify] https://crrev.com/861149c7ace5f21c88148ce90120a2690c467557/src/libANGLE/renderer/gl/CompilerGL.cpp
[modify] https://crrev.com/861149c7ace5f21c88148ce90120a2690c467557/src/libANGLE/Compiler.cpp
[modify] https://crrev.com/861149c7ace5f21c88148ce90120a2690c467557/src/compiler/translator/SymbolTable_ESSL_autogen.cpp
[modify] https://crrev.com/861149c7ace5f21c88148ce90120a2690c467557/scripts/code_generation_hashes/Static_builtins.json
[modify] https://crrev.com/861149c7ace5f21c88148ce90120a2690c467557/src/tests/compiler_tests/ImmutableString_test_autogen.cpp
[modify] https://crrev.com/861149c7ace5f21c88148ce90120a2690c467557/include/platform/FeaturesGL_autogen.h
[modify] https://crrev.com/861149c7ace5f21c88148ce90120a2690c467557/src/libANGLE/renderer/gl/ContextGL.cpp
[modify] https://crrev.com/861149c7ace5f21c88148ce90120a2690c467557/src/tests/compiler_tests/ImmutableString_test_ESSL_autogen.cpp
[modify] https://crrev.com/861149c7ace5f21c88148ce90120a2690c467557/include/platform/gl_features.json
[modify] https://crrev.com/861149c7ace5f21c88148ce90120a2690c467557/src/compiler/translator/tree_ops/vulkan/EmulateAdvancedBlendEquations.cpp
[modify] https://crrev.com/861149c7ace5f21c88148ce90120a2690c467557/util/angle_features_autogen.cpp
[modify] https://crrev.com/861149c7ace5f21c88148ce90120a2690c467557/src/compiler/translator/tree_util/IntermNode_util.h
[modify] https://crrev.com/861149c7ace5f21c88148ce90120a2690c467557/src/compiler/translator/tree_ops/RewritePixelLocalStorage.cpp
[modify] https://crrev.com/861149c7ace5f21c88148ce90120a2690c467557/src/libANGLE/renderer/null/ContextNULL.cpp
[modify] https://crrev.com/861149c7ace5f21c88148ce90120a2690c467557/src/compiler/translator/SymbolTable_autogen.cpp
[modify] https://crrev.com/861149c7ace5f21c88148ce90120a2690c467557/util/angle_features_autogen.h
[modify] https://crrev.com/861149c7ace5f21c88148ce90120a2690c467557/src/tests/gl_tests/PixelLocalStorageTest.cpp
[modify] https://crrev.com/861149c7ace5f21c88148ce90120a2690c467557/src/libANGLE/renderer/vulkan/vk_caps_utils.cpp
[modify] https://crrev.com/861149c7ace5f21c88148ce90120a2690c467557/src/compiler/translator/IntermNode.h
[modify] https://crrev.com/861149c7ace5f21c88148ce90120a2690c467557/src/compiler/translator/ExtensionGLSL.cpp
[modify] https://crrev.com/861149c7ace5f21c88148ce90120a2690c467557/src/compiler/translator/IntermNode.cpp
[modify] https://crrev.com/861149c7ace5f21c88148ce90120a2690c467557/src/compiler/translator/Operator_autogen.h
[modify] https://crrev.com/861149c7ace5f21c88148ce90120a2690c467557/src/compiler/translator/SymbolTable.h
[modify] https://crrev.com/861149c7ace5f21c88148ce90120a2690c467557/scripts/code_generation_hashes/ANGLE_features.json
[modify] https://crrev.com/861149c7ace5f21c88148ce90120a2690c467557/include/GLSLANG/ShaderLang.h
[modify] https://crrev.com/861149c7ace5f21c88148ce90120a2690c467557/src/libANGLE/renderer/CompilerImpl.h

Git Watcher via monorail

unread,
Aug 8, 2022, 3:20:24 PM8/8/22
to angleproj...@googlegroups.com

Comment #41 on issue 7279 by Git Watcher: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c41


The following revision refers to this bug:
https://chromium.googlesource.com/angle/angle/+/c554b92b1751761abd2b2163571d8769c5d26a9d

commit c554b92b1751761abd2b2163571d8769c5d26a9d
Author: Chris Dalton <ch...@rive.app>
Date: Mon Aug 08 16:08:33 2022

Apply memory qualifier decorations in SPIR-V

Bug: angleproject:7279
Change-Id: I9390261aa572fe4b39152a6f7bdd2b100b34f616
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3818162

Reviewed-by: Shahbaz Youssefi <syou...@chromium.org>
Commit-Queue: Shahbaz Youssefi <syou...@chromium.org>

Git Watcher via monorail

unread,
Aug 10, 2022, 1:28:12 PM8/10/22
to angleproj...@googlegroups.com

Comment #42 on issue 7279 by Git Watcher: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c42


The following revision refers to this bug:
https://chromium.googlesource.com/angle/angle/+/7c6a5459d52ffa6204a0b178f43f1c232542a91b

commit 7c6a5459d52ffa6204a0b178f43f1c232542a91b
Author: Chris Dalton <ch...@rive.app>
Date: Wed Aug 10 16:09:18 2022

Rename ShFragmentSynchronizationType::None -> NoSynchronization

Use a less generic name. X11.h contains:

#define None 0L /* universal null resource or null atom */

Bug: angleproject:7279
Change-Id: I7d245b9f771211dea151bfc12363a03374264ac4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3824717

Reviewed-by: Shahbaz Youssefi <syou...@chromium.org>
Commit-Queue: Shahbaz Youssefi <syou...@chromium.org>

Git Watcher via monorail

unread,
Aug 11, 2022, 1:21:10 PM8/11/22
to angleproj...@googlegroups.com

Comment #43 on issue 7279 by Git Watcher: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c43


The following revision refers to this bug:
https://chromium.googlesource.com/angle/angle/+/47d2df0ec2eeb2195551fb4d2d9c89d8132af89b

commit 47d2df0ec2eeb2195551fb4d2d9c89d8132af89b
Author: Shahbaz Youssefi <syou...@chromium.org>
Date: Wed Aug 10 19:15:18 2022

Presubmit: Verify ANGLE_SH_VERSION update

... when ShaderLang.h or ShaderVars.h change.

Bug: angleproject:7279
Change-Id: I01f6035ad41a4d92cc9e5d1e509731bb2ff29047
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3823619
Reviewed-by: Roman Lavrov <rom...@google.com>
Commit-Queue: Roman Lavrov <rom...@google.com>
Auto-Submit: Shahbaz Youssefi <syou...@chromium.org>

[modify] https://crrev.com/47d2df0ec2eeb2195551fb4d2d9c89d8132af89b/scripts/angle_presubmit_utils_unittest.py
[modify] https://crrev.com/47d2df0ec2eeb2195551fb4d2d9c89d8132af89b/PRESUBMIT.py
[modify] https://crrev.com/47d2df0ec2eeb2195551fb4d2d9c89d8132af89b/scripts/angle_presubmit_utils.py

Git Watcher via monorail

unread,
Aug 11, 2022, 2:03:07 PM8/11/22
to angleproj...@googlegroups.com

Comment #44 on issue 7279 by Git Watcher: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c44


The following revision refers to this bug:
https://chromium.googlesource.com/angle/angle/+/fa3d7d5cd03c272e5cffb6e695678a1ef6bec1c7

commit fa3d7d5cd03c272e5cffb6e695678a1ef6bec1c7
Author: Chris Dalton <ch...@rive.app>
Date: Fri Aug 05 06:57:40 2022

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 <syou...@chromium.org>
Commit-Queue: Chris Dalton <ch...@rive.app>
Reviewed-by: Geoff Lang <geof...@chromium.org>

[modify] https://crrev.com/fa3d7d5cd03c272e5cffb6e695678a1ef6bec1c7/src/compiler/translator/OutputSPIRV.cpp
[modify] https://crrev.com/fa3d7d5cd03c272e5cffb6e695678a1ef6bec1c7/src/libANGLE/renderer/vulkan/ShaderVk.cpp
[modify] https://crrev.com/fa3d7d5cd03c272e5cffb6e695678a1ef6bec1c7/src/libANGLE/renderer/gl/CompilerGL.h
[modify] https://crrev.com/fa3d7d5cd03c272e5cffb6e695678a1ef6bec1c7/src/libANGLE/renderer/vulkan/RendererVk.cpp
[modify] https://crrev.com/fa3d7d5cd03c272e5cffb6e695678a1ef6bec1c7/src/libANGLE/renderer/vulkan/RendererVk.h
[modify] https://crrev.com/fa3d7d5cd03c272e5cffb6e695678a1ef6bec1c7/src/common/spirv/spirv_instruction_builder_autogen.h
[modify] https://crrev.com/fa3d7d5cd03c272e5cffb6e695678a1ef6bec1c7/include/platform/vk_features.json
[modify] https://crrev.com/fa3d7d5cd03c272e5cffb6e695678a1ef6bec1c7/src/common/spirv/spirv_instruction_builder_autogen.cpp
[modify] https://crrev.com/fa3d7d5cd03c272e5cffb6e695678a1ef6bec1c7/src/common/spirv/gen_spirv_builder_and_parser.py
[modify] https://crrev.com/fa3d7d5cd03c272e5cffb6e695678a1ef6bec1c7/util/angle_features_autogen.cpp
[modify] https://crrev.com/fa3d7d5cd03c272e5cffb6e695678a1ef6bec1c7/scripts/code_generation_hashes/SPIR-V_helpers.json
[modify] https://crrev.com/fa3d7d5cd03c272e5cffb6e695678a1ef6bec1c7/src/compiler/translator/tree_ops/RewritePixelLocalStorage.cpp
[modify] https://crrev.com/fa3d7d5cd03c272e5cffb6e695678a1ef6bec1c7/src/compiler/translator/BuildSPIRV.h
[modify] https://crrev.com/fa3d7d5cd03c272e5cffb6e695678a1ef6bec1c7/src/libANGLE/renderer/vulkan/vk_caps_utils.cpp
[modify] https://crrev.com/fa3d7d5cd03c272e5cffb6e695678a1ef6bec1c7/util/angle_features_autogen.h
[modify] https://crrev.com/fa3d7d5cd03c272e5cffb6e695678a1ef6bec1c7/src/tests/gl_tests/PixelLocalStorageTest.cpp
[modify] https://crrev.com/fa3d7d5cd03c272e5cffb6e695678a1ef6bec1c7/include/platform/FeaturesVk_autogen.h
[modify] https://crrev.com/fa3d7d5cd03c272e5cffb6e695678a1ef6bec1c7/scripts/code_generation_hashes/ANGLE_features.json
[modify] https://crrev.com/fa3d7d5cd03c272e5cffb6e695678a1ef6bec1c7/src/compiler/translator/BuildSPIRV.cpp

Git Watcher via monorail

unread,
Aug 11, 2022, 2:06:17 PM8/11/22
to angleproj...@googlegroups.com

Comment #45 on issue 7279 by Git Watcher: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c45


The following revision refers to this bug:
https://chromium.googlesource.com/angle/angle/+/4a636cdd411c9979ae6f2fb4da52ea017bf47d8d

commit 4a636cdd411c9979ae6f2fb4da52ea017bf47d8d
Author: Chris Dalton <ch...@rive.app>
Date: Thu Jul 21 04:44:30 2022

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 <senor...@chromium.org>
Reviewed-by: Geoff Lang <geof...@chromium.org>

Reviewed-by: Shahbaz Youssefi <syou...@chromium.org>
Commit-Queue: Chris Dalton <ch...@rive.app>

[modify] https://crrev.com/4a636cdd411c9979ae6f2fb4da52ea017bf47d8d/extensions/ANGLE_shader_pixel_local_storage.txt
[modify] https://crrev.com/4a636cdd411c9979ae6f2fb4da52ea017bf47d8d/src/libANGLE/renderer/gl/ShaderGL.cpp
[modify] https://crrev.com/4a636cdd411c9979ae6f2fb4da52ea017bf47d8d/src/libANGLE/renderer/gl/renderergl_utils.cpp
[modify] https://crrev.com/4a636cdd411c9979ae6f2fb4da52ea017bf47d8d/src/compiler/translator/tree_util/IntermNode_util.cpp
[modify] https://crrev.com/4a636cdd411c9979ae6f2fb4da52ea017bf47d8d/src/tests/angle_end2end_tests_expectations.txt
[modify] https://crrev.com/4a636cdd411c9979ae6f2fb4da52ea017bf47d8d/include/platform/FeaturesGL_autogen.h
[modify] https://crrev.com/4a636cdd411c9979ae6f2fb4da52ea017bf47d8d/include/platform/gl_features.json
[modify] https://crrev.com/4a636cdd411c9979ae6f2fb4da52ea017bf47d8d/src/compiler/translator/ParseContext.cpp
[modify] https://crrev.com/4a636cdd411c9979ae6f2fb4da52ea017bf47d8d/util/angle_features_autogen.cpp
[modify] https://crrev.com/4a636cdd411c9979ae6f2fb4da52ea017bf47d8d/src/compiler/translator/tree_util/IntermNode_util.h
[modify] https://crrev.com/4a636cdd411c9979ae6f2fb4da52ea017bf47d8d/src/compiler/translator/tree_ops/RewritePixelLocalStorage.cpp
[modify] https://crrev.com/4a636cdd411c9979ae6f2fb4da52ea017bf47d8d/util/angle_features_autogen.h
[modify] https://crrev.com/4a636cdd411c9979ae6f2fb4da52ea017bf47d8d/src/tests/gl_tests/PixelLocalStorageTest.cpp
[modify] https://crrev.com/4a636cdd411c9979ae6f2fb4da52ea017bf47d8d/scripts/code_generation_hashes/ANGLE_features.json
[modify] https://crrev.com/4a636cdd411c9979ae6f2fb4da52ea017bf47d8d/include/GLSLANG/ShaderLang.h

Git Watcher via monorail

unread,
Aug 12, 2022, 10:01:06 AM8/12/22
to angleproj...@googlegroups.com

Comment #46 on issue 7279 by Git Watcher: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c46


The following revision refers to this bug:
https://chromium.googlesource.com/angle/angle/+/67e0c6fcc974b89c408af988ecfc98d2ef892e1b

commit 67e0c6fcc974b89c408af988ecfc98d2ef892e1b
Author: Shahbaz Youssefi <syou...@chromium.org>
Date: Fri Aug 12 02:10:36 2022

PRESUBMIT: Remove unnecessary escape of forward slash

Bug: angleproject:7279
Change-Id: Icf9482fb83c60640d5af6380674b9d857aa9ff0b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3828443
Reviewed-by: Roman Lavrov <rom...@google.com>
Auto-Submit: Shahbaz Youssefi <syou...@chromium.org>
Commit-Queue: Roman Lavrov <rom...@google.com>

[modify] https://crrev.com/67e0c6fcc974b89c408af988ecfc98d2ef892e1b/PRESUBMIT.py

Git Watcher via monorail

unread,
Aug 22, 2022, 10:46:25 PM8/22/22
to angleproj...@googlegroups.com

Comment #47 on issue 7279 by Git Watcher: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c47


The following revision refers to this bug:
https://chromium.googlesource.com/angle/angle/+/6fde3568a14f816d235a432dc099be4a4dd16d68

commit 6fde3568a14f816d235a432dc099be4a4dd16d68
Author: Chris Dalton <ch...@rive.app>
Date: Tue Aug 09 22:42:17 2022

Spec out the PLS client API

Drafts the additions to the OpenGL ES 3.0 spec for pixel local storage.

Bug: angleproject:7279
Change-Id: Ibc0d227142ac51f5d3820f27c9114779d846ffc2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3824171
Commit-Queue: Shahbaz Youssefi <syou...@chromium.org>

Reviewed-by: Shahbaz Youssefi <syou...@chromium.org>
Reviewed-by: Kenneth Russell <k...@chromium.org>

Git Watcher via monorail

unread,
Aug 25, 2022, 5:47:19 PM8/25/22
to angleproj...@googlegroups.com

Git Watcher via monorail

unread,
Aug 25, 2022, 7:16:10 PM8/25/22
to angleproj...@googlegroups.com

Comment #49 on issue 7279 by Git Watcher: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c49


The following revision refers to this bug:
https://chromium.googlesource.com/angle/angle/+/9d41585e1408603a254fe661a8c49248740ab9a7

commit 9d41585e1408603a254fe661a8c49248740ab9a7
Author: Chris Dalton <ch...@rive.app>
Date: Fri Aug 12 20:20:34 2022

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 <syou...@chromium.org>
Reviewed-by: Geoff Lang <geof...@chromium.org>
Commit-Queue: Chris Dalton <ch...@rive.app>

[modify] https://crrev.com/9d41585e1408603a254fe661a8c49248740ab9a7/src/compiler/translator/BaseTypes.h
[modify] https://crrev.com/9d41585e1408603a254fe661a8c49248740ab9a7/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp
[modify] https://crrev.com/9d41585e1408603a254fe661a8c49248740ab9a7/src/compiler/translator/ShaderVars.cpp
[modify] https://crrev.com/9d41585e1408603a254fe661a8c49248740ab9a7/include/GLSLANG/ShaderVars.h
[modify] https://crrev.com/9d41585e1408603a254fe661a8c49248740ab9a7/src/compiler/translator/tree_ops/EmulateMultiDrawShaderBuiltins.cpp
[modify] https://crrev.com/9d41585e1408603a254fe661a8c49248740ab9a7/src/compiler/translator/ResourcesHLSL.cpp
[modify] https://crrev.com/9d41585e1408603a254fe661a8c49248740ab9a7/src/compiler/translator/tree_ops/RewritePixelLocalStorage.cpp
[modify] https://crrev.com/9d41585e1408603a254fe661a8c49248740ab9a7/src/libANGLE/renderer/d3d/d3d11/renderer11_utils.cpp
[modify] https://crrev.com/9d41585e1408603a254fe661a8c49248740ab9a7/src/libANGLE/renderer/d3d/DynamicImage2DHLSL.cpp
[modify] https://crrev.com/9d41585e1408603a254fe661a8c49248740ab9a7/src/libANGLE/renderer/d3d/ShaderD3D.cpp
[modify] https://crrev.com/9d41585e1408603a254fe661a8c49248740ab9a7/src/libANGLE/renderer/d3d/d3d11/Renderer11.h
[modify] https://crrev.com/9d41585e1408603a254fe661a8c49248740ab9a7/src/libANGLE/Program.cpp
[modify] https://crrev.com/9d41585e1408603a254fe661a8c49248740ab9a7/include/GLSLANG/ShaderLang.h
[modify] https://crrev.com/9d41585e1408603a254fe661a8c49248740ab9a7/src/compiler/translator/CollectVariables.cpp

Git Watcher via monorail

unread,
Sep 1, 2022, 12:32:07 PM9/1/22
to angleproj...@googlegroups.com

Comment #50 on issue 7279 by Git Watcher: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c50


The following revision refers to this bug:
https://chromium.googlesource.com/angle/angle/+/d0fad24cef627981164676001469c7805d063adc

commit d0fad24cef627981164676001469c7805d063adc
Author: Chris Dalton <ch...@rive.app>
Date: Wed Aug 31 05:24:06 2022

Add noncoherent PLS tests

Coherent pixel local storage is so widely supported now that we have a
testing gap on the noncoherent version. This change adds backend
features to disable the extensions we use for fragment synchronization
and tests that disable them.

Bug: angleproject:7279
Change-Id: If71a1a1016922cb9e3b68024dd2616483c700395
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3866163

Commit-Queue: Shahbaz Youssefi <syou...@chromium.org>
Reviewed-by: Shahbaz Youssefi <syou...@chromium.org>

Git Watcher via monorail

unread,
Sep 14, 2022, 4:54:07 PM9/14/22
to angleproj...@googlegroups.com

Comment #51 on issue 7279 by Git Watcher: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c51


The following revision refers to this bug:
https://chromium.googlesource.com/angle/angle/+/7822c9df9f098f405a1e08f4f5bd7a205c4f51e3

commit 7822c9df9f098f405a1e08f4f5bd7a205c4f51e3
Author: Chris Dalton <ch...@rive.app>
Date: Sat Sep 10 20:17:21 2022

Delete FramebufferPixelLocalClearValue{f,i,ui}vANGLE

Instead, BeginPixelLocalStorageANGLE just accepts a buffer containing
clear values. In WebGL, the clear data can be an array of Numbers. This
makes the API smaller, simpler, and less stateful and bug-prone.

Bug: angleproject:7279
Change-Id: I8b3fa4ae7f20ba3ad72beb01f275acf50eee803c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3888960
Commit-Queue: Chris Dalton <ch...@rive.app>
Reviewed-by: Kenneth Russell <k...@chromium.org>
Reviewed-by: Shahbaz Youssefi <syou...@chromium.org>

[modify] https://crrev.com/7822c9df9f098f405a1e08f4f5bd7a205c4f51e3/src/tests/gl_tests/PixelLocalStorageTest.cpp
[modify] https://crrev.com/7822c9df9f098f405a1e08f4f5bd7a205c4f51e3/extensions/ANGLE_shader_pixel_local_storage.txt

Git Watcher via monorail

unread,
Sep 14, 2022, 5:38:08 PM9/14/22
to angleproj...@googlegroups.com

Comment #52 on issue 7279 by Git Watcher: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c52


The following revision refers to this bug:
https://chromium.googlesource.com/angle/angle/+/8208e8a234d05b413d79e7a93b6a428adea41b33

commit 8208e8a234d05b413d79e7a93b6a428adea41b33
Author: Chris Dalton <ch...@rive.app>
Date: Mon Sep 12 16:15:16 2022

Generate stubs for ANGLE_shader_pixel_local_storage

Bug: angleproject:7279
Change-Id: I41548ad35c236b67372a12fecaa9a1b9c556d232
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3891972
Commit-Queue: Chris Dalton <ch...@rive.app>
Reviewed-by: Shahbaz Youssefi <syou...@chromium.org>

[modify] https://crrev.com/8208e8a234d05b413d79e7a93b6a428adea41b33/src/libANGLE/Context_gles_ext_autogen.h
[modify] https://crrev.com/8208e8a234d05b413d79e7a93b6a428adea41b33/src/libANGLE/capture/capture_gles_ext_autogen.h
[modify] https://crrev.com/8208e8a234d05b413d79e7a93b6a428adea41b33/src/libGLESv2/libGLESv2_no_capture_autogen.def
[modify] https://crrev.com/8208e8a234d05b413d79e7a93b6a428adea41b33/util/capture/trace_gles_loader_autogen.cpp
[modify] https://crrev.com/8208e8a234d05b413d79e7a93b6a428adea41b33/src/libANGLE/capture/gl_enum_utils_autogen.cpp
[modify] https://crrev.com/8208e8a234d05b413d79e7a93b6a428adea41b33/util/capture/trace_gles_loader_autogen.h
[modify] https://crrev.com/8208e8a234d05b413d79e7a93b6a428adea41b33/scripts/entry_point_packed_gl_enums.json
[modify] https://crrev.com/8208e8a234d05b413d79e7a93b6a428adea41b33/src/libGLESv2/proc_table_wgl_autogen.cpp
[modify] https://crrev.com/8208e8a234d05b413d79e7a93b6a428adea41b33/src/libANGLE/Context.cpp
[modify] https://crrev.com/8208e8a234d05b413d79e7a93b6a428adea41b33/util/gles_loader_autogen.cpp
[modify] https://crrev.com/8208e8a234d05b413d79e7a93b6a428adea41b33/src/libGLESv2/entry_points_gles_ext_autogen.cpp
[modify] https://crrev.com/8208e8a234d05b413d79e7a93b6a428adea41b33/scripts/code_generation_hashes/GL_EGL_WGL_loader.json
[modify] https://crrev.com/8208e8a234d05b413d79e7a93b6a428adea41b33/src/common/entry_points_enum_autogen.cpp
[modify] https://crrev.com/8208e8a234d05b413d79e7a93b6a428adea41b33/src/libANGLE/validationESEXT.cpp
[modify] https://crrev.com/8208e8a234d05b413d79e7a93b6a428adea41b33/src/libANGLE/validationESEXT_autogen.h
[modify] https://crrev.com/8208e8a234d05b413d79e7a93b6a428adea41b33/src/libGLESv2/libGLESv2_autogen.def
[modify] https://crrev.com/8208e8a234d05b413d79e7a93b6a428adea41b33/util/gles_loader_autogen.h
[modify] https://crrev.com/8208e8a234d05b413d79e7a93b6a428adea41b33/src/libANGLE/capture/capture_gles_ext_params.cpp
[modify] https://crrev.com/8208e8a234d05b413d79e7a93b6a428adea41b33/src/libGLESv2/entry_points_gles_ext_autogen.h
[modify] https://crrev.com/8208e8a234d05b413d79e7a93b6a428adea41b33/src/libGLESv2/proc_table_glx_autogen.cpp
[modify] https://crrev.com/8208e8a234d05b413d79e7a93b6a428adea41b33/src/libGLESv2/opengl32_autogen.def
[modify] https://crrev.com/8208e8a234d05b413d79e7a93b6a428adea41b33/src/libGLESv2/opengl32_with_wgl_autogen.def
[modify] https://crrev.com/8208e8a234d05b413d79e7a93b6a428adea41b33/src/libGLESv2/proc_table_egl_autogen.cpp
[modify] https://crrev.com/8208e8a234d05b413d79e7a93b6a428adea41b33/scripts/code_generation_hashes/GL_EGL_entry_points.json
[modify] https://crrev.com/8208e8a234d05b413d79e7a93b6a428adea41b33/include/GLES2/gl2ext_angle.h
[modify] https://crrev.com/8208e8a234d05b413d79e7a93b6a428adea41b33/src/libGLESv2/libGLESv2_with_capture_autogen.def
[modify] https://crrev.com/8208e8a234d05b413d79e7a93b6a428adea41b33/scripts/code_generation_hashes/proc_table.json
[modify] https://crrev.com/8208e8a234d05b413d79e7a93b6a428adea41b33/src/tests/gl_tests/PixelLocalStorageTest.cpp
[modify] https://crrev.com/8208e8a234d05b413d79e7a93b6a428adea41b33/src/common/entry_points_enum_autogen.h
[modify] https://crrev.com/8208e8a234d05b413d79e7a93b6a428adea41b33/scripts/code_generation_hashes/Extension_files.json
[modify] https://crrev.com/8208e8a234d05b413d79e7a93b6a428adea41b33/scripts/gl_angle_ext.xml
[modify] https://crrev.com/8208e8a234d05b413d79e7a93b6a428adea41b33/scripts/code_generation_hashes/GLenum_value_to_string_map.json
[modify] https://crrev.com/8208e8a234d05b413d79e7a93b6a428adea41b33/src/libANGLE/capture/capture_gles_ext_autogen.cpp
[modify] https://crrev.com/8208e8a234d05b413d79e7a93b6a428adea41b33/src/libANGLE/capture/gl_enum_utils_autogen.h
[modify] https://crrev.com/8208e8a234d05b413d79e7a93b6a428adea41b33/src/libGLESv2/libGLESv2_autogen.cpp

k… via monorail

unread,
Sep 14, 2022, 9:03:42 PM9/14/22
to angleproj...@googlegroups.com
Updates:
Cc: d...@apple.com

Comment #53 on issue 7279 by k...@chromium.org: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c53

Chris, Shabi, compile failures are showing up on the mac-test bot with the above two changes:

https://chromium-review.googlesource.com/c/angle/angle/+/3865060
https://ci.chromium.org/ui/p/angle/builders/try/mac-test/7875/overview

---
[1404/6801] CXX obj/libANGLE_with_capture/capture_gles_ext_autogen.o
FAILED: obj/libANGLE_with_capture/capture_gles_ext_autogen.o
/opt/s/w/ir/cache/goma/client/gomacc ../../third_party/llvm-build/Release+Asserts/bin/clang++ -MMD -MF obj/libANGLE_with_capture/capture_gles_ext_autogen.o.d -DDCHECK_ALWAYS_ON=1 -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D_FORTIFY_SOURCE=2 -DCR_XCODE_VERSION=1341 -DCR_CLANG_REVISION=\"llvmorg-16-init-4438-gc922cac8-1\" -DCOMPONENT_BUILD -DCR_LIBCXX_REVISION=c1e647c7c30238f7c512457eec55798e3458fd8a -D__ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES=0 -DNDEBUG -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -DANGLE_ASSERT_ALWAYS_ON -DANGLE_VMA_VERSION=2003000 -DANGLE_ENABLE_SHARE_CONTEXT_LOCK=1 -DANGLE_HAS_ASTCENC -DANGLE_CAPTURE_ENABLED=1 -DLIBANGLE_IMPLEMENTATION -DANGLE_ENABLE_OVERLAY=1 -DANGLE_ENABLE_OPENGL -DANGLE_ENABLE_GL_DESKTOP_BACKEND -DANGLE_ENABLE_OPENGL_NULL -DGL_SILENCE_DEPRECATION -DANGLE_ENABLE_NULL -DANGLE_ENABLE_METAL -DANGLE_ENABLE_VULKAN -DANGLE_ENABLE_SWIFTSHADER -DANGLE_USE_CUSTOM_VULKAN_OUTSIDE_RENDER_PASS_CMD_BUFFERS=1 -DANGLE_USE_CUSTOM_VULKAN_RENDER_PASS_CMD_BUFFERS=1 -DANGLE_ENABLE_VULKAN_VALIDATION_LAYERS -DANGLE_ENABLE_CL_PASSTHROUGH -DANGLE_USE_ABSEIL -DABSL_ALLOCATOR_NOTHROW=1 -DABSL_CONSUME_DLL -DANGLE_USE_CUSTOM_LIBVULKAN -DAPI_NAME=\"Vulkan\" -DUSE_UNSAFE_FILE_SEARCH=1 -DVK_USE_PLATFORM_METAL_EXT -DANGLE_ENABLE_METAL_SPIRV -DANGLE_HAS_RAPIDJSON -DRAPIDJSON_HAS_STDSTRING -I../../buildtools/third_party/libc++ -I../../include -I../../src -I../../src/third_party/khronos -I../../src/common/third_party/base -I../../third_party/abseil-cpp -I../../third_party/vulkan-deps/vulkan-loader/src/loader/generated -I../../third_party/vulkan-deps/vulkan-loader/src/loader -I../../third_party/vulkan-deps/vulkan-headers/src/include -I../../third_party/OpenCL-ICD-Loader/src/loader -I../../third_party/rapidjson/src/include -I../../third_party/zlib/google -I../../third_party/zlib -Wall -Werror -Wextra -Wimplicit-fallthrough -Wunreachable-code-aggressive -Wthread-safety -Wextra-semi -Wunguarded-availability -Wno-missing-field-initializers -Wno-unused-parameter -Wloop-analysis -Wno-unneeded-internal-declaration -Wenum-compare-conditional -Wno-psabi -Wno-ignored-pragma-optimize -Wno-deprecated-builtins -Wno-bitfield-constant-conversion -Wshadow -fno-delete-null-pointer-checks -fno-ident -fno-strict-aliasing -fstack-protector -femit-dwarf-unwind=no-compact-unwind -fcolor-diagnostics -fmerge-all-constants -fcrash-diagnostics-dir=../../tools/clang/crashreports -mllvm -instcombine-lower-dbg-declare=0 -ffp-contract=off -mllvm -simplifycfg-hoist-common-skip-limit=0 -fcomplete-member-pointers -arch x86_64 -Wno-builtin-macro-redefined -D__DATE__= -D__TIME__= -D__TIMESTAMP__= -ffile-compilation-dir=. -no-canonical-prefixes -ftrivial-auto-var-init=pattern -O2 -fno-omit-frame-pointer -gdwarf-4 -g1 -gdwarf-aranges -isysroot ../../build/mac_files/xcode_binaries/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk -mmacos-version-min=10.13 -fvisibility=hidden -Wheader-hygiene -Wstring-conversion -Wtautological-overlap-compare -Wexit-time-destructors -Wglobal-constructors -Wbad-function-cast -Wconditional-uninitialized -Wextra-semi-stmt -Wfloat-conversion -Winconsistent-missing-destructor-override -Wmissing-field-initializers -Wnewline-eof -Wnon-virtual-dtor -Wredundant-parens -Wreturn-std-move -Wshadow -Wshadow-field -Wtautological-type-limit-compare -Wundefined-reinterpret-cast -Wunneeded-internal-declaration -Wunused-but-set-variable -Wsuggest-destructor-override -Wsuggest-override -Wparentheses -Wrange-loop-analysis -Wstrict-prototypes -Wunreachable-code-aggressive -Wshorten-64-to-32 -std=c++17 -Wno-trigraphs -fno-exceptions -fno-rtti -nostdinc++ -isystem../../buildtools/third_party/libc++/trunk/include -isystem../../buildtools/third_party/libc++abi/trunk/include -fvisibility-inlines-hidden -c ../../src/libANGLE/capture/capture_gles_ext_autogen.cpp -o obj/libANGLE_with_capture/capture_gles_ext_autogen.o
../../src/libANGLE/capture/capture_gles_ext_autogen.cpp:4645:58: error: no member named 'PixelLocalInternalFormatANGLE' in 'gl::GLESEnum'
paramBuffer.addEnumParam("internalformat", GLESEnum::PixelLocalInternalFormatANGLE,
~~~~~~~~~~^
1 error generated.
---

Is there something wrong with https://chromium-review.googlesource.com/c/angle/angle/+/3865060 or is the CQ broken? If so then we need to revert the above two CLs.

ch… via monorail

unread,
Sep 14, 2022, 9:07:11 PM9/14/22
to angleproj...@googlegroups.com

Comment #54 on issue 7279 by ch...@rive.app: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c54

Looks like an issue with me taking out PLS stuff from gl.xml. I'll revert.

Git Watcher via monorail

unread,
Sep 14, 2022, 10:16:12 PM9/14/22
to angleproj...@googlegroups.com

Comment #55 on issue 7279 by Git Watcher: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c55


The following revision refers to this bug:
https://chromium.googlesource.com/angle/angle/+/8c45e3c4173c1f2406b8a367350a7e3db8e3571a

commit 8c45e3c4173c1f2406b8a367350a7e3db8e3571a
Author: Chris Dalton <ch...@rive.app>
Date: Thu Sep 15 01:07:47 2022

Revert "Generate stubs for ANGLE_shader_pixel_local_storage"

This reverts commit 8208e8a234d05b413d79e7a93b6a428adea41b33.

Reason for revert: Compile failures

Original change's description:

> Generate stubs for ANGLE_shader_pixel_local_storage
>
> Bug: angleproject:7279
> Change-Id: I41548ad35c236b67372a12fecaa9a1b9c556d232
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3891972
> Commit-Queue: Chris Dalton <ch...@rive.app>
> Reviewed-by: Shahbaz Youssefi <syou...@chromium.org>

Bug: angleproject:7279
Change-Id: Ic9a232f9d722b42e615de3827ce118616f3acc71
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3897425
Reviewed-by: Shahbaz Youssefi <syou...@chromium.org>
Bot-Commit: Rubber Stamper <rubber-...@appspot.gserviceaccount.com>
Commit-Queue: Chris Dalton <ch...@rive.app>
Commit-Queue: Shahbaz Youssefi <syou...@chromium.org>
Auto-Submit: Chris Dalton <ch...@rive.app>

[modify] https://crrev.com/8c45e3c4173c1f2406b8a367350a7e3db8e3571a/util/capture/trace_gles_loader_autogen.cpp
[modify] https://crrev.com/8c45e3c4173c1f2406b8a367350a7e3db8e3571a/src/libANGLE/capture/capture_gles_ext_autogen.h
[modify] https://crrev.com/8c45e3c4173c1f2406b8a367350a7e3db8e3571a/src/libGLESv2/libGLESv2_no_capture_autogen.def
[modify] https://crrev.com/8c45e3c4173c1f2406b8a367350a7e3db8e3571a/src/libANGLE/Context_gles_ext_autogen.h
[modify] https://crrev.com/8c45e3c4173c1f2406b8a367350a7e3db8e3571a/src/libANGLE/capture/gl_enum_utils_autogen.cpp
[modify] https://crrev.com/8c45e3c4173c1f2406b8a367350a7e3db8e3571a/util/capture/trace_gles_loader_autogen.h
[modify] https://crrev.com/8c45e3c4173c1f2406b8a367350a7e3db8e3571a/scripts/entry_point_packed_gl_enums.json
[modify] https://crrev.com/8c45e3c4173c1f2406b8a367350a7e3db8e3571a/src/libGLESv2/proc_table_wgl_autogen.cpp
[modify] https://crrev.com/8c45e3c4173c1f2406b8a367350a7e3db8e3571a/src/libANGLE/Context.cpp
[modify] https://crrev.com/8c45e3c4173c1f2406b8a367350a7e3db8e3571a/util/gles_loader_autogen.cpp
[modify] https://crrev.com/8c45e3c4173c1f2406b8a367350a7e3db8e3571a/src/libGLESv2/entry_points_gles_ext_autogen.cpp
[modify] https://crrev.com/8c45e3c4173c1f2406b8a367350a7e3db8e3571a/scripts/code_generation_hashes/GL_EGL_WGL_loader.json
[modify] https://crrev.com/8c45e3c4173c1f2406b8a367350a7e3db8e3571a/src/common/entry_points_enum_autogen.cpp
[modify] https://crrev.com/8c45e3c4173c1f2406b8a367350a7e3db8e3571a/src/libANGLE/validationESEXT.cpp
[modify] https://crrev.com/8c45e3c4173c1f2406b8a367350a7e3db8e3571a/src/libANGLE/validationESEXT_autogen.h
[modify] https://crrev.com/8c45e3c4173c1f2406b8a367350a7e3db8e3571a/src/libGLESv2/libGLESv2_autogen.def
[modify] https://crrev.com/8c45e3c4173c1f2406b8a367350a7e3db8e3571a/util/gles_loader_autogen.h
[modify] https://crrev.com/8c45e3c4173c1f2406b8a367350a7e3db8e3571a/src/libANGLE/capture/capture_gles_ext_params.cpp
[modify] https://crrev.com/8c45e3c4173c1f2406b8a367350a7e3db8e3571a/src/libGLESv2/entry_points_gles_ext_autogen.h
[modify] https://crrev.com/8c45e3c4173c1f2406b8a367350a7e3db8e3571a/src/libGLESv2/proc_table_glx_autogen.cpp
[modify] https://crrev.com/8c45e3c4173c1f2406b8a367350a7e3db8e3571a/src/libGLESv2/opengl32_autogen.def
[modify] https://crrev.com/8c45e3c4173c1f2406b8a367350a7e3db8e3571a/src/libGLESv2/proc_table_egl_autogen.cpp
[modify] https://crrev.com/8c45e3c4173c1f2406b8a367350a7e3db8e3571a/src/libGLESv2/opengl32_with_wgl_autogen.def
[modify] https://crrev.com/8c45e3c4173c1f2406b8a367350a7e3db8e3571a/scripts/code_generation_hashes/GL_EGL_entry_points.json
[modify] https://crrev.com/8c45e3c4173c1f2406b8a367350a7e3db8e3571a/include/GLES2/gl2ext_angle.h
[modify] https://crrev.com/8c45e3c4173c1f2406b8a367350a7e3db8e3571a/src/libGLESv2/libGLESv2_with_capture_autogen.def
[modify] https://crrev.com/8c45e3c4173c1f2406b8a367350a7e3db8e3571a/scripts/code_generation_hashes/proc_table.json
[modify] https://crrev.com/8c45e3c4173c1f2406b8a367350a7e3db8e3571a/src/tests/gl_tests/PixelLocalStorageTest.cpp
[modify] https://crrev.com/8c45e3c4173c1f2406b8a367350a7e3db8e3571a/src/common/entry_points_enum_autogen.h
[modify] https://crrev.com/8c45e3c4173c1f2406b8a367350a7e3db8e3571a/scripts/code_generation_hashes/Extension_files.json
[modify] https://crrev.com/8c45e3c4173c1f2406b8a367350a7e3db8e3571a/scripts/gl_angle_ext.xml
[modify] https://crrev.com/8c45e3c4173c1f2406b8a367350a7e3db8e3571a/src/libANGLE/capture/capture_gles_ext_autogen.cpp
[modify] https://crrev.com/8c45e3c4173c1f2406b8a367350a7e3db8e3571a/src/libANGLE/capture/gl_enum_utils_autogen.h
[modify] https://crrev.com/8c45e3c4173c1f2406b8a367350a7e3db8e3571a/src/libGLESv2/libGLESv2_autogen.cpp
[modify] https://crrev.com/8c45e3c4173c1f2406b8a367350a7e3db8e3571a/scripts/code_generation_hashes/GLenum_value_to_string_map.json

Git Watcher via monorail

unread,
Sep 15, 2022, 3:45:09 PM9/15/22
to angleproj...@googlegroups.com

Comment #56 on issue 7279 by Git Watcher: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c56


The following revision refers to this bug:
https://chromium.googlesource.com/angle/angle/+/04f46f391d5c6e82da44ecc84a46d8617781c1b6

commit 04f46f391d5c6e82da44ecc84a46d8617781c1b6
Author: Chris Dalton <ch...@rive.app>

Date: Mon Sep 12 16:15:16 2022

Reland "Generate stubs for ANGLE_shader_pixel_local_storage"

This is a reland of commit 8208e8a234d05b413d79e7a93b6a428adea41b33

In Take 2 we omit the GLenum groups PixelLocalLoadOpANGLE and
PixelLocalInternalFormatANGLE. We can add these back once the extension
is published and we can update Khronos's gl.xml, or else once we figure
out how to make this work without updating the Khronos gl.xml.


Original change's description:
> Generate stubs for ANGLE_shader_pixel_local_storage
>
> Bug: angleproject:7279
> Change-Id: I41548ad35c236b67372a12fecaa9a1b9c556d232
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3891972
> Commit-Queue: Chris Dalton <ch...@rive.app>
> Reviewed-by: Shahbaz Youssefi <syou...@chromium.org>

Bug: angleproject:7279
Change-Id: I02f42c1cfc685ed95164744108e0c185d3a7fefb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3900491
Reviewed-by: Shahbaz Youssefi <syou...@chromium.org>
Commit-Queue: Chris Dalton <ch...@rive.app>

[modify] https://crrev.com/04f46f391d5c6e82da44ecc84a46d8617781c1b6/src/libANGLE/capture/capture_gles_ext_autogen.h
[modify] https://crrev.com/04f46f391d5c6e82da44ecc84a46d8617781c1b6/src/libANGLE/Context_gles_ext_autogen.h
[modify] https://crrev.com/04f46f391d5c6e82da44ecc84a46d8617781c1b6/util/capture/trace_gles_loader_autogen.cpp
[modify] https://crrev.com/04f46f391d5c6e82da44ecc84a46d8617781c1b6/src/libGLESv2/libGLESv2_no_capture_autogen.def
[modify] https://crrev.com/04f46f391d5c6e82da44ecc84a46d8617781c1b6/src/libANGLE/capture/gl_enum_utils_autogen.cpp
[modify] https://crrev.com/04f46f391d5c6e82da44ecc84a46d8617781c1b6/util/capture/trace_gles_loader_autogen.h
[modify] https://crrev.com/04f46f391d5c6e82da44ecc84a46d8617781c1b6/scripts/entry_point_packed_gl_enums.json
[modify] https://crrev.com/04f46f391d5c6e82da44ecc84a46d8617781c1b6/src/libGLESv2/proc_table_wgl_autogen.cpp
[modify] https://crrev.com/04f46f391d5c6e82da44ecc84a46d8617781c1b6/src/libANGLE/Context.cpp
[modify] https://crrev.com/04f46f391d5c6e82da44ecc84a46d8617781c1b6/util/gles_loader_autogen.cpp
[modify] https://crrev.com/04f46f391d5c6e82da44ecc84a46d8617781c1b6/src/libGLESv2/entry_points_gles_ext_autogen.cpp
[modify] https://crrev.com/04f46f391d5c6e82da44ecc84a46d8617781c1b6/scripts/code_generation_hashes/GL_EGL_WGL_loader.json
[modify] https://crrev.com/04f46f391d5c6e82da44ecc84a46d8617781c1b6/src/common/entry_points_enum_autogen.cpp
[modify] https://crrev.com/04f46f391d5c6e82da44ecc84a46d8617781c1b6/src/libANGLE/validationESEXT.cpp
[modify] https://crrev.com/04f46f391d5c6e82da44ecc84a46d8617781c1b6/src/libANGLE/validationESEXT_autogen.h
[modify] https://crrev.com/04f46f391d5c6e82da44ecc84a46d8617781c1b6/src/libGLESv2/libGLESv2_autogen.def
[modify] https://crrev.com/04f46f391d5c6e82da44ecc84a46d8617781c1b6/util/gles_loader_autogen.h
[modify] https://crrev.com/04f46f391d5c6e82da44ecc84a46d8617781c1b6/src/libANGLE/capture/capture_gles_ext_params.cpp
[modify] https://crrev.com/04f46f391d5c6e82da44ecc84a46d8617781c1b6/src/libGLESv2/proc_table_glx_autogen.cpp
[modify] https://crrev.com/04f46f391d5c6e82da44ecc84a46d8617781c1b6/src/libGLESv2/entry_points_gles_ext_autogen.h
[modify] https://crrev.com/04f46f391d5c6e82da44ecc84a46d8617781c1b6/src/libGLESv2/opengl32_autogen.def
[modify] https://crrev.com/04f46f391d5c6e82da44ecc84a46d8617781c1b6/src/libGLESv2/opengl32_with_wgl_autogen.def
[modify] https://crrev.com/04f46f391d5c6e82da44ecc84a46d8617781c1b6/src/libGLESv2/proc_table_egl_autogen.cpp
[modify] https://crrev.com/04f46f391d5c6e82da44ecc84a46d8617781c1b6/scripts/code_generation_hashes/GL_EGL_entry_points.json
[modify] https://crrev.com/04f46f391d5c6e82da44ecc84a46d8617781c1b6/src/libGLESv2/libGLESv2_with_capture_autogen.def
[modify] https://crrev.com/04f46f391d5c6e82da44ecc84a46d8617781c1b6/include/GLES2/gl2ext_angle.h
[modify] https://crrev.com/04f46f391d5c6e82da44ecc84a46d8617781c1b6/scripts/code_generation_hashes/proc_table.json
[modify] https://crrev.com/04f46f391d5c6e82da44ecc84a46d8617781c1b6/src/tests/gl_tests/PixelLocalStorageTest.cpp
[modify] https://crrev.com/04f46f391d5c6e82da44ecc84a46d8617781c1b6/src/common/entry_points_enum_autogen.h
[modify] https://crrev.com/04f46f391d5c6e82da44ecc84a46d8617781c1b6/scripts/gl_angle_ext.xml
[modify] https://crrev.com/04f46f391d5c6e82da44ecc84a46d8617781c1b6/scripts/code_generation_hashes/Extension_files.json
[modify] https://crrev.com/04f46f391d5c6e82da44ecc84a46d8617781c1b6/scripts/code_generation_hashes/GLenum_value_to_string_map.json
[modify] https://crrev.com/04f46f391d5c6e82da44ecc84a46d8617781c1b6/src/libGLESv2/libGLESv2_autogen.cpp
[modify] https://crrev.com/04f46f391d5c6e82da44ecc84a46d8617781c1b6/src/libANGLE/capture/capture_gles_ext_autogen.cpp

Git Watcher via monorail

unread,
Sep 16, 2022, 7:18:07 PM9/16/22
to angleproj...@googlegroups.com

Comment #57 on issue 7279 by Git Watcher: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c57


The following revision refers to this bug:
https://chromium.googlesource.com/angle/angle/+/493bab09b564f9cfa6333f92baf3abadcb5a57db

commit 493bab09b564f9cfa6333f92baf3abadcb5a57db
Author: Chris Dalton <ch...@rive.app>
Date: Thu Sep 15 20:20:41 2022

Add an ShPixelLocalStorageType enum

Adds ShPixelLocalStorageType to ShCompileOptionsPLS and adds a
getNativePixelLocalStorageType() call to ContextImpl. For now this enum
only tells the translater whether PLS formats needs to be packed into
r32 images, but it will soon also be able to select framebuffer fetch,
native pixel local storage, and other PLS implementations.

Bug: angleproject:7279
Change-Id: Ifbd419b20550b8711ae3044782177806796216f1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3900498

Commit-Queue: Chris Dalton <ch...@rive.app>
Reviewed-by: Shahbaz Youssefi <syou...@chromium.org>

[modify] https://crrev.com/493bab09b564f9cfa6333f92baf3abadcb5a57db/src/libANGLE/renderer/vulkan/ShaderVk.cpp
[modify] https://crrev.com/493bab09b564f9cfa6333f92baf3abadcb5a57db/src/libANGLE/renderer/gl/ShaderGL.cpp
[modify] https://crrev.com/493bab09b564f9cfa6333f92baf3abadcb5a57db/src/libANGLE/renderer/vulkan/RendererVk.h
[modify] https://crrev.com/493bab09b564f9cfa6333f92baf3abadcb5a57db/src/libANGLE/renderer/d3d/d3d9/Context9.cpp
[modify] https://crrev.com/493bab09b564f9cfa6333f92baf3abadcb5a57db/src/libANGLE/renderer/gl/RendererGL.cpp
[modify] https://crrev.com/493bab09b564f9cfa6333f92baf3abadcb5a57db/src/libANGLE/renderer/metal/DisplayMtl.h
[modify] https://crrev.com/493bab09b564f9cfa6333f92baf3abadcb5a57db/src/libANGLE/renderer/metal/ContextMtl.h
[modify] https://crrev.com/493bab09b564f9cfa6333f92baf3abadcb5a57db/src/libANGLE/renderer/d3d/RendererD3D.h
[modify] https://crrev.com/493bab09b564f9cfa6333f92baf3abadcb5a57db/src/libANGLE/renderer/d3d/RendererD3D.cpp
[modify] https://crrev.com/493bab09b564f9cfa6333f92baf3abadcb5a57db/src/libANGLE/renderer/vulkan/RendererVk.cpp
[modify] https://crrev.com/493bab09b564f9cfa6333f92baf3abadcb5a57db/src/libANGLE/renderer/vulkan/ContextVk.h
[modify] https://crrev.com/493bab09b564f9cfa6333f92baf3abadcb5a57db/src/libANGLE/renderer/d3d/d3d11/Context11.h
[modify] https://crrev.com/493bab09b564f9cfa6333f92baf3abadcb5a57db/src/libANGLE/renderer/metal/DisplayMtl.mm
[modify] https://crrev.com/493bab09b564f9cfa6333f92baf3abadcb5a57db/src/libANGLE/renderer/d3d/d3d11/Context11.cpp
[modify] https://crrev.com/493bab09b564f9cfa6333f92baf3abadcb5a57db/src/libANGLE/renderer/gl/ContextGL.cpp
[modify] https://crrev.com/493bab09b564f9cfa6333f92baf3abadcb5a57db/src/libANGLE/renderer/metal/ContextMtl.mm
[modify] https://crrev.com/493bab09b564f9cfa6333f92baf3abadcb5a57db/src/compiler/translator/tree_ops/RewritePixelLocalStorage.cpp
[modify] https://crrev.com/493bab09b564f9cfa6333f92baf3abadcb5a57db/src/libANGLE/renderer/ContextImpl.h
[modify] https://crrev.com/493bab09b564f9cfa6333f92baf3abadcb5a57db/src/libANGLE/renderer/gl/RendererGL.h
[modify] https://crrev.com/493bab09b564f9cfa6333f92baf3abadcb5a57db/src/libANGLE/renderer/null/ContextNULL.cpp
[modify] https://crrev.com/493bab09b564f9cfa6333f92baf3abadcb5a57db/src/libANGLE/renderer/null/ContextNULL.h
[modify] https://crrev.com/493bab09b564f9cfa6333f92baf3abadcb5a57db/src/libANGLE/renderer/d3d/ShaderD3D.cpp
[modify] https://crrev.com/493bab09b564f9cfa6333f92baf3abadcb5a57db/src/libANGLE/renderer/gl/ContextGL.h
[modify] https://crrev.com/493bab09b564f9cfa6333f92baf3abadcb5a57db/src/libANGLE/renderer/vulkan/ContextVk.cpp
[modify] https://crrev.com/493bab09b564f9cfa6333f92baf3abadcb5a57db/src/libANGLE/renderer/d3d/d3d9/Context9.h
[modify] https://crrev.com/493bab09b564f9cfa6333f92baf3abadcb5a57db/include/GLSLANG/ShaderLang.h

Git Watcher via monorail

unread,
Sep 21, 2022, 5:53:07 PM9/21/22
to angleproj...@googlegroups.com

Comment #62 on issue 7279 by Git Watcher: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c62


The following revision refers to this bug:
https://chromium.googlesource.com/angle/angle/+/8b2aff283821643ab3b8ef828f0e49712584f189

commit 8b2aff283821643ab3b8ef828f0e49712584f189
Author: Chris Dalton <ch...@rive.app>
Date: Mon Sep 12 16:27:28 2022

Implement the ANGLE_shader_pixel_local_storage API

Implements the OpenGL ES API for ANGLE_shader_pixel_local_storage and
adds thorough validation and testing as outlined in the spec. This
feature is still implemented entirely in the frontend, but the extension
now works end-to-end with a passing test suite, and can be used
externally. Over time we can start gradually moving the implementation
into backends as appropriate.

Bug: angleproject:7279
Bug: angleproject:7647
Change-Id: I1c861a0fca96423be02e17bbe1fb7f57b99ea63f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3886462
Reviewed-by: Kenneth Russell <k...@chromium.org>

Reviewed-by: Shahbaz Youssefi <syou...@chromium.org>
Commit-Queue: Chris Dalton <ch...@rive.app>

[modify] https://crrev.com/8b2aff283821643ab3b8ef828f0e49712584f189/src/libANGLE/capture/capture_gles_ext_params.cpp
[modify] https://crrev.com/8b2aff283821643ab3b8ef828f0e49712584f189/src/libGLESv2.gni
[modify] https://crrev.com/8b2aff283821643ab3b8ef828f0e49712584f189/src/libANGLE/Framebuffer.h
[modify] https://crrev.com/8b2aff283821643ab3b8ef828f0e49712584f189/extensions/ANGLE_shader_pixel_local_storage.txt
[modify] https://crrev.com/8b2aff283821643ab3b8ef828f0e49712584f189/src/libANGLE/renderer/gl/renderergl_utils.cpp
[modify] https://crrev.com/8b2aff283821643ab3b8ef828f0e49712584f189/src/libANGLE/Caps.h
[add] https://crrev.com/8b2aff283821643ab3b8ef828f0e49712584f189/src/libANGLE/PixelLocalStorage.h
[modify] https://crrev.com/8b2aff283821643ab3b8ef828f0e49712584f189/src/libANGLE/queryutils.cpp
[modify] https://crrev.com/8b2aff283821643ab3b8ef828f0e49712584f189/src/libANGLE/Context.cpp
[add] https://crrev.com/8b2aff283821643ab3b8ef828f0e49712584f189/src/libANGLE/PixelLocalStorage.cpp
[modify] https://crrev.com/8b2aff283821643ab3b8ef828f0e49712584f189/src/libANGLE/ErrorStrings.h
[modify] https://crrev.com/8b2aff283821643ab3b8ef828f0e49712584f189/src/libANGLE/renderer/null/ContextNULL.cpp
[modify] https://crrev.com/8b2aff283821643ab3b8ef828f0e49712584f189/src/libANGLE/validationESEXT.cpp
[modify] https://crrev.com/8b2aff283821643ab3b8ef828f0e49712584f189/src/tests/gl_tests/PixelLocalStorageTest.cpp
[modify] https://crrev.com/8b2aff283821643ab3b8ef828f0e49712584f189/src/libANGLE/State.cpp
[modify] https://crrev.com/8b2aff283821643ab3b8ef828f0e49712584f189/src/libANGLE/validationES3.cpp
[modify] https://crrev.com/8b2aff283821643ab3b8ef828f0e49712584f189/src/libANGLE/Framebuffer.cpp
[modify] https://crrev.com/8b2aff283821643ab3b8ef828f0e49712584f189/src/libANGLE/Constants.h
[modify] https://crrev.com/8b2aff283821643ab3b8ef828f0e49712584f189/src/libANGLE/State.h

ch… via monorail

unread,
Sep 24, 2022, 11:26:08 AM9/24/22
to angleproj...@googlegroups.com

Comment #63 on issue 7279 by ch...@rive.app: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c63

A large unmet need in WebGL is the ability to do custom blending. An extension for framebuffer fetch has been proposed, but is prohibitively complex to polyfill when hardware support isn't present.

A more practical (and more versatile) way to enable custom blending would be to provide a "pixel local storage" extension. Apps can easily use local storage to do blending, and the implementation is straightforward and broadly supported on every backend:

OpenGL:
* As shader images (GL 4.2+, ES 3.1+, or ARB_shader_image_load_store) (noncoherent)
** Can be coherent with GL_ARB_fragment_shader_interlock (NVIDIA & Intel)
** Can be coherent with GL_INTEL_fragment_shader_ordering (Intel & AMD)
* As color attachments (GL_EXT_shader_framebuffer_fetch) (always coherent)
** GL_QCOM_tiled_rendering to explicitly discard local storage attachments
* Using GL_EXT_shader_pixel_local_storage (always coherent)
* Using texelFetch and barriers (NV_texture_barrier or GL 4.5) (always noncoherent)

Direct3D:
* As RasterizerOrderedTexture2D<> (D3D11.3, always coherent)
* As RWTexture2D<> (D3D11, noncoherent)

Vulkan:
* As transient attachments with subpass loads (noncoherent)
** Can be coherent with VK_ARM_rasterization_order_attachment_access
** Can be coherent with existing framebuffer fetch mechanisms (they ARM and Swiftshader are automatically raster ordered)
* As shader images (noncoherent)
** Can be coherent with VK_EXT_fragment_shader_interlock

Metal:
* Using "programmable blending", available on all Apple GPU families since v2 (always coherent)
** Putting PLS in its own raster order group could be a perf optimization
* As readWrite textures, an optional featutre (noncoherent)
** Can be coherent with raster order groups
* Using texture barriers (Mac2 GPU family) (always noncoherent)

We can quickly bootstrap this feature as a thin layer that calls into ANGLE's existing ES 3.1 code. Shader images are already implemented on every backend except Metal. Once bootstrapped, we can establish a strong base of tests that guide the development of the fast, backend-specific implementations.

I've drafted an initial spec for this extension, intended for implementation on top of ES 3.1, here: https://docs.google.com/document/d/17HTZQyxM3sd--c3cJbNXZv5cZTO_J1ENzkzrXwvTvQ0/edit?usp=sharing

ch… via monorail

unread,
Sep 24, 2022, 11:26:52 AM9/24/22
to angleproj...@googlegroups.com

Comment #64 on issue 7279 by ch...@rive.app: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c64


A large unmet need in WebGL is the ability to do custom blending. An extension for framebuffer fetch has been proposed, but is prohibitively complex to polyfill when hardware support isn't present.

A more practical (and more versatile) way to enable custom blending would be to provide a "pixel local storage" extension. Apps can easily use local storage to do blending, and the implementation is straightforward and broadly supported on every backend:

OpenGL:
* As shader images (GL 4.2+, ES 3.1+, or ARB_shader_image_load_store) (noncoherent)
** Can be coherent with GL_ARB_fragment_shader_interlock (NVIDIA & Intel)
** Can be coherent with GL_INTEL_fragment_shader_ordering (Intel & AMD)
* As color attachments (GL_EXT_shader_framebuffer_fetch) (always coherent)
** GL_QCOM_tiled_rendering to explicitly discard local storage attachments
* Using GL_EXT_shader_pixel_local_storage (always coherent)
* Using texelFetch and barriers (NV_texture_barrier or GL 4.5) (always noncoherent)

Direct3D:
* As RasterizerOrderedTexture2D<> (D3D11.3, always coherent)
* As RWTexture2D<> (D3D11, noncoherent)

Vulkan:
* As transient attachments with subpass loads (noncoherent)
** Can be coherent with VK_ARM_rasterization_order_attachment_access
** Can be coherent with existing framebuffer fetch mechanisms (they assume ARM and Swiftshader are automatically raster ordered)

ch… via monorail

unread,
Sep 24, 2022, 11:27:30 AM9/24/22
to angleproj...@googlegroups.com

Comment #65 on issue 7279 by ch...@rive.app: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c65


A large unmet need in WebGL is the ability to do custom blending. An extension for framebuffer fetch has been proposed, but is prohibitively complex to polyfill when hardware support isn't present.

A more practical (and more versatile) way to enable custom blending would be to provide a "pixel local storage" extension. Apps can easily use local storage to do blending, and the implementation is straightforward and broadly supported on every backend:

OpenGL:
* As shader images (GL 4.2+, ES 3.1+, or ARB_shader_image_load_store) (noncoherent)
** Can be coherent with GL_ARB_fragment_shader_interlock (NVIDIA & Intel)
** Can be coherent with GL_INTEL_fragment_shader_ordering (Intel & AMD)
* As color attachments (GL_EXT_shader_framebuffer_fetch) (always coherent)
** GL_QCOM_tiled_rendering to explicitly discard local storage attachments
* Using GL_EXT_shader_pixel_local_storage (always coherent)
* Using texelFetch and barriers (NV_texture_barrier or GL 4.5) (always noncoherent)

Direct3D:
* As RasterizerOrderedTexture2D<> (D3D11.3, always coherent)
* As RWTexture2D<> (D3D11, noncoherent)

Vulkan:
* As transient attachments with subpass loads (noncoherent)
** Can be coherent with VK_ARM_rasterization_order_attachment_access
** Can be coherent with existing framebuffer fetch mechanisms (they assume ARM and Swiftshader are automatically raster ordered)
* As shader images (noncoherent)
** Can be coherent with VK_EXT_fragment_shader_interlock

Metal:
* Using "programmable blending", available on all Apple GPU families since v2 (always coherent)
** Putting PLS in its own raster order group could be a perf optimization
* As readWrite textures (aka shader images), an optional feature (noncoherent)

ch… via monorail

unread,
Sep 24, 2022, 11:28:05 AM9/24/22
to angleproj...@googlegroups.com

Comment #66 on issue 7279 by ch...@rive.app: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c66


A large unmet need in WebGL is the ability to do custom blending. An extension for framebuffer fetch has been proposed, but is prohibitively complex to polyfill when hardware support isn't present.

A more practical (and more versatile) way to enable custom blending would be to provide a "pixel local storage" extension. Apps can easily use local storage to do blending, and the implementation is straightforward and broadly supported on every backend:

OpenGL:
* As shader images (GL 4.2+, ES 3.1+, or ARB_shader_image_load_store) (noncoherent)
** Can be coherent with GL_ARB_fragment_shader_interlock (NVIDIA & Intel)
** Can be coherent with GL_INTEL_fragment_shader_ordering (Intel & AMD)
* As color attachments (GL_EXT_shader_framebuffer_fetch) (always coherent)
** GL_QCOM_tiled_rendering to explicitly discard local storage attachments
* Using GL_EXT_shader_pixel_local_storage (always coherent)
* Using texelFetch and barriers (NV_texture_barrier or GL 4.5) (always noncoherent)

Direct3D:
* As RasterizerOrderedTexture2D<> (D3D11.3, always coherent)
* As RWTexture2D<> (D3D11, noncoherent)

Vulkan:
* As transient attachments with subpass loads (noncoherent)
** Can be coherent with VK_ARM_rasterization_order_attachment_access
** Can be coherent with existing framebuffer fetch mechanisms (they assume ARM and Swiftshader are automatically raster ordered)
* As shader images (noncoherent)
** Can be coherent with VK_EXT_fragment_shader_interlock

Metal:
* Using "programmable blending", available on all Apple GPU families since v2 (always coherent)
** Putting PLS in its own raster order group on Apple4+ could be a perf optimization

ch… via monorail

unread,
Sep 24, 2022, 11:29:17 AM9/24/22
to angleproj...@googlegroups.com

Comment #67 on issue 7279 by ch...@rive.app: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c67


A large unmet need in WebGL is the ability to do custom blending. An extension for framebuffer fetch has been proposed, but is prohibitively complex to polyfill when hardware support isn't present.

A more practical (and more versatile) way to enable custom blending would be to provide a "pixel local storage" extension. Apps can easily use local storage to do blending, and the implementation is straightforward and broadly supported on every backend:

OpenGL:
* As shader images (GL 4.2+, ES 3.1+, or ARB_shader_image_load_store) (noncoherent)
** Can be coherent with GL_ARB_fragment_shader_interlock (NVIDIA & Intel)
** Can be coherent with GL_INTEL_fragment_shader_ordering (Intel & AMD)
** Can be coherent with GL_NV_fragment_shader_interlock (NVIDIA & Intel)

Git Watcher via monorail

unread,
Sep 30, 2022, 5:39:07 PM9/30/22
to angleproj...@googlegroups.com

Comment #68 on issue 7279 by Git Watcher: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c68


The following revision refers to this bug:
https://chromium.googlesource.com/angle/angle/+/a81679bc83c2551bb03f9335a7091de9ec523113

commit a81679bc83c2551bb03f9335a7091de9ec523113
Author: Chris Dalton <ch...@rive.app>
Date: Tue Sep 27 05:56:34 2022

Support EXT_shader_framebuffer_fetch on GLES

All the frontend functionality for EXT_shader_framebuffer_fetch is
already present, but only supported on Vulkan. This change wires it up
for the native GLES backend as well.

Bug: angleproject:7279
Bug: angleproject:7703
Change-Id: Ie1fce79e08a78662c8af65d33f3d8417c96cf58e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3920577

Commit-Queue: Chris Dalton <ch...@rive.app>
Reviewed-by: Shahbaz Youssefi <syou...@chromium.org>

[modify] https://crrev.com/a81679bc83c2551bb03f9335a7091de9ec523113/src/compiler/translator/OutputGLSLBase.cpp
[modify] https://crrev.com/a81679bc83c2551bb03f9335a7091de9ec523113/src/libANGLE/renderer/gl/renderergl_utils.cpp
[modify] https://crrev.com/a81679bc83c2551bb03f9335a7091de9ec523113/src/libANGLE/renderer/gl/gl_bindings_data.json
[modify] https://crrev.com/a81679bc83c2551bb03f9335a7091de9ec523113/src/tests/angle_end2end_tests_expectations.txt
[modify] https://crrev.com/a81679bc83c2551bb03f9335a7091de9ec523113/src/libANGLE/renderer/gl/null_functions.h
[modify] https://crrev.com/a81679bc83c2551bb03f9335a7091de9ec523113/include/platform/FeaturesGL_autogen.h
[modify] https://crrev.com/a81679bc83c2551bb03f9335a7091de9ec523113/src/libANGLE/renderer/gl/ContextGL.cpp
[modify] https://crrev.com/a81679bc83c2551bb03f9335a7091de9ec523113/src/libANGLE/renderer/gl/RendererGL.cpp
[modify] https://crrev.com/a81679bc83c2551bb03f9335a7091de9ec523113/include/platform/gl_features.json
[modify] https://crrev.com/a81679bc83c2551bb03f9335a7091de9ec523113/src/compiler/translator/TranslatorESSL.cpp
[modify] https://crrev.com/a81679bc83c2551bb03f9335a7091de9ec523113/src/libANGLE/renderer/gl/null_functions.cpp
[modify] https://crrev.com/a81679bc83c2551bb03f9335a7091de9ec523113/util/angle_features_autogen.cpp
[modify] https://crrev.com/a81679bc83c2551bb03f9335a7091de9ec523113/src/libANGLE/renderer/gl/DispatchTableGL_autogen.h
[modify] https://crrev.com/a81679bc83c2551bb03f9335a7091de9ec523113/src/libANGLE/renderer/gl/RendererGL.h
[modify] https://crrev.com/a81679bc83c2551bb03f9335a7091de9ec523113/src/libANGLE/ErrorStrings.h
[modify] https://crrev.com/a81679bc83c2551bb03f9335a7091de9ec523113/util/angle_features_autogen.h
[modify] https://crrev.com/a81679bc83c2551bb03f9335a7091de9ec523113/src/libANGLE/renderer/gl/DispatchTableGL_autogen.cpp
[modify] https://crrev.com/a81679bc83c2551bb03f9335a7091de9ec523113/src/libANGLE/validationESEXT.cpp
[modify] https://crrev.com/a81679bc83c2551bb03f9335a7091de9ec523113/scripts/code_generation_hashes/OpenGL_dispatch_table.json
[modify] https://crrev.com/a81679bc83c2551bb03f9335a7091de9ec523113/src/libANGLE/renderer/gl/ContextGL.h
[modify] https://crrev.com/a81679bc83c2551bb03f9335a7091de9ec523113/src/libANGLE/renderer/gl/functionsgl_typedefs.h
[modify] https://crrev.com/a81679bc83c2551bb03f9335a7091de9ec523113/scripts/code_generation_hashes/ANGLE_features.json

Git Watcher via monorail

unread,
Oct 1, 2022, 1:21:20 PM10/1/22
to angleproj...@googlegroups.com

Comment #70 on issue 7279 by Git Watcher: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c70


The following revision refers to this bug:
https://chromium.googlesource.com/angle/angle/+/a7dc51f2465fb1d43f37ac402757371e5284615e

commit a7dc51f2465fb1d43f37ac402757371e5284615e
Author: Chris Dalton <ch...@rive.app>
Date: Sat Oct 01 14:49:11 2022

Add a framebuffer fetch implementation of PLS

The framebuffer fetch implementation works by attaching PLS backing
textures to the framebuffer, and then rewriting PLS uniforms as "inout"
fragment variables. The compiler's existing machinery takes it from
there and makes it work on GL and Vulkan, and soon Metal.

EXT_shader_framebuffer_fetch is now the preferred backend for pixel
local storage, but we also use EXT_shader_framebuffer_fetch_non_coherent
if shader images can't be coherent. This is especially interesting for
Vulkan, since noncoherent framebuffer fetch is possible without any
extensions.

Bug: angleproject:7279
Bug: angleproject:7683
Bug: angleproject:7684
Bug: angleproject:7724
Change-Id: I33f3b2c6df9a5709969d9165c448ea71b096c9e1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3900142
Reviewed-by: Shahbaz Youssefi <syou...@chromium.org>
Reviewed-by: Kenneth Russell <k...@chromium.org>
Commit-Queue: Chris Dalton <ch...@rive.app>

[modify] https://crrev.com/a7dc51f2465fb1d43f37ac402757371e5284615e/src/libANGLE/renderer/vulkan/ShaderVk.cpp
[modify] https://crrev.com/a7dc51f2465fb1d43f37ac402757371e5284615e/src/libANGLE/renderer/gl/ShaderGL.cpp
[modify] https://crrev.com/a7dc51f2465fb1d43f37ac402757371e5284615e/extensions/ANGLE_shader_pixel_local_storage.txt
[modify] https://crrev.com/a7dc51f2465fb1d43f37ac402757371e5284615e/src/libANGLE/renderer/gl/renderergl_utils.cpp
[modify] https://crrev.com/a7dc51f2465fb1d43f37ac402757371e5284615e/src/compiler/translator/Compiler.cpp
[modify] https://crrev.com/a7dc51f2465fb1d43f37ac402757371e5284615e/src/tests/angle_end2end_tests_expectations.txt
[modify] https://crrev.com/a7dc51f2465fb1d43f37ac402757371e5284615e/src/libANGLE/renderer/gl/RendererGL.cpp
[modify] https://crrev.com/a7dc51f2465fb1d43f37ac402757371e5284615e/src/libANGLE/renderer/null/ShaderNULL.cpp
[modify] https://crrev.com/a7dc51f2465fb1d43f37ac402757371e5284615e/include/platform/frontend_features.json
[modify] https://crrev.com/a7dc51f2465fb1d43f37ac402757371e5284615e/src/libANGLE/Context.cpp
[modify] https://crrev.com/a7dc51f2465fb1d43f37ac402757371e5284615e/src/compiler/translator/TranslatorESSL.cpp
[modify] https://crrev.com/a7dc51f2465fb1d43f37ac402757371e5284615e/src/libANGLE/PixelLocalStorage.cpp
[modify] https://crrev.com/a7dc51f2465fb1d43f37ac402757371e5284615e/src/compiler/translator/Compiler.h
[modify] https://crrev.com/a7dc51f2465fb1d43f37ac402757371e5284615e/src/common/utilities.h
[modify] https://crrev.com/a7dc51f2465fb1d43f37ac402757371e5284615e/src/compiler/translator/TranslatorVulkan.cpp
[modify] https://crrev.com/a7dc51f2465fb1d43f37ac402757371e5284615e/include/platform/FrontendFeatures_autogen.h
[modify] https://crrev.com/a7dc51f2465fb1d43f37ac402757371e5284615e/src/compiler/translator/tree_ops/RewritePixelLocalStorage.h
[modify] https://crrev.com/a7dc51f2465fb1d43f37ac402757371e5284615e/src/libANGLE/Compiler.cpp
[modify] https://crrev.com/a7dc51f2465fb1d43f37ac402757371e5284615e/src/libANGLE/renderer/vulkan/RendererVk.cpp
[modify] https://crrev.com/a7dc51f2465fb1d43f37ac402757371e5284615e/src/compiler/translator/tree_ops/RewritePixelLocalStorage.cpp
[modify] https://crrev.com/a7dc51f2465fb1d43f37ac402757371e5284615e/src/libANGLE/renderer/null/ContextNULL.cpp
[modify] https://crrev.com/a7dc51f2465fb1d43f37ac402757371e5284615e/src/tests/gl_tests/PixelLocalStorageTest.cpp
[modify] https://crrev.com/a7dc51f2465fb1d43f37ac402757371e5284615e/src/libANGLE/renderer/vulkan/vk_caps_utils.cpp
[modify] https://crrev.com/a7dc51f2465fb1d43f37ac402757371e5284615e/include/GLSLANG/ShaderLang.h
[modify] https://crrev.com/a7dc51f2465fb1d43f37ac402757371e5284615e/scripts/code_generation_hashes/ANGLE_features.json

Git Watcher via monorail

unread,
Oct 5, 2022, 10:14:17 PM10/5/22
to angleproj...@googlegroups.com

Comment #73 on issue 7279 by Git Watcher: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c73


The following revision refers to this bug:
https://chromium.googlesource.com/angle/angle/+/b5514bb256e99681984edbc3527e3937c9ace4de

commit b5514bb256e99681984edbc3527e3937c9ace4de
Author: Chris Dalton <ch...@rive.app>
Date: Thu Sep 22 02:47:00 2022

Support pixel local storage on ES 3.0

Now that the application-facing API is implemented, we don't have to
rely on ES 3.1 anymore. Expose and test the extension on ES 3.0.

Bug: angleproject:7279
Change-Id: I5635620b9088201c20bafd283813092a329225d6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3915327
Reviewed-by: Shahbaz Youssefi <syou...@chromium.org>
Reviewed-by: Chris Dalton <ch...@rive.app>

Reviewed-by: Kenneth Russell <k...@chromium.org>
Commit-Queue: Chris Dalton <ch...@rive.app>

[modify] https://crrev.com/b5514bb256e99681984edbc3527e3937c9ace4de/src/compiler/translator/OutputGLSLBase.cpp
[modify] https://crrev.com/b5514bb256e99681984edbc3527e3937c9ace4de/src/compiler/translator/SymbolTable_ESSL_autogen.cpp
[modify] https://crrev.com/b5514bb256e99681984edbc3527e3937c9ace4de/src/compiler/translator/util.h
[modify] https://crrev.com/b5514bb256e99681984edbc3527e3937c9ace4de/src/compiler/translator/util.cpp
[modify] https://crrev.com/b5514bb256e99681984edbc3527e3937c9ace4de/scripts/code_generation_hashes/Static_builtins.json
[modify] https://crrev.com/b5514bb256e99681984edbc3527e3937c9ace4de/src/compiler/translator/Compiler.cpp
[modify] https://crrev.com/b5514bb256e99681984edbc3527e3937c9ace4de/src/compiler/translator/OutputGLSLBase.h
[modify] https://crrev.com/b5514bb256e99681984edbc3527e3937c9ace4de/src/compiler/translator/glslang.l
[modify] https://crrev.com/b5514bb256e99681984edbc3527e3937c9ace4de/src/compiler/translator/builtin_function_declarations.txt
[modify] https://crrev.com/b5514bb256e99681984edbc3527e3937c9ace4de/src/libANGLE/queryutils.cpp
[modify] https://crrev.com/b5514bb256e99681984edbc3527e3937c9ace4de/src/libANGLE/Context.cpp
[modify] https://crrev.com/b5514bb256e99681984edbc3527e3937c9ace4de/src/compiler/translator/glslang_lex_autogen.cpp
[modify] https://crrev.com/b5514bb256e99681984edbc3527e3937c9ace4de/scripts/code_generation_hashes/ANGLE_shader_translator.json
[modify] https://crrev.com/b5514bb256e99681984edbc3527e3937c9ace4de/src/compiler/translator/TranslatorESSL.cpp
[modify] https://crrev.com/b5514bb256e99681984edbc3527e3937c9ace4de/src/compiler/translator/ParseContext.cpp
[modify] https://crrev.com/b5514bb256e99681984edbc3527e3937c9ace4de/src/libANGLE/renderer/gl/StateManagerGL.cpp
[modify] https://crrev.com/b5514bb256e99681984edbc3527e3937c9ace4de/src/compiler/translator/tree_ops/RewritePixelLocalStorage.cpp
[modify] https://crrev.com/b5514bb256e99681984edbc3527e3937c9ace4de/src/libANGLE/renderer/null/ContextNULL.cpp
[modify] https://crrev.com/b5514bb256e99681984edbc3527e3937c9ace4de/src/compiler/translator/SymbolTable_autogen.cpp
[modify] https://crrev.com/b5514bb256e99681984edbc3527e3937c9ace4de/src/tests/gl_tests/PixelLocalStorageTest.cpp
[modify] https://crrev.com/b5514bb256e99681984edbc3527e3937c9ace4de/src/libANGLE/State.cpp
[modify] https://crrev.com/b5514bb256e99681984edbc3527e3937c9ace4de/src/compiler/translator/Compiler.h
[modify] https://crrev.com/b5514bb256e99681984edbc3527e3937c9ace4de/src/compiler/translator/OutputVulkanGLSL.cpp

Git Watcher via monorail

unread,
Oct 6, 2022, 12:36:20 PM10/6/22
to angleproj...@googlegroups.com

Comment #74 on issue 7279 by Git Watcher: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c74


The following revision refers to this bug:
https://chromium.googlesource.com/angle/angle/+/2d31fe982539d8d3f95132b1f78c0489b7c72af2

commit 2d31fe982539d8d3f95132b1f78c0489b7c72af2
Author: Chris Dalton <ch...@rive.app>
Date: Fri Sep 23 03:04:22 2022

Implement PLS on Apple Silicon

Implements a subset of EXT_shader_framebuffer_fetch in the Metal
translator that is sufficient to support pixel local storage. Metal's
"programmable blending" feature is available on all Apple family GPUs
beginning with version 2.

Support for non-Apple GPUs will come later via readWrite textures,
which can also be coherent by annotating them with
[[raster_order_goup(0)]].

Bug: angleproject:7279
Change-Id: Ic74f6c0d21e87eb919e1f487163388d08d126857
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3916794

Reviewed-by: Kenneth Russell <k...@chromium.org>
Commit-Queue: Chris Dalton <ch...@rive.app>
Reviewed-by: Gregg Tavares <gm...@chromium.org>

[modify] https://crrev.com/2d31fe982539d8d3f95132b1f78c0489b7c72af2/src/libANGLE/renderer/metal/DisplayMtl.h
[modify] https://crrev.com/2d31fe982539d8d3f95132b1f78c0489b7c72af2/src/libANGLE/renderer/metal/ShaderMtl.mm
[modify] https://crrev.com/2d31fe982539d8d3f95132b1f78c0489b7c72af2/src/tests/gl_tests/PixelLocalStorageTest.cpp
[modify] https://crrev.com/2d31fe982539d8d3f95132b1f78c0489b7c72af2/src/compiler/translator/TranslatorMetalDirect/EmitMetal.cpp
[modify] https://crrev.com/2d31fe982539d8d3f95132b1f78c0489b7c72af2/src/libANGLE/renderer/metal/DisplayMtl.mm
[modify] https://crrev.com/2d31fe982539d8d3f95132b1f78c0489b7c72af2/src/compiler/translator/TranslatorMetalDirect/Pipeline.cpp
[modify] https://crrev.com/2d31fe982539d8d3f95132b1f78c0489b7c72af2/src/compiler/translator/TranslatorMetalDirect/RewritePipelines.cpp
[modify] https://crrev.com/2d31fe982539d8d3f95132b1f78c0489b7c72af2/include/GLSLANG/ShaderLang.h
[modify] https://crrev.com/2d31fe982539d8d3f95132b1f78c0489b7c72af2/src/compiler/translator/TranslatorMetalDirect.cpp
[modify] https://crrev.com/2d31fe982539d8d3f95132b1f78c0489b7c72af2/src/compiler/translator/TranslatorMetalDirect.h

Git Watcher via monorail

unread,
Oct 7, 2022, 6:22:07 PM10/7/22
to angleproj...@googlegroups.com

Comment #75 on issue 7279 by Git Watcher: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c75


The following revision refers to this bug:
https://chromium.googlesource.com/angle/angle/+/7c1ddff384e2bba7336d0e29be91b16479156993

commit 7c1ddff384e2bba7336d0e29be91b16479156993
Author: Chris Dalton <ch...@rive.app>
Date: Fri Oct 07 00:28:45 2022

Include Apple1 in the Metal framebuffer-fetch impl of PLS

Framebuffer fetch was mistakenly limited to the Apple2+ GPU families,
but Apple1 also supports programmable blending.

Bug: angleproject:7279
Change-Id: Ia5a63ac1cb6462a6299db12bfb67fea12f15bb8b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3935458

Reviewed-by: Kenneth Russell <k...@chromium.org>
Commit-Queue: Chris Dalton <ch...@rive.app>

Git Watcher via monorail

unread,
Oct 20, 2022, 2:17:07 PM10/20/22
to angleproj...@googlegroups.com

Comment #77 on issue 7279 by Git Watcher: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c77


The following revision refers to this bug:
https://chromium.googlesource.com/angle/angle/+/01e6be3c182ce496e501f3a20ee90c6bd238426a

commit 01e6be3c182ce496e501f3a20ee90c6bd238426a
Author: Chris Dalton <ch...@rive.app>
Date: Thu Oct 20 02:42:30 2022

Actually use EXT_shader_framebuffer_fetch_non_coherent for PLS

Bug: angleproject:7279
Change-Id: I37099a917303ab41d86dbe1203183ac55229942f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3966074
Reviewed-by: Shahbaz Youssefi <syou...@chromium.org>
Commit-Queue: Shahbaz Youssefi <syou...@chromium.org>

[modify] https://crrev.com/01e6be3c182ce496e501f3a20ee90c6bd238426a/src/libANGLE/renderer/gl/renderergl_utils.cpp

Git Watcher via monorail

unread,
Nov 1, 2022, 12:33:10 PM11/1/22
to angleproj...@googlegroups.com

Comment #78 on issue 7279 by Git Watcher: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c78


The following revision refers to this bug:
https://chromium.googlesource.com/angle/angle/+/9f693aa383b2d3ef32179cfefa253db5ddb8c1bb

commit 9f693aa383b2d3ef32179cfefa253db5ddb8c1bb
Author: Chris Dalton <ch...@rive.app>
Date: Sat Oct 22 20:45:59 2022

Implement an allow list for PLS

In order to guarantee no data is lost while using the
EXT_shader_pixel_local_storage extension, we need to restrict
applications to a small subset of commands while pixel local storage is
active. This CL implements the allow list for GL entrypoints using
wildcard matching inside the code generator, and adds custom validation
for the more specific restrictions that go into effect when PLS is
active.

Bug: angleproject:7279
Change-Id: I5dd48bd93c10e8775f32be32a4fcf17855eb2f0e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3932552
Reviewed-by: Kenneth Russell <k...@chromium.org>
Reviewed-by: Shahbaz Youssefi <syou...@chromium.org>
Commit-Queue: Chris Dalton <ch...@rive.app>

[modify] https://crrev.com/9f693aa383b2d3ef32179cfefa253db5ddb8c1bb/src/libANGLE/validationES3.h
[add] https://crrev.com/9f693aa383b2d3ef32179cfefa253db5ddb8c1bb/src/libANGLE/entry_points_utils.cpp
[modify] https://crrev.com/9f693aa383b2d3ef32179cfefa253db5ddb8c1bb/extensions/ANGLE_shader_pixel_local_storage.txt
[modify] https://crrev.com/9f693aa383b2d3ef32179cfefa253db5ddb8c1bb/src/libGLESv2/entry_points_gles_2_0_autogen.cpp
[modify] https://crrev.com/9f693aa383b2d3ef32179cfefa253db5ddb8c1bb/src/libANGLE/queryutils.cpp
[modify] https://crrev.com/9f693aa383b2d3ef32179cfefa253db5ddb8c1bb/src/libANGLE/Context.cpp
[modify] https://crrev.com/9f693aa383b2d3ef32179cfefa253db5ddb8c1bb/src/libGLESv2/entry_points_gles_ext_autogen.cpp
[modify] https://crrev.com/9f693aa383b2d3ef32179cfefa253db5ddb8c1bb/src/libANGLE/PixelLocalStorage.cpp
[modify] https://crrev.com/9f693aa383b2d3ef32179cfefa253db5ddb8c1bb/src/libANGLE/ErrorStrings.h
[modify] https://crrev.com/9f693aa383b2d3ef32179cfefa253db5ddb8c1bb/src/libANGLE/validationESEXT.cpp
[modify] https://crrev.com/9f693aa383b2d3ef32179cfefa253db5ddb8c1bb/src/libANGLE/entry_points_utils.h
[modify] https://crrev.com/9f693aa383b2d3ef32179cfefa253db5ddb8c1bb/src/libANGLE/validationES32.cpp
[modify] https://crrev.com/9f693aa383b2d3ef32179cfefa253db5ddb8c1bb/src/libANGLE/State.cpp
[modify] https://crrev.com/9f693aa383b2d3ef32179cfefa253db5ddb8c1bb/src/libANGLE/State.h
[modify] https://crrev.com/9f693aa383b2d3ef32179cfefa253db5ddb8c1bb/src/libGLESv2/entry_points_gles_3_2_autogen.cpp
[modify] https://crrev.com/9f693aa383b2d3ef32179cfefa253db5ddb8c1bb/src/libGLESv2.gni
[modify] https://crrev.com/9f693aa383b2d3ef32179cfefa253db5ddb8c1bb/src/libGLESv2/entry_points_gles_1_0_autogen.cpp
[modify] https://crrev.com/9f693aa383b2d3ef32179cfefa253db5ddb8c1bb/scripts/code_generation_hashes/GL_EGL_entry_points.json
[modify] https://crrev.com/9f693aa383b2d3ef32179cfefa253db5ddb8c1bb/src/libANGLE/PixelLocalStorage.h
[modify] https://crrev.com/9f693aa383b2d3ef32179cfefa253db5ddb8c1bb/src/libGLESv2/entry_points_gles_3_0_autogen.cpp
[modify] https://crrev.com/9f693aa383b2d3ef32179cfefa253db5ddb8c1bb/src/libANGLE/validationES2.cpp
[modify] https://crrev.com/9f693aa383b2d3ef32179cfefa253db5ddb8c1bb/scripts/generate_entry_points.py
[modify] https://crrev.com/9f693aa383b2d3ef32179cfefa253db5ddb8c1bb/src/libGLESv2/entry_points_gles_3_1_autogen.cpp
[modify] https://crrev.com/9f693aa383b2d3ef32179cfefa253db5ddb8c1bb/src/libGLESv2/entry_points_gl_3_autogen.cpp
[modify] https://crrev.com/9f693aa383b2d3ef32179cfefa253db5ddb8c1bb/src/libGLESv2/entry_points_gl_1_autogen.cpp
[modify] https://crrev.com/9f693aa383b2d3ef32179cfefa253db5ddb8c1bb/include/GLES2/gl2ext_angle.h
[modify] https://crrev.com/9f693aa383b2d3ef32179cfefa253db5ddb8c1bb/src/libGLESv2/entry_points_gl_4_autogen.cpp
[modify] https://crrev.com/9f693aa383b2d3ef32179cfefa253db5ddb8c1bb/src/libANGLE/renderer/null/ContextNULL.cpp
[modify] https://crrev.com/9f693aa383b2d3ef32179cfefa253db5ddb8c1bb/src/tests/gl_tests/PixelLocalStorageTest.cpp
[modify] https://crrev.com/9f693aa383b2d3ef32179cfefa253db5ddb8c1bb/src/libANGLE/validationES3.cpp

Git Watcher via monorail

unread,
Nov 3, 2022, 10:42:12 AM11/3/22
to angleproj...@googlegroups.com

Comment #79 on issue 7279 by Git Watcher: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c79


The following revision refers to this bug:
https://chromium.googlesource.com/angle/angle/+/5e95a4d9b7de93d727f12888145938b84812bea5

commit 5e95a4d9b7de93d727f12888145938b84812bea5
Author: Chris Dalton <ch...@rive.app>
Date: Fri Oct 07 06:52:38 2022

Add an EXT_shader_pixel_local_storage impl of PLS

Translates ANGLE_shader_pixel_local_storage shaders directly to
EXT_shader_pixel_local_storage.

Polyfills load/store operations using internal fullscreen draws.

Since the ANGLE extension needs the ability to preserve all active PLS
planes to textures, we can only support this extension when the backend
context also has access to ES 3.1 shader images.

Bug: angleproject:7279
Bug: angleproject:7771
Change-Id: Id348bde412efcc081ff29ee05ec59ad652f77569
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3966075
Reviewed-by: Geoff Lang <geof...@chromium.org>
Commit-Queue: Shahbaz Youssefi <syou...@chromium.org>
Reviewed-by: Shahbaz Youssefi <syou...@chromium.org>

[modify] https://crrev.com/5e95a4d9b7de93d727f12888145938b84812bea5/src/libANGLE/renderer/gl/ShaderGL.cpp
[modify] https://crrev.com/5e95a4d9b7de93d727f12888145938b84812bea5/src/compiler/translator/OutputGLSLBase.cpp
[modify] https://crrev.com/5e95a4d9b7de93d727f12888145938b84812bea5/src/libANGLE/renderer/gl/renderergl_utils.cpp
[modify] https://crrev.com/5e95a4d9b7de93d727f12888145938b84812bea5/src/libANGLE/Caps.h
[modify] https://crrev.com/5e95a4d9b7de93d727f12888145938b84812bea5/src/tests/angle_end2end_tests_expectations.txt
[modify] https://crrev.com/5e95a4d9b7de93d727f12888145938b84812bea5/src/libANGLE/renderer/ContextImpl.cpp
[modify] https://crrev.com/5e95a4d9b7de93d727f12888145938b84812bea5/src/libANGLE/renderer/gl/RendererGL.cpp
[modify] https://crrev.com/5e95a4d9b7de93d727f12888145938b84812bea5/src/libANGLE/renderer/gl/renderergl_utils.h
[modify] https://crrev.com/5e95a4d9b7de93d727f12888145938b84812bea5/include/GLSLANG/ShaderVars.h
[modify] https://crrev.com/5e95a4d9b7de93d727f12888145938b84812bea5/src/libANGLE/Context.cpp
[modify] https://crrev.com/5e95a4d9b7de93d727f12888145938b84812bea5/src/compiler/translator/TranslatorESSL.cpp
[modify] https://crrev.com/5e95a4d9b7de93d727f12888145938b84812bea5/src/libANGLE/PixelLocalStorage.cpp
[modify] https://crrev.com/5e95a4d9b7de93d727f12888145938b84812bea5/src/libANGLE/renderer/gl/BUILD.gn
[add] https://crrev.com/5e95a4d9b7de93d727f12888145938b84812bea5/src/libANGLE/renderer/gl/PLSProgramCache.h
[modify] https://crrev.com/5e95a4d9b7de93d727f12888145938b84812bea5/src/compiler/translator/CollectVariables.cpp
[modify] https://crrev.com/5e95a4d9b7de93d727f12888145938b84812bea5/src/libANGLE/Context.h
[modify] https://crrev.com/5e95a4d9b7de93d727f12888145938b84812bea5/src/compiler/translator/BaseTypes.h
[modify] https://crrev.com/5e95a4d9b7de93d727f12888145938b84812bea5/src/libANGLE/PixelLocalStorage.h
[modify] https://crrev.com/5e95a4d9b7de93d727f12888145938b84812bea5/include/platform/FeaturesGL_autogen.h
[modify] https://crrev.com/5e95a4d9b7de93d727f12888145938b84812bea5/src/libANGLE/renderer/gl/ContextGL.cpp
[add] https://crrev.com/5e95a4d9b7de93d727f12888145938b84812bea5/src/libANGLE/renderer/gl/PLSProgramCache.cpp
[modify] https://crrev.com/5e95a4d9b7de93d727f12888145938b84812bea5/include/platform/gl_features.json
[modify] https://crrev.com/5e95a4d9b7de93d727f12888145938b84812bea5/util/angle_features_autogen.cpp
[modify] https://crrev.com/5e95a4d9b7de93d727f12888145938b84812bea5/src/libANGLE/renderer/ContextImpl.h
[modify] https://crrev.com/5e95a4d9b7de93d727f12888145938b84812bea5/src/compiler/translator/tree_ops/RewritePixelLocalStorage.cpp
[modify] https://crrev.com/5e95a4d9b7de93d727f12888145938b84812bea5/src/libANGLE/renderer/gl/RendererGL.h
[modify] https://crrev.com/5e95a4d9b7de93d727f12888145938b84812bea5/src/tests/gl_tests/PixelLocalStorageTest.cpp
[modify] https://crrev.com/5e95a4d9b7de93d727f12888145938b84812bea5/util/angle_features_autogen.h
[modify] https://crrev.com/5e95a4d9b7de93d727f12888145938b84812bea5/src/libANGLE/renderer/gl/ContextGL.h
[modify] https://crrev.com/5e95a4d9b7de93d727f12888145938b84812bea5/scripts/code_generation_hashes/ANGLE_features.json
[modify] https://crrev.com/5e95a4d9b7de93d727f12888145938b84812bea5/include/GLSLANG/ShaderLang.h

Git Watcher via monorail

unread,
Nov 3, 2022, 8:56:10 PM11/3/22
to angleproj...@googlegroups.com

Comment #80 on issue 7279 by Git Watcher: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c80


The following revision refers to this bug:
https://chromium.googlesource.com/angle/angle/+/3605b399e094948159fe0a3578c5cec537a4e336

commit 3605b399e094948159fe0a3578c5cec537a4e336
Author: Chris Dalton <ch...@rive.app>
Date: Thu Oct 20 23:00:02 2022

Move PLS clear values back into context state

The API that required packing raw data into a buffer was un-ergonomic
for developers and difficult to implement for WebGL vendors.

Bug: angleproject:7279
Change-Id: If7c98908c285462c5775e8e2d8811883be139f64
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3972376
Commit-Queue: Chris Dalton <ch...@rive.app>
Reviewed-by: Kenneth Russell <k...@chromium.org>
Reviewed-by: Shahbaz Youssefi <syou...@chromium.org>

[modify] https://crrev.com/3605b399e094948159fe0a3578c5cec537a4e336/src/libANGLE/Context_gles_ext_autogen.h
[modify] https://crrev.com/3605b399e094948159fe0a3578c5cec537a4e336/util/capture/trace_gles_loader_autogen.h
[modify] https://crrev.com/3605b399e094948159fe0a3578c5cec537a4e336/src/libANGLE/renderer/ContextImpl.cpp
[modify] https://crrev.com/3605b399e094948159fe0a3578c5cec537a4e336/util/gles_loader_autogen.cpp
[modify] https://crrev.com/3605b399e094948159fe0a3578c5cec537a4e336/src/common/entry_points_enum_autogen.cpp
[modify] https://crrev.com/3605b399e094948159fe0a3578c5cec537a4e336/src/common/gl_enum_utils_autogen.cpp
[modify] https://crrev.com/3605b399e094948159fe0a3578c5cec537a4e336/src/libANGLE/ErrorStrings.h
[modify] https://crrev.com/3605b399e094948159fe0a3578c5cec537a4e336/src/libANGLE/validationESEXT.cpp
[modify] https://crrev.com/3605b399e094948159fe0a3578c5cec537a4e336/src/common/gl_enum_utils_autogen.h
[modify] https://crrev.com/3605b399e094948159fe0a3578c5cec537a4e336/src/libANGLE/State.cpp
[modify] https://crrev.com/3605b399e094948159fe0a3578c5cec537a4e336/src/libANGLE/validationESEXT_autogen.h
[modify] https://crrev.com/3605b399e094948159fe0a3578c5cec537a4e336/src/libGLESv2/libGLESv2_autogen.def
[modify] https://crrev.com/3605b399e094948159fe0a3578c5cec537a4e336/src/libANGLE/Context.h
[modify] https://crrev.com/3605b399e094948159fe0a3578c5cec537a4e336/util/gles_loader_autogen.h
[modify] https://crrev.com/3605b399e094948159fe0a3578c5cec537a4e336/src/libGLESv2/proc_table_glx_autogen.cpp
[modify] https://crrev.com/3605b399e094948159fe0a3578c5cec537a4e336/src/libGLESv2/opengl32_with_wgl_autogen.def
[modify] https://crrev.com/3605b399e094948159fe0a3578c5cec537a4e336/src/libANGLE/renderer/gl/ContextGL.cpp
[modify] https://crrev.com/3605b399e094948159fe0a3578c5cec537a4e336/src/libANGLE/renderer/gl/PLSProgramCache.cpp
[modify] https://crrev.com/3605b399e094948159fe0a3578c5cec537a4e336/scripts/code_generation_hashes/proc_table.json
[modify] https://crrev.com/3605b399e094948159fe0a3578c5cec537a4e336/src/tests/gl_tests/PixelLocalStorageTest.cpp
[modify] https://crrev.com/3605b399e094948159fe0a3578c5cec537a4e336/src/common/entry_points_enum_autogen.h
[modify] https://crrev.com/3605b399e094948159fe0a3578c5cec537a4e336/scripts/gl_angle_ext.xml
[modify] https://crrev.com/3605b399e094948159fe0a3578c5cec537a4e336/src/libANGLE/validationES3.cpp
[modify] https://crrev.com/3605b399e094948159fe0a3578c5cec537a4e336/scripts/code_generation_hashes/GLenum_value_to_string_map.json
[modify] https://crrev.com/3605b399e094948159fe0a3578c5cec537a4e336/src/libANGLE/capture/capture_gles_ext_autogen.cpp
[modify] https://crrev.com/3605b399e094948159fe0a3578c5cec537a4e336/src/libGLESv2/libGLESv2_autogen.cpp
[modify] https://crrev.com/3605b399e094948159fe0a3578c5cec537a4e336/src/libANGLE/capture/capture_gles_ext_autogen.h
[modify] https://crrev.com/3605b399e094948159fe0a3578c5cec537a4e336/src/libGLESv2/libGLESv2_no_capture_autogen.def
[modify] https://crrev.com/3605b399e094948159fe0a3578c5cec537a4e336/util/capture/trace_gles_loader_autogen.cpp
[modify] https://crrev.com/3605b399e094948159fe0a3578c5cec537a4e336/extensions/ANGLE_shader_pixel_local_storage.txt
[modify] https://crrev.com/3605b399e094948159fe0a3578c5cec537a4e336/src/libGLESv2/proc_table_wgl_autogen.cpp
[modify] https://crrev.com/3605b399e094948159fe0a3578c5cec537a4e336/src/libANGLE/Context.cpp
[modify] https://crrev.com/3605b399e094948159fe0a3578c5cec537a4e336/src/libGLESv2/entry_points_gles_ext_autogen.cpp
[modify] https://crrev.com/3605b399e094948159fe0a3578c5cec537a4e336/scripts/code_generation_hashes/GL_EGL_WGL_loader.json
[modify] https://crrev.com/3605b399e094948159fe0a3578c5cec537a4e336/src/libANGLE/PixelLocalStorage.cpp
[modify] https://crrev.com/3605b399e094948159fe0a3578c5cec537a4e336/src/libANGLE/renderer/gl/PLSProgramCache.h
[modify] https://crrev.com/3605b399e094948159fe0a3578c5cec537a4e336/src/libANGLE/capture/capture_gles_ext_params.cpp
[modify] https://crrev.com/3605b399e094948159fe0a3578c5cec537a4e336/src/libGLESv2/entry_points_gles_ext_autogen.h
[modify] https://crrev.com/3605b399e094948159fe0a3578c5cec537a4e336/src/libGLESv2/opengl32_autogen.def
[modify] https://crrev.com/3605b399e094948159fe0a3578c5cec537a4e336/src/libGLESv2/proc_table_egl_autogen.cpp
[modify] https://crrev.com/3605b399e094948159fe0a3578c5cec537a4e336/scripts/code_generation_hashes/GL_EGL_entry_points.json
[modify] https://crrev.com/3605b399e094948159fe0a3578c5cec537a4e336/src/libANGLE/PixelLocalStorage.h
[modify] https://crrev.com/3605b399e094948159fe0a3578c5cec537a4e336/include/GLES2/gl2ext_angle.h
[modify] https://crrev.com/3605b399e094948159fe0a3578c5cec537a4e336/src/libANGLE/renderer/ContextImpl.h
[modify] https://crrev.com/3605b399e094948159fe0a3578c5cec537a4e336/src/libGLESv2/libGLESv2_with_capture_autogen.def
[modify] https://crrev.com/3605b399e094948159fe0a3578c5cec537a4e336/util/capture/frame_capture_replay_autogen.cpp
[modify] https://crrev.com/3605b399e094948159fe0a3578c5cec537a4e336/scripts/code_generation_hashes/Extension_files.json
[modify] https://crrev.com/3605b399e094948159fe0a3578c5cec537a4e336/src/libANGLE/renderer/gl/ContextGL.h

Git Watcher via monorail

unread,
Nov 4, 2022, 7:14:20 PM11/4/22
to angleproj...@googlegroups.com

Comment #81 on issue 7279 by Git Watcher: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c81


The following revision refers to this bug:
https://chromium.googlesource.com/angle/angle/+/9bda9a79b4ace67efe5679db819feaef97b62fcb

commit 9bda9a79b4ace67efe5679db819feaef97b62fcb
Author: Chris Dalton <ch...@rive.app>
Date: Sun Oct 23 04:05:11 2022

Add Store Ops to pixel local storage

Browsers will need the ability to pre-empt pixel local storage, which
means every plane will need a backing store to dump to. Store Ops allow
the app to still avoid memory transactions at the end of PLS even if
their plane has a backing texture.

Bug: angleproject:7279
Change-Id: I3a3efa21773f87c03cd346a996e3c638028c68ab
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3974652
Commit-Queue: Chris Dalton <ch...@rive.app>

Reviewed-by: Shahbaz Youssefi <syou...@chromium.org>
Reviewed-by: Kenneth Russell <k...@chromium.org>

[modify] https://crrev.com/9bda9a79b4ace67efe5679db819feaef97b62fcb/src/libANGLE/capture/capture_gles_ext_autogen.h
[modify] https://crrev.com/9bda9a79b4ace67efe5679db819feaef97b62fcb/src/libANGLE/Context_gles_ext_autogen.h
[modify] https://crrev.com/9bda9a79b4ace67efe5679db819feaef97b62fcb/extensions/ANGLE_shader_pixel_local_storage.txt
[modify] https://crrev.com/9bda9a79b4ace67efe5679db819feaef97b62fcb/src/libANGLE/renderer/ContextImpl.cpp
[modify] https://crrev.com/9bda9a79b4ace67efe5679db819feaef97b62fcb/src/libANGLE/Context.cpp
[modify] https://crrev.com/9bda9a79b4ace67efe5679db819feaef97b62fcb/src/libGLESv2/entry_points_gles_ext_autogen.cpp
[modify] https://crrev.com/9bda9a79b4ace67efe5679db819feaef97b62fcb/scripts/code_generation_hashes/GL_EGL_WGL_loader.json
[modify] https://crrev.com/9bda9a79b4ace67efe5679db819feaef97b62fcb/src/libANGLE/PixelLocalStorage.cpp
[modify] https://crrev.com/9bda9a79b4ace67efe5679db819feaef97b62fcb/src/libANGLE/ErrorStrings.h
[modify] https://crrev.com/9bda9a79b4ace67efe5679db819feaef97b62fcb/src/libANGLE/validationESEXT.cpp
[modify] https://crrev.com/9bda9a79b4ace67efe5679db819feaef97b62fcb/src/libANGLE/State.cpp
[modify] https://crrev.com/9bda9a79b4ace67efe5679db819feaef97b62fcb/src/libANGLE/validationESEXT_autogen.h
[modify] https://crrev.com/9bda9a79b4ace67efe5679db819feaef97b62fcb/src/libANGLE/Context.h
[modify] https://crrev.com/9bda9a79b4ace67efe5679db819feaef97b62fcb/src/libANGLE/State.h
[modify] https://crrev.com/9bda9a79b4ace67efe5679db819feaef97b62fcb/src/libANGLE/capture/capture_gles_ext_params.cpp
[modify] https://crrev.com/9bda9a79b4ace67efe5679db819feaef97b62fcb/src/libGLESv2/entry_points_gles_ext_autogen.h
[modify] https://crrev.com/9bda9a79b4ace67efe5679db819feaef97b62fcb/scripts/code_generation_hashes/GL_EGL_entry_points.json
[modify] https://crrev.com/9bda9a79b4ace67efe5679db819feaef97b62fcb/src/libANGLE/PixelLocalStorage.h
[modify] https://crrev.com/9bda9a79b4ace67efe5679db819feaef97b62fcb/src/libANGLE/renderer/gl/ContextGL.cpp
[modify] https://crrev.com/9bda9a79b4ace67efe5679db819feaef97b62fcb/src/libANGLE/renderer/ContextImpl.h
[modify] https://crrev.com/9bda9a79b4ace67efe5679db819feaef97b62fcb/include/GLES2/gl2ext_angle.h
[modify] https://crrev.com/9bda9a79b4ace67efe5679db819feaef97b62fcb/scripts/code_generation_hashes/proc_table.json
[modify] https://crrev.com/9bda9a79b4ace67efe5679db819feaef97b62fcb/src/tests/gl_tests/PixelLocalStorageTest.cpp
[modify] https://crrev.com/9bda9a79b4ace67efe5679db819feaef97b62fcb/util/capture/frame_capture_replay_autogen.cpp
[modify] https://crrev.com/9bda9a79b4ace67efe5679db819feaef97b62fcb/scripts/code_generation_hashes/Extension_files.json
[modify] https://crrev.com/9bda9a79b4ace67efe5679db819feaef97b62fcb/scripts/gl_angle_ext.xml
[modify] https://crrev.com/9bda9a79b4ace67efe5679db819feaef97b62fcb/src/libANGLE/renderer/gl/ContextGL.h
[modify] https://crrev.com/9bda9a79b4ace67efe5679db819feaef97b62fcb/src/libGLESv2/libGLESv2_autogen.cpp
[modify] https://crrev.com/9bda9a79b4ace67efe5679db819feaef97b62fcb/src/libANGLE/capture/capture_gles_ext_autogen.cpp
[modify] https://crrev.com/9bda9a79b4ace67efe5679db819feaef97b62fcb/scripts/code_generation_hashes/GLenum_value_to_string_map.json

Git Watcher via monorail

unread,
Nov 30, 2022, 1:36:09 PM11/30/22
to angleproj...@googlegroups.com

Comment #83 on issue 7279 by Git Watcher: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c83


The following revision refers to this bug:
https://chromium.googlesource.com/angle/angle/+/db67df60f8c8020017c36b2dd446bc3d86614ffe

commit db67df60f8c8020017c36b2dd446bc3d86614ffe
Author: Chris Dalton <ch...@rive.app>
Date: Mon Oct 31 19:01:25 2022

Metal texture cleanups

* Record the texture arguments' location in main() instead of inferring
their position based on an assumption that the texture pipeline comes
last.

* Fix one spot that was using mMainSamplerIndex that should have been
using mMainTextureIndex.

Bug: angleproject:7279
Change-Id: I53af0f016e52217c53d98b560011ffe958746cda
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3993362
Reviewed-by: Kenneth Russell <k...@chromium.org>
Commit-Queue: Chris Dalton <ch...@rive.app>

[modify] https://crrev.com/db67df60f8c8020017c36b2dd446bc3d86614ffe/src/compiler/translator/TranslatorMetalDirect/EmitMetal.cpp
[modify] https://crrev.com/db67df60f8c8020017c36b2dd446bc3d86614ffe/src/compiler/translator/TranslatorMetalDirect/RewritePipelines.cpp

Git Watcher via monorail

unread,
Dec 1, 2022, 2:29:21 AM12/1/22
to angleproj...@googlegroups.com

Comment #84 on issue 7279 by Git Watcher: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c84


The following revision refers to this bug:
https://chromium.googlesource.com/angle/angle/+/a4db9477171568a008591db67c64a410ee3f3e80

commit a4db9477171568a008591db67c64a410ee3f3e80
Author: Chris Dalton <ch...@rive.app>
Date: Thu Oct 06 16:35:39 2022

Implement pixel local storage with metal::read_write textures

Metal's programmable blending feature isn't available on non-Apple
Silicon, so on these devices we have to polyfill pixel local storage
using read_write textures, which can also be coherent if
raster_order_groups are supported.

This change leverages the existing PLS transformation to images, and
implements just enough shader image functionality in Metal to support
the pixel local storage usecase. Missing shader image features are
marked with UNIMPLEMENTED().

Bug: angleproject:7279
Bug: angleproject:7792
Bug: angleproject:7794
Bug: angleproject:7797
Bug: angleproject:7803
Change-Id: Ia96a714693d352d57351a1bae4f45437dde000e4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3993363
Reviewed-by: Kenneth Russell <k...@chromium.org>
Reviewed-by: Quyen Le <lehoan...@chromium.org>
Commit-Queue: Chris Dalton <ch...@rive.app>
Reviewed-by: Kyle Piddington <kpidd...@apple.com>

[modify] https://crrev.com/a4db9477171568a008591db67c64a410ee3f3e80/src/libANGLE/renderer/metal/mtl_common.h
[modify] https://crrev.com/a4db9477171568a008591db67c64a410ee3f3e80/src/libANGLE/renderer/metal/TextureMtl.h
[modify] https://crrev.com/a4db9477171568a008591db67c64a410ee3f3e80/src/libANGLE/renderer/metal/mtl_resources.h
[modify] https://crrev.com/a4db9477171568a008591db67c64a410ee3f3e80/src/tests/angle_end2end_tests_expectations.txt
[modify] https://crrev.com/a4db9477171568a008591db67c64a410ee3f3e80/src/libANGLE/renderer/metal/mtl_state_cache.h
[modify] https://crrev.com/a4db9477171568a008591db67c64a410ee3f3e80/src/compiler/translator/TranslatorMetalDirect.cpp
[modify] https://crrev.com/a4db9477171568a008591db67c64a410ee3f3e80/src/libANGLE/renderer/metal/mtl_state_cache.mm
[modify] https://crrev.com/a4db9477171568a008591db67c64a410ee3f3e80/src/libANGLE/Context.cpp
[modify] https://crrev.com/a4db9477171568a008591db67c64a410ee3f3e80/src/libANGLE/renderer/metal/DisplayMtl.h
[modify] https://crrev.com/a4db9477171568a008591db67c64a410ee3f3e80/include/platform/FeaturesMtl_autogen.h
[modify] https://crrev.com/a4db9477171568a008591db67c64a410ee3f3e80/src/compiler/translator/TranslatorMetalDirect/ProgramPrelude.cpp
[modify] https://crrev.com/a4db9477171568a008591db67c64a410ee3f3e80/src/libANGLE/renderer/metal/mtl_resources.mm
[modify] https://crrev.com/a4db9477171568a008591db67c64a410ee3f3e80/src/libANGLE/renderer/metal/mtl_command_buffer.h
[modify] https://crrev.com/a4db9477171568a008591db67c64a410ee3f3e80/src/compiler/translator/TranslatorMetalDirect/Pipeline.h
[modify] https://crrev.com/a4db9477171568a008591db67c64a410ee3f3e80/src/compiler/translator/TranslatorMetalDirect/EmitMetal.cpp
[modify] https://crrev.com/a4db9477171568a008591db67c64a410ee3f3e80/src/libANGLE/renderer/metal/FrameBufferMtl.mm
[modify] https://crrev.com/a4db9477171568a008591db67c64a410ee3f3e80/src/libANGLE/renderer/metal/DisplayMtl.mm
[modify] https://crrev.com/a4db9477171568a008591db67c64a410ee3f3e80/src/compiler/translator/TranslatorMetalDirect/Pipeline.cpp
[modify] https://crrev.com/a4db9477171568a008591db67c64a410ee3f3e80/src/libANGLE/renderer/metal/TextureMtl.mm
[modify] https://crrev.com/a4db9477171568a008591db67c64a410ee3f3e80/src/libANGLE/renderer/metal/mtl_command_buffer.mm
[modify] https://crrev.com/a4db9477171568a008591db67c64a410ee3f3e80/src/libANGLE/renderer/metal/ContextMtl.mm
[modify] https://crrev.com/a4db9477171568a008591db67c64a410ee3f3e80/src/compiler/translator/TranslatorMetalDirect.h
[modify] https://crrev.com/a4db9477171568a008591db67c64a410ee3f3e80/util/angle_features_autogen.cpp
[modify] https://crrev.com/a4db9477171568a008591db67c64a410ee3f3e80/src/compiler/translator/tree_ops/RewritePixelLocalStorage.cpp
[modify] https://crrev.com/a4db9477171568a008591db67c64a410ee3f3e80/src/tests/gl_tests/PixelLocalStorageTest.cpp
[modify] https://crrev.com/a4db9477171568a008591db67c64a410ee3f3e80/util/angle_features_autogen.h
[modify] https://crrev.com/a4db9477171568a008591db67c64a410ee3f3e80/src/libANGLE/renderer/metal/mtl_glslang_mtl_utils.h
[modify] https://crrev.com/a4db9477171568a008591db67c64a410ee3f3e80/src/libANGLE/renderer/metal/mtl_glslang_mtl_utils.mm
[modify] https://crrev.com/a4db9477171568a008591db67c64a410ee3f3e80/src/compiler/translator/TranslatorMetalDirect/RewritePipelines.cpp
[modify] https://crrev.com/a4db9477171568a008591db67c64a410ee3f3e80/src/libANGLE/renderer/metal/ProgramMtl.mm
[modify] https://crrev.com/a4db9477171568a008591db67c64a410ee3f3e80/scripts/code_generation_hashes/ANGLE_features.json
[modify] https://crrev.com/a4db9477171568a008591db67c64a410ee3f3e80/include/platform/mtl_features.json

Git Watcher via monorail

unread,
Dec 1, 2022, 3:07:16 AM12/1/22
to angleproj...@googlegroups.com

Comment #85 on issue 7279 by Git Watcher: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c85


The following revision refers to this bug:
https://chromium.googlesource.com/angle/angle/+/8ee1b89fc5c54a93092467ddf3789aa223396859

commit 8ee1b89fc5c54a93092467ddf3789aa223396859
Author: Chris Dalton <ch...@rive.app>
Date: Fri Nov 04 19:10:37 2022

Refactor pixel local storage options

The various different PLS options were getting scattered and unruly. We
are also in need of more backend-specific PLS options that would be
difficult to add as-is. This CL refactors them into a single
"ShPixelLocalStorageOptions" struct that gets initialized all in one
place, and shared between the compiler and the backends.

Bug: angleproject:7279
Change-Id: Ic58dccb8d1ba350a0b6cc5848ce15bd687e30fad
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4006715
Reviewed-by: Shahbaz Youssefi <syou...@chromium.org>
Commit-Queue: Chris Dalton <ch...@rive.app>

[modify] https://crrev.com/8ee1b89fc5c54a93092467ddf3789aa223396859/src/libANGLE/renderer/vulkan/ShaderVk.cpp
[modify] https://crrev.com/8ee1b89fc5c54a93092467ddf3789aa223396859/src/libANGLE/renderer/gl/ShaderGL.cpp
[modify] https://crrev.com/8ee1b89fc5c54a93092467ddf3789aa223396859/src/libANGLE/renderer/gl/renderergl_utils.cpp
[modify] https://crrev.com/8ee1b89fc5c54a93092467ddf3789aa223396859/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp
[modify] https://crrev.com/8ee1b89fc5c54a93092467ddf3789aa223396859/src/libANGLE/renderer/ContextImpl.cpp
[modify] https://crrev.com/8ee1b89fc5c54a93092467ddf3789aa223396859/src/libANGLE/renderer/gl/renderergl_utils.h
[modify] https://crrev.com/8ee1b89fc5c54a93092467ddf3789aa223396859/src/libANGLE/renderer/null/ShaderNULL.cpp
[modify] https://crrev.com/8ee1b89fc5c54a93092467ddf3789aa223396859/src/compiler/translator/TranslatorESSL.cpp
[modify] https://crrev.com/8ee1b89fc5c54a93092467ddf3789aa223396859/src/libANGLE/renderer/metal/DisplayMtl.h
[modify] https://crrev.com/8ee1b89fc5c54a93092467ddf3789aa223396859/src/libANGLE/renderer/d3d/d3d9/Renderer9.h
[modify] https://crrev.com/8ee1b89fc5c54a93092467ddf3789aa223396859/src/libANGLE/State.cpp
[modify] https://crrev.com/8ee1b89fc5c54a93092467ddf3789aa223396859/src/libANGLE/renderer/metal/ContextMtl.h
[modify] https://crrev.com/8ee1b89fc5c54a93092467ddf3789aa223396859/src/libANGLE/renderer/d3d/d3d11/renderer11_utils.h
[modify] https://crrev.com/8ee1b89fc5c54a93092467ddf3789aa223396859/src/common/utilities.h
[modify] https://crrev.com/8ee1b89fc5c54a93092467ddf3789aa223396859/src/compiler/translator/TranslatorMetalDirect/EmitMetal.cpp
[modify] https://crrev.com/8ee1b89fc5c54a93092467ddf3789aa223396859/src/libANGLE/renderer/gl/ContextGL.cpp
[modify] https://crrev.com/8ee1b89fc5c54a93092467ddf3789aa223396859/src/libANGLE/renderer/metal/ContextMtl.mm
[modify] https://crrev.com/8ee1b89fc5c54a93092467ddf3789aa223396859/src/libANGLE/renderer/metal/ShaderMtl.mm
[modify] https://crrev.com/8ee1b89fc5c54a93092467ddf3789aa223396859/src/compiler/translator/tree_ops/RewritePixelLocalStorage.cpp
[modify] https://crrev.com/8ee1b89fc5c54a93092467ddf3789aa223396859/src/libANGLE/renderer/gl/RendererGL.h
[modify] https://crrev.com/8ee1b89fc5c54a93092467ddf3789aa223396859/src/libANGLE/renderer/null/ContextNULL.h
[modify] https://crrev.com/8ee1b89fc5c54a93092467ddf3789aa223396859/src/libANGLE/renderer/d3d/ShaderD3D.cpp
[modify] https://crrev.com/8ee1b89fc5c54a93092467ddf3789aa223396859/include/GLSLANG/ShaderLang.h
[modify] https://crrev.com/8ee1b89fc5c54a93092467ddf3789aa223396859/src/libANGLE/renderer/metal/TextureMtl.h
[modify] https://crrev.com/8ee1b89fc5c54a93092467ddf3789aa223396859/src/libANGLE/renderer/vulkan/RendererVk.h
[modify] https://crrev.com/8ee1b89fc5c54a93092467ddf3789aa223396859/src/libANGLE/renderer/d3d/d3d9/Context9.cpp
[modify] https://crrev.com/8ee1b89fc5c54a93092467ddf3789aa223396859/src/libANGLE/renderer/gl/RendererGL.cpp
[modify] https://crrev.com/8ee1b89fc5c54a93092467ddf3789aa223396859/src/libANGLE/Context.cpp
[modify] https://crrev.com/8ee1b89fc5c54a93092467ddf3789aa223396859/src/libANGLE/PixelLocalStorage.cpp
[modify] https://crrev.com/8ee1b89fc5c54a93092467ddf3789aa223396859/src/libANGLE/renderer/d3d/d3d11/renderer11_utils.cpp
[modify] https://crrev.com/8ee1b89fc5c54a93092467ddf3789aa223396859/src/libANGLE/renderer/d3d/RendererD3D.h
[modify] https://crrev.com/8ee1b89fc5c54a93092467ddf3789aa223396859/src/libANGLE/renderer/d3d/RendererD3D.cpp
[modify] https://crrev.com/8ee1b89fc5c54a93092467ddf3789aa223396859/src/libANGLE/renderer/vulkan/RendererVk.cpp
[modify] https://crrev.com/8ee1b89fc5c54a93092467ddf3789aa223396859/src/libANGLE/renderer/vulkan/ContextVk.h
[modify] https://crrev.com/8ee1b89fc5c54a93092467ddf3789aa223396859/src/compiler/fuzz/translator_fuzzer.cpp
[modify] https://crrev.com/8ee1b89fc5c54a93092467ddf3789aa223396859/src/libANGLE/renderer/d3d/d3d11/Context11.h
[modify] https://crrev.com/8ee1b89fc5c54a93092467ddf3789aa223396859/src/libANGLE/renderer/metal/DisplayMtl.mm
[modify] https://crrev.com/8ee1b89fc5c54a93092467ddf3789aa223396859/src/libANGLE/renderer/metal/TextureMtl.mm
[modify] https://crrev.com/8ee1b89fc5c54a93092467ddf3789aa223396859/src/libANGLE/renderer/d3d/d3d11/Context11.cpp
[modify] https://crrev.com/8ee1b89fc5c54a93092467ddf3789aa223396859/src/libANGLE/PixelLocalStorage.h
[modify] https://crrev.com/8ee1b89fc5c54a93092467ddf3789aa223396859/src/libANGLE/renderer/ContextImpl.h
[modify] https://crrev.com/8ee1b89fc5c54a93092467ddf3789aa223396859/src/libANGLE/renderer/null/ContextNULL.cpp
[modify] https://crrev.com/8ee1b89fc5c54a93092467ddf3789aa223396859/src/libANGLE/renderer/vulkan/vk_caps_utils.cpp
[modify] https://crrev.com/8ee1b89fc5c54a93092467ddf3789aa223396859/src/libANGLE/renderer/gl/ContextGL.h
[modify] https://crrev.com/8ee1b89fc5c54a93092467ddf3789aa223396859/src/libANGLE/renderer/d3d/d3d11/Renderer11.h
[modify] https://crrev.com/8ee1b89fc5c54a93092467ddf3789aa223396859/src/libANGLE/renderer/vulkan/ContextVk.cpp
[modify] https://crrev.com/8ee1b89fc5c54a93092467ddf3789aa223396859/src/libANGLE/renderer/d3d/d3d9/Context9.h
[modify] https://crrev.com/8ee1b89fc5c54a93092467ddf3789aa223396859/src/libANGLE/renderer/d3d/d3d9/Renderer9.cpp

Git Watcher via monorail

unread,
Dec 9, 2022, 10:33:35 AM12/9/22
to angleproj...@googlegroups.com

Comment #87 on issue 7279 by Git Watcher: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c87


The following revision refers to this bug:
https://chromium.googlesource.com/angle/angle/+/eb1a13d8cf98a6c4e731b4c81a608c4a80f90796

commit eb1a13d8cf98a6c4e731b4c81a608c4a80f90796
Author: Chris Dalton <ch...@rive.app>
Date: Wed Dec 07 04:56:42 2022

Improve PLS load and store op tokens

Define more new tokens that are more clearly named, as opposed to
recycling tokens that were meant for a different purpose.

Bug: angleproject:7279
Change-Id: I840e5ea168235c49eec2693b2231c2d329027b0e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4082057
Reviewed-by: Shahbaz Youssefi <syou...@chromium.org>
Commit-Queue: Shahbaz Youssefi <syou...@chromium.org>
Reviewed-by: Kenneth Russell <k...@chromium.org>

[modify] https://crrev.com/eb1a13d8cf98a6c4e731b4c81a608c4a80f90796/extensions/ANGLE_shader_pixel_local_storage.txt
[modify] https://crrev.com/eb1a13d8cf98a6c4e731b4c81a608c4a80f90796/scripts/code_generation_hashes/GL_EGL_entry_points.json
[modify] https://crrev.com/eb1a13d8cf98a6c4e731b4c81a608c4a80f90796/src/libANGLE/renderer/gl/ContextGL.cpp
[modify] https://crrev.com/eb1a13d8cf98a6c4e731b4c81a608c4a80f90796/scripts/code_generation_hashes/GL_EGL_WGL_loader.json
[modify] https://crrev.com/eb1a13d8cf98a6c4e731b4c81a608c4a80f90796/src/libANGLE/PixelLocalStorage.cpp
[modify] https://crrev.com/eb1a13d8cf98a6c4e731b4c81a608c4a80f90796/include/GLES2/gl2ext_angle.h
[modify] https://crrev.com/eb1a13d8cf98a6c4e731b4c81a608c4a80f90796/src/common/gl_enum_utils_autogen.cpp
[modify] https://crrev.com/eb1a13d8cf98a6c4e731b4c81a608c4a80f90796/scripts/code_generation_hashes/proc_table.json
[modify] https://crrev.com/eb1a13d8cf98a6c4e731b4c81a608c4a80f90796/src/libANGLE/ErrorStrings.h
[modify] https://crrev.com/eb1a13d8cf98a6c4e731b4c81a608c4a80f90796/src/libANGLE/validationESEXT.cpp
[modify] https://crrev.com/eb1a13d8cf98a6c4e731b4c81a608c4a80f90796/src/tests/gl_tests/PixelLocalStorageTest.cpp
[modify] https://crrev.com/eb1a13d8cf98a6c4e731b4c81a608c4a80f90796/scripts/gl_angle_ext.xml
[modify] https://crrev.com/eb1a13d8cf98a6c4e731b4c81a608c4a80f90796/scripts/code_generation_hashes/Extension_files.json
[modify] https://crrev.com/eb1a13d8cf98a6c4e731b4c81a608c4a80f90796/scripts/code_generation_hashes/GLenum_value_to_string_map.json

Git Watcher via monorail

unread,
Dec 13, 2022, 11:33:27 AM12/13/22
to angleproj...@googlegroups.com

Comment #88 on issue 7279 by Git Watcher: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c88


The following revision refers to this bug:
https://chromium.googlesource.com/angle/angle/+/004c5c945254061c89872f4384c9798436680911

commit 004c5c945254061c89872f4384c9798436680911
Author: Chris Dalton <ch...@rive.app>
Date: Sat Dec 10 21:50:01 2022

Prefix all PLS enums with "GL_"

Bug: angleproject:7279
Change-Id: Ifb4062e502305f4e59546f067d195d1a05fbabe4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4095380
Reviewed-by: Shahbaz Youssefi <syou...@chromium.org>
Commit-Queue: Chris Dalton <ch...@rive.app>
Reviewed-by: Steven Noonan <ste...@valvesoftware.com>

[modify] https://crrev.com/004c5c945254061c89872f4384c9798436680911/scripts/code_generation_hashes/GL_EGL_WGL_loader.json
[modify] https://crrev.com/004c5c945254061c89872f4384c9798436680911/src/common/gl_enum_utils_autogen.cpp
[modify] https://crrev.com/004c5c945254061c89872f4384c9798436680911/scripts/code_generation_hashes/proc_table.json
[modify] https://crrev.com/004c5c945254061c89872f4384c9798436680911/scripts/gl_angle_ext.xml
[modify] https://crrev.com/004c5c945254061c89872f4384c9798436680911/scripts/code_generation_hashes/Extension_files.json
[modify] https://crrev.com/004c5c945254061c89872f4384c9798436680911/scripts/code_generation_hashes/GL_EGL_entry_points.json
[modify] https://crrev.com/004c5c945254061c89872f4384c9798436680911/scripts/code_generation_hashes/GLenum_value_to_string_map.json

Git Watcher via monorail

unread,
Mar 3, 2023, 7:57:08 PM3/3/23
to angleproj...@googlegroups.com

Comment #90 on issue 7279 by Git Watcher: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c90


The following revision refers to this bug:
https://chromium.googlesource.com/angle/angle/+/51ddcabfd3abe64b392767828375ae688e5d4f3f

commit 51ddcabfd3abe64b392767828375ae688e5d4f3f
Author: Chris Dalton <ch...@rive.app>
Date: Fri Mar 03 00:52:46 2023

Enable pixel local storage by default

We're ready to start hooking this extension up in Chrome.

Bug: angleproject:7279
Change-Id: I5cb887a6641aa61c2da0dfcc24d2195cf0494f20
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4305361
Reviewed-by: Kenneth Russell <k...@chromium.org>
Commit-Queue: Kenneth Russell <k...@chromium.org>

[modify] https://crrev.com/51ddcabfd3abe64b392767828375ae688e5d4f3f/src/libANGLE/Display.cpp

Git Watcher via monorail

unread,
Mar 10, 2023, 5:03:23 AM3/10/23
to angleproj...@googlegroups.com

Comment #91 on issue 7279 by Git Watcher: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c91


The following revision refers to this bug:
https://chromium.googlesource.com/angle/angle/+/f2e13539b521ebd8cf4a41c92b8a79d537184e35

commit f2e13539b521ebd8cf4a41c92b8a79d537184e35
Author: Chris Dalton <ch...@rive.app>
Date: Fri Mar 03 08:57:43 2023

Implicitly enable PLS dependency extensions

The ANGLE_shader_pixel_local_storage implementation makes internal use
of various other extensions. These extensions must be implicitly enabled
when ANGLE_shader_pixel_local_storage is in use. In this CL:

* Convert ANGLE_shader_pixel_local_storage and
ANGLE_shader_pixel_local_storage_coherent to requestable extensions.

* Implicitly enable the dependency extensions, including each other, at
the time either of these extensions is enabled.

Bug: angleproject:7279
Bug: chromium:1421437
Change-Id: I26acbda776fe7045ea99d4f1e3df445e7a5cfd7f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4306526
Reviewed-by: Shahbaz Youssefi <syou...@chromium.org>
Reviewed-by: Kenneth Russell <k...@chromium.org>
Commit-Queue: Chris Dalton <ch...@rive.app>

[modify] https://crrev.com/f2e13539b521ebd8cf4a41c92b8a79d537184e35/scripts/code_generation_hashes/GL_EGL_WGL_loader.json
[modify] https://crrev.com/f2e13539b521ebd8cf4a41c92b8a79d537184e35/scripts/code_generation_hashes/interpreter_utils.json
[modify] https://crrev.com/f2e13539b521ebd8cf4a41c92b8a79d537184e35/scripts/code_generation_hashes/proc_table.json
[modify] https://crrev.com/f2e13539b521ebd8cf4a41c92b8a79d537184e35/src/libANGLE/gles_extensions_autogen.cpp
[modify] https://crrev.com/f2e13539b521ebd8cf4a41c92b8a79d537184e35/extensions/ANGLE_shader_pixel_local_storage.txt
[modify] https://crrev.com/f2e13539b521ebd8cf4a41c92b8a79d537184e35/src/tests/gl_tests/PixelLocalStorageTest.cpp
[modify] https://crrev.com/f2e13539b521ebd8cf4a41c92b8a79d537184e35/scripts/code_generation_hashes/Extension_files.json
[modify] https://crrev.com/f2e13539b521ebd8cf4a41c92b8a79d537184e35/scripts/code_generation_hashes/GL_EGL_entry_points.json
[modify] https://crrev.com/f2e13539b521ebd8cf4a41c92b8a79d537184e35/scripts/registry_xml.py
[modify] https://crrev.com/f2e13539b521ebd8cf4a41c92b8a79d537184e35/scripts/code_generation_hashes/GLenum_value_to_string_map.json
[modify] https://crrev.com/f2e13539b521ebd8cf4a41c92b8a79d537184e35/src/libANGLE/Context.cpp

su… via monorail

unread,
Mar 14, 2023, 8:32:30 AM3/14/23
to angleproj...@googlegroups.com

Comment #92 on issue 7279 by su...@chromium.org: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c92

Hi,

I'm seeing flaky failures on win-swangle-x64 and win-swangle-tot-swiftshader-x86 bots for PixelLocalStorageTest.ForgetBarrier tests.

Specifically, I regularly see the PixelLocalStorageTest.ForgetBarrier/ES3_Vulkan_SwiftShader_AsyncCommandQueue_EmulatePixelLocalStorage test fail.

See:
https://ci.chromium.org/p/chromium/builders/ci/win-swangle-x64?limit=200
and:
https://ci.chromium.org/ui/p/chromium/builders/ci/win-swangle-tot-swiftshader-x86/84298/overview

Please have a look. Thanks.

k… via monorail

unread,
Mar 16, 2023, 6:40:45 PM3/16/23
to angleproj...@googlegroups.com
Issue 7279: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279

This issue is now blocking issue 1704.
See https://bugs.chromium.org/p/dawn/issues/detail?id=1704

Git Watcher via monorail

unread,
May 16, 2023, 7:29:37 PM5/16/23
to angleproj...@googlegroups.com

Comment #96 on issue 7279 by Git Watcher: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c96


The following revision refers to this bug:
https://chromium.googlesource.com/angle/angle/+/7aadc962bb32d0813e5e358a88bcab6bbe0f036b

commit 7aadc962bb32d0813e5e358a88bcab6bbe0f036b
Author: Chris Dalton <ch...@rive.app>
Date: Sat May 06 01:28:17 2023

Ban transform feedback and blend extensions with PLS

Transform feedback can lead to render pass breaks in the Vulkan backend.

EXT_blend_func_extended may restrict the number of draw buffers
depending on API state, which can invalidate a PLS implementation.

KHR_blend_equation_advanced does not allow multiple draw buffers, which
is required by some PLS implementations.

Bug: angleproject:7279
Change-Id: Id89f0e485ee65f55d802b121018f13b0028d8029
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4510716

Reviewed-by: Shahbaz Youssefi <syou...@chromium.org>
Reviewed-by: Kenneth Russell <k...@chromium.org>
Commit-Queue: Kenneth Russell <k...@chromium.org>

[modify] https://crrev.com/7aadc962bb32d0813e5e358a88bcab6bbe0f036b/src/compiler/translator/ParseContext.h
[modify] https://crrev.com/7aadc962bb32d0813e5e358a88bcab6bbe0f036b/extensions/ANGLE_shader_pixel_local_storage.txt
[modify] https://crrev.com/7aadc962bb32d0813e5e358a88bcab6bbe0f036b/src/compiler/translator/ValidateOutputs.h
[modify] https://crrev.com/7aadc962bb32d0813e5e358a88bcab6bbe0f036b/src/compiler/translator/ValidateOutputs.cpp
[modify] https://crrev.com/7aadc962bb32d0813e5e358a88bcab6bbe0f036b/src/libANGLE/Caps.cpp
[modify] https://crrev.com/7aadc962bb32d0813e5e358a88bcab6bbe0f036b/src/compiler/translator/Compiler.cpp
[modify] https://crrev.com/7aadc962bb32d0813e5e358a88bcab6bbe0f036b/src/libANGLE/validationES2.cpp
[modify] https://crrev.com/7aadc962bb32d0813e5e358a88bcab6bbe0f036b/src/compiler/translator/ParseContext.cpp
[modify] https://crrev.com/7aadc962bb32d0813e5e358a88bcab6bbe0f036b/src/libANGLE/renderer/null/ContextNULL.cpp
[modify] https://crrev.com/7aadc962bb32d0813e5e358a88bcab6bbe0f036b/src/libANGLE/ErrorStrings.h
[modify] https://crrev.com/7aadc962bb32d0813e5e358a88bcab6bbe0f036b/src/libANGLE/validationESEXT.cpp
[modify] https://crrev.com/7aadc962bb32d0813e5e358a88bcab6bbe0f036b/src/tests/gl_tests/PixelLocalStorageTest.cpp

Git Watcher via monorail

unread,
Jan 29, 2024, 11:24:37 PM1/29/24
to angleproj...@googlegroups.com

Comment #103 on issue 7279 by Git Watcher: Implement a pixel local storage extension in ANGLE
https://bugs.chromium.org/p/angleproject/issues/detail?id=7279#c103


The following revision refers to this bug:
https://chromium.googlesource.com/angle/angle/+/ab4aed3fce7c1d51530bd2da2072630515015d32

commit ab4aed3fce7c1d51530bd2da2072630515015d32
Author: Mohan Maiya <m.m...@samsung.com>
Date: Mon Jan 29 16:59:58 2024

Bugfix in PixelLocalStorageTest

Add GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST to following tests -
- PixelLocalStorageValidationTest
- PixelLocalStorageCompilerTest
- PixelLocalStorageTestPreES3

Bug: angleproject:7279
Change-Id: Ibd2e682be195fddff1cf638e37d12bcc740cf3a4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5243831
Reviewed-by: Shahbaz Youssefi <syou...@chromium.org>
Commit-Queue: mohan maiya <m.m...@samsung.com>

[modify] https://crrev.com/ab4aed3fce7c1d51530bd2da2072630515015d32/src/tests/gl_tests/PixelLocalStorageTest.cpp
Reply all
Reply to author
Forward
0 new messages