|
f6e1d4d7
|
2025-05-02T12:02:09
|
|
Fix include header case mismatches
This CL fixes the include header names to be aligned with the actual
file names. It's problematic for cross compile on Linux, where file
system is case sensitive.
Context:
Goma/Reclient's deps scanner was able to handle those case mismatches.
But, Siso's builtin remote execution doesn't resolve them automatically.
Bug: b/401959048
Change-Id: I98282899e31ea801058f82d4cad770413634f4f3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6508684
Reviewed-by: Charlie Lao <cclao@google.com>
Auto-Submit: Junji Watanabe <jwata@google.com>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
cdcf6a63
|
2025-04-22T10:19:33
|
|
Add R10X6G10X6B10X6A10X6 support on angle
Bug: angleproject:409355677
Change-Id: I8115ca73a038360f673552532e9d9b87ff846867
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6438114
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
408f5853
|
2025-04-04T00:00:00
|
|
Make gl::Version data members private
* Further simplified gl::Version implementation by
making data members private and merging them.
* Used proper version struct comparisons instead
of accessing individual version components.
* Moved known version constants to Version.h
for broader availability.
* Removed no longer used helpers:
* PrivateState::getClientMinorVersion()
* State::getClientMinorVersion()
* Context::getClientMinorVersion()
Bug: angleproject:408843436
Change-Id: I3ae8f495269d649253fa2381ecbfc018a184fa20
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6460787
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
78048112
|
2025-01-15T15:13:14
|
|
Fix IndexRange::vertexIndexCount calculation
Use only one loop.
Avoid redundant primitive restart index parameter.
Avoid calling GetPrimitiveRestartIndexFromType() because the algorithm
relies on the value being numeric_limits<T>::max().
Fixes a bug where primitive restart case would process the value
after first primitive restart twice, once in both for loops. This would
result in incorrect vertexIndexCount.
Fix by removing IndexRange::vertexIndexCount, and instead using
IndexRange::mCount == 0 to signify empty range.
Bug: angleproject:401284933
Change-Id: Ifaeb9949f2e852fb7c5ef80bc47f72bfabba21a6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6333541
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
|
|
ecc378cc
|
2025-03-03T16:43:33
|
|
Reland "Dont use Subject/Observer for SwapchainImageChanged"
This is reland of the following CL
https://chromium-review.googlesource.com/c/angle/angle/+/6319893
Because we do deferred ANI (VkAcquireNextImage) call until image is
needed, we need a way to force Context to go through
FramebufferVk::syncState call (FramebufferVk::syncState calls
WindowSurfaceVk::getAttachmentRenderTarget, which end up calling ANI.
Right now we uses subject/observer mechanism, by sending
angle::SubjectMessage::SwapchainImageChanged to all observers of
WindowSurfaceVk. In this case it is egl::Surface. Then eglSurface
redirects this message to its observers, which are all gl::Framebuffer's
attachments: color, depth, stencil. Even though only color attachment
needs to be notified, but because we don't have a separate list of
observers, depth/stencil attachment also receive the notification and
they early out. Then gl::Framebuffer sets
DIRTY_BIT_COLOR_BUFFER_CONTENTS_0 dirty bit and send the
angle::SubjectMessage::DirtyBitsFlagged to Context, which dirty DrawFBO
and ReadFBO and dirty cached state. Note that this is specific for swap
image changed case, there is no surface property change (surface
property change will still trigger the subject/observer message with
SubjectMessage::SubjectChanged message, but this occurs rarely). This
gets worse for apps that uses multiple contexts, for the example
pokemon_masters_ex has three contexts, each context has its own default
frame buffer that attach to the same surface, and we never remove
non-current context from the observer list. This end up with
egl::Surface has 12 observers and for every frame, it loop over the list
of 12 observers and send message (virtual function call) to each of
them. Color attachment also ends up sending two messages to Context, one
for Read FBO and another for Draw FBO. There are total 21 virtual
function calls. Even for single context usage, you have 6 virtual
function calls, for every frame.
EGL spec says "an EGLSurface must be current on only one thread at a
time", any other context must call EGLMakeCurrent in order to use this
surface, which will add all necessary dirty bits at that time. So we
really only need to notify current context. In this CL,
SwapchainImageChanged no longer uses subject/observer mechanism, so this
message is removed.
This CL still uses subject/observer mechanism to send DirtyBitsFlagged
from Framebuffer back to context. We could call setDrawFramebufferDirty
and setReadFramebufferDirty directly, but that will require to remove
the "const" decoration out of gl::Context which generates too much code
diff, so onStateChange(angle::SubjectMessage::DirtyBitsFlagged) is still
used.
Bug: angleproject:400711938
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6319893
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Change-Id: I017b0e8934b5194a520828fa5c4af1d6e3ef9aac
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6404621
|
|
c2679dbc
|
2025-03-10T12:15:08
|
|
Key vertex array index range cache on restart
Key vertex array index range cache on primitive restart enablement.
Add the test to WebGLCompatibilityTest as otherwise the
VertexArray::getIndexRange() is not testable. Currently WebGL
compatibility contexts allow changing primitive restart.
Bug: angleproject:401284933
Change-Id: I48a53770d7dcb2276b89fd743f4834c53c8d8d1e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6333538
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
3cfc0ce2
|
2025-03-24T07:41:33
|
|
Revert "Vulkan:Dont use Subject/Observer for SwapchainImageChanged"
This reverts commit 48103cb2f2b292cb50cc5a29546b358b2e47fd29.
Reason for revert: assert fails
https://ci.chromium.org/ui/p/angle/builders/ci/android-arm64-exp-test/7085/overview
I 22:27:33.697 77.533s _RunTestsOnDevice(17221FDF6000A4) [ RUN ] EGLAndroidAutoRefreshTest.SwapCPUThrottling/ES3_Vulkan_NoFixture
INFO:root:ERR: SurfaceVk.cpp:3165 (getCurrentFramebuffer): ! Assert failed in getCurrentFramebuffer (../../src/libANGLE/renderer/vulkan/SurfaceVk.cpp:3165): mAcquireOperation.state == ImageAcquireState::Ready
Original change's description:
> Vulkan:Dont use Subject/Observer for SwapchainImageChanged
>
> Because we do deferred ANI (VkAcquireNextImage) call until image is
> needed, we need a way to force Context to go through
> FramebufferVk::syncState call (FramebufferVk::syncState calls
> WindowSurfaceVk::getAttachmentRenderTarget, which end up calling ANI.
> Right now we uses subject/observer mechanism, by sending
> angle::SubjectMessage::SwapchainImageChanged to all observers of
> WindowSurfaceVk. In this case it is egl::Surface. Then eglSurface
> redirects this message to its observers, which are all gl::Framebuffer's
> attachments: color, depth, stencil. Even though only color attachment
> needs to be notified, but because we don't have a separate list of
> observers, depth/stencil attachment also receive the notification and
> they early out. Then gl::Framebuffer sets
> DIRTY_BIT_COLOR_BUFFER_CONTENTS_0 dirty bit and send the
> angle::SubjectMessage::DirtyBitsFlagged to Context, which dirty DrawFBO
> and ReadFBO and dirty cached state. Note that this is specific for swap
> image changed case, there is no surface property change (surface
> property change will still trigger the subject/observer message with
> SubjectMessage::SubjectChanged message, but this occurs rarely). This
> gets worse for apps that uses multiple contexts, for the example
> pokemon_masters_ex has three contexts, each context has its own default
> frame buffer that attach to the same surface, and we never remove
> non-current context from the observer list. This end up with
> egl::Surface has 12 observers and for every frame, it loop over the list
> of 12 observers and send message (virtual function call) to each of
> them. Color attachment also ends up sending two messages to Context, one
> for Read FBO and another for Draw FBO. There are total 21 virtual
> function calls. Even for single context usage, you have 6 virtual
> function calls, for every frame.
>
> EGL spec says "an EGLSurface must be current on only one thread at a
> time", any other context must call EGLMakeCurrent in order to use this
> surface, which will add all necessary dirty bits at that time. So we
> really only need to notify current context. In this CL,
> SwapchainImageChanged no longer uses subject/observer mechanism, so this
> message is removed.
>
> This CL still uses subject/observer mechanism to send DirtyBitsFlagged
> from Framebuffer back to context. We could call setDrawFramebufferDirty
> and setReadFramebufferDirty directly, but that will require to remove
> the "const" decoration out of gl::Context which generates too much code
> diff, so onStateChange(angle::SubjectMessage::DirtyBitsFlagged) is still
> used.
>
> Bug: angleproject:400711938
> Change-Id: I61354516fd0aa307714b7abd30c6b6e45ff7b496
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6319893
> Commit-Queue: Charlie Lao <cclao@google.com>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Bug: angleproject:400711938
Change-Id: Ib7899d1ac63a1f86af0953a1d25922578c470fc9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6387755
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
48103cb2
|
2025-03-03T16:43:33
|
|
Vulkan:Dont use Subject/Observer for SwapchainImageChanged
Because we do deferred ANI (VkAcquireNextImage) call until image is
needed, we need a way to force Context to go through
FramebufferVk::syncState call (FramebufferVk::syncState calls
WindowSurfaceVk::getAttachmentRenderTarget, which end up calling ANI.
Right now we uses subject/observer mechanism, by sending
angle::SubjectMessage::SwapchainImageChanged to all observers of
WindowSurfaceVk. In this case it is egl::Surface. Then eglSurface
redirects this message to its observers, which are all gl::Framebuffer's
attachments: color, depth, stencil. Even though only color attachment
needs to be notified, but because we don't have a separate list of
observers, depth/stencil attachment also receive the notification and
they early out. Then gl::Framebuffer sets
DIRTY_BIT_COLOR_BUFFER_CONTENTS_0 dirty bit and send the
angle::SubjectMessage::DirtyBitsFlagged to Context, which dirty DrawFBO
and ReadFBO and dirty cached state. Note that this is specific for swap
image changed case, there is no surface property change (surface
property change will still trigger the subject/observer message with
SubjectMessage::SubjectChanged message, but this occurs rarely). This
gets worse for apps that uses multiple contexts, for the example
pokemon_masters_ex has three contexts, each context has its own default
frame buffer that attach to the same surface, and we never remove
non-current context from the observer list. This end up with
egl::Surface has 12 observers and for every frame, it loop over the list
of 12 observers and send message (virtual function call) to each of
them. Color attachment also ends up sending two messages to Context, one
for Read FBO and another for Draw FBO. There are total 21 virtual
function calls. Even for single context usage, you have 6 virtual
function calls, for every frame.
EGL spec says "an EGLSurface must be current on only one thread at a
time", any other context must call EGLMakeCurrent in order to use this
surface, which will add all necessary dirty bits at that time. So we
really only need to notify current context. In this CL,
SwapchainImageChanged no longer uses subject/observer mechanism, so this
message is removed.
This CL still uses subject/observer mechanism to send DirtyBitsFlagged
from Framebuffer back to context. We could call setDrawFramebufferDirty
and setReadFramebufferDirty directly, but that will require to remove
the "const" decoration out of gl::Context which generates too much code
diff, so onStateChange(angle::SubjectMessage::DirtyBitsFlagged) is still
used.
Bug: angleproject:400711938
Change-Id: I61354516fd0aa307714b7abd30c6b6e45ff7b496
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6319893
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
b9567391
|
2025-03-20T14:10:21
|
|
Prefer Device type requests over adapter LUID in D3D11.
When the user requests both a non-hardware device type and a specific
DXGI adapter LUID, prefer to honor the device type request.
Chrome always requests LUIDs of the first available GPU to make sure
that it prefers integrated GPUs over discreet. It only requests
non-hardware device types when software rendering is desired. This
behaviour change satisfies Chrome's intentions in both cases.
Bug: chromium:402163834
Change-Id: Idc714498260591cafc37d810c83de08a364a72f6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6377165
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
db48967f
|
2025-03-05T09:07:10
|
|
Reland "Add GL_BGRA_EXT as a sized renderable format"
This reverts commit 4bfb9da6f98b3e28905cc759a77bff750dfe3ff7.
Reason for revert: More mapping fixes for GL backend
Original change's description:
> Revert "Reland "Add GL_BGRA_EXT as a sized renderable format""
>
> This reverts commit 8f2fbbd1a0d16471596afad57c88f950a1ee3032.
>
> Reason for revert: http://anglebug.com/399913714
>
> Original change's description:
> > Reland "Add GL_BGRA_EXT as a sized renderable format"
> >
> > This reverts commit 22dfe435daa7c680c07bb8d4f1d98ab765e60ad0.
> >
> > Reason for revert: Fixed mapping back to BGRA_EXT for GL backend
> >
> > Original change's description:
> > > Revert "Add GL_BGRA_EXT as a sized renderable format"
> > >
> > > This reverts commit 80093a7d8f850c3ab551ddb4972c2f1f27511433.
> > >
> > > Reason for revert: suspect for blocking rolling ANGLE into Chroimum
> > > https://chromium-review.googlesource.com/c/chromium/src/+/6283973
> > > https://ci.chromium.org/ui/p/chromium/builders/try/chromeos-amd64-generic-rel-gtest/372754/overview
> > >
> > > Original change's description:
> > > > Add GL_BGRA_EXT as a sized renderable format
> > > >
> > > > dEQP tests were updated to cover GL_BGRA_EXT as a sized renderable
> > > > format. It was apparently always supposed to be, based on the
> > > > wording of the spec.
> > > >
> > > > This CL adds that support and updates expectations, along with a few
> > > > extra tests.
> > > >
> > > > Includes contributions from Robic.Sun@arm.com.
> > > >
> > > > Test: angle_end2end_tests, angle_deqp_*_tests
> > > > Bug: b/42267264
> > > > Bug: angleproject:394384906
> > > > Change-Id: Ia10bcd61f66c5d99a3d27a2cfd6008c991ddcaa7
> > > > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6235444
> > > > Reviewed-by: Geoff Lang <geofflang@chromium.org>
> > > > Commit-Queue: Cody Northrop <cnorthrop@google.com>
> > > > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> > >
> > > Bug: b/42267264
> > > Bug: angleproject:394384906
> > > Change-Id: I64572361cfed33b4ea17eabf278f580471d045c2
> > > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6285628
> > > Auto-Submit: Yuly Novikov <ynovikov@chromium.org>
> > > Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
> > > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
> > > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> >
> > Bug: b/42267264
> > Bug: angleproject:394384906
> > Change-Id: I1bd9df904d93fd54286cbfce53fe89db89e842b9
> > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6310699
> > Commit-Queue: Cody Northrop <cnorthrop@google.com>
> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> > Reviewed-by: Geoff Lang <geofflang@chromium.org>
>
> Bug: b/42267264
> Bug: angleproject:394384906
> Bug: angleproject:399913714
> Change-Id: I9f79f39a6d9cba3b23c261005bc3e012d70cd1cf
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6312977
> Auto-Submit: Cody Northrop <cnorthrop@google.com>
> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
> Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Bug: b/42267264
Bug: angleproject:394384906
Bug: angleproject:399913714
Change-Id: Ifc98fcbb0883dc4a55ad358825e9c1935fa26eaa
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6330036
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
62bf97d9
|
2025-03-10T14:23:31
|
|
Metal: Fix line loop indexes for primitive restart
Use the existing code to generate line strips from line loops.
Bug: angleproject:401284933
Change-Id: Ie131199c23b93364fabb8f0dc6766f7e8d5f2b8d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6333539
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
1bfeb8a5
|
2025-03-03T00:00:00
|
|
D3D11: Set SV_Position interpolation for conservative depth
HLSL requires centroid interpolation for PS input
position if conservative depth output is used and
the shader is executing at pixel-frequency.
Bug: angleproject:397720825
Change-Id: I2b314e39e40a63cb58e2bdef99ffa842ddaaff0d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6336827
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
4bfb9da6
|
2025-02-28T12:49:28
|
|
Revert "Reland "Add GL_BGRA_EXT as a sized renderable format""
This reverts commit 8f2fbbd1a0d16471596afad57c88f950a1ee3032.
Reason for revert: http://anglebug.com/399913714
Original change's description:
> Reland "Add GL_BGRA_EXT as a sized renderable format"
>
> This reverts commit 22dfe435daa7c680c07bb8d4f1d98ab765e60ad0.
>
> Reason for revert: Fixed mapping back to BGRA_EXT for GL backend
>
> Original change's description:
> > Revert "Add GL_BGRA_EXT as a sized renderable format"
> >
> > This reverts commit 80093a7d8f850c3ab551ddb4972c2f1f27511433.
> >
> > Reason for revert: suspect for blocking rolling ANGLE into Chroimum
> > https://chromium-review.googlesource.com/c/chromium/src/+/6283973
> > https://ci.chromium.org/ui/p/chromium/builders/try/chromeos-amd64-generic-rel-gtest/372754/overview
> >
> > Original change's description:
> > > Add GL_BGRA_EXT as a sized renderable format
> > >
> > > dEQP tests were updated to cover GL_BGRA_EXT as a sized renderable
> > > format. It was apparently always supposed to be, based on the
> > > wording of the spec.
> > >
> > > This CL adds that support and updates expectations, along with a few
> > > extra tests.
> > >
> > > Includes contributions from Robic.Sun@arm.com.
> > >
> > > Test: angle_end2end_tests, angle_deqp_*_tests
> > > Bug: b/42267264
> > > Bug: angleproject:394384906
> > > Change-Id: Ia10bcd61f66c5d99a3d27a2cfd6008c991ddcaa7
> > > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6235444
> > > Reviewed-by: Geoff Lang <geofflang@chromium.org>
> > > Commit-Queue: Cody Northrop <cnorthrop@google.com>
> > > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> >
> > Bug: b/42267264
> > Bug: angleproject:394384906
> > Change-Id: I64572361cfed33b4ea17eabf278f580471d045c2
> > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6285628
> > Auto-Submit: Yuly Novikov <ynovikov@chromium.org>
> > Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
> > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
>
> Bug: b/42267264
> Bug: angleproject:394384906
> Change-Id: I1bd9df904d93fd54286cbfce53fe89db89e842b9
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6310699
> Commit-Queue: Cody Northrop <cnorthrop@google.com>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Bug: b/42267264
Bug: angleproject:394384906
Bug: angleproject:399913714
Change-Id: I9f79f39a6d9cba3b23c261005bc3e012d70cd1cf
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6312977
Auto-Submit: Cody Northrop <cnorthrop@google.com>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
|
|
8f2fbbd1
|
2025-02-27T13:33:06
|
|
Reland "Add GL_BGRA_EXT as a sized renderable format"
This reverts commit 22dfe435daa7c680c07bb8d4f1d98ab765e60ad0.
Reason for revert: Fixed mapping back to BGRA_EXT for GL backend
Original change's description:
> Revert "Add GL_BGRA_EXT as a sized renderable format"
>
> This reverts commit 80093a7d8f850c3ab551ddb4972c2f1f27511433.
>
> Reason for revert: suspect for blocking rolling ANGLE into Chroimum
> https://chromium-review.googlesource.com/c/chromium/src/+/6283973
> https://ci.chromium.org/ui/p/chromium/builders/try/chromeos-amd64-generic-rel-gtest/372754/overview
>
> Original change's description:
> > Add GL_BGRA_EXT as a sized renderable format
> >
> > dEQP tests were updated to cover GL_BGRA_EXT as a sized renderable
> > format. It was apparently always supposed to be, based on the
> > wording of the spec.
> >
> > This CL adds that support and updates expectations, along with a few
> > extra tests.
> >
> > Includes contributions from Robic.Sun@arm.com.
> >
> > Test: angle_end2end_tests, angle_deqp_*_tests
> > Bug: b/42267264
> > Bug: angleproject:394384906
> > Change-Id: Ia10bcd61f66c5d99a3d27a2cfd6008c991ddcaa7
> > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6235444
> > Reviewed-by: Geoff Lang <geofflang@chromium.org>
> > Commit-Queue: Cody Northrop <cnorthrop@google.com>
> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
>
> Bug: b/42267264
> Bug: angleproject:394384906
> Change-Id: I64572361cfed33b4ea17eabf278f580471d045c2
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6285628
> Auto-Submit: Yuly Novikov <ynovikov@chromium.org>
> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Bug: b/42267264
Bug: angleproject:394384906
Change-Id: I1bd9df904d93fd54286cbfce53fe89db89e842b9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6310699
Commit-Queue: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
22dfe435
|
2025-02-20T06:46:07
|
|
Revert "Add GL_BGRA_EXT as a sized renderable format"
This reverts commit 80093a7d8f850c3ab551ddb4972c2f1f27511433.
Reason for revert: suspect for blocking rolling ANGLE into Chroimum
https://chromium-review.googlesource.com/c/chromium/src/+/6283973
https://ci.chromium.org/ui/p/chromium/builders/try/chromeos-amd64-generic-rel-gtest/372754/overview
Original change's description:
> Add GL_BGRA_EXT as a sized renderable format
>
> dEQP tests were updated to cover GL_BGRA_EXT as a sized renderable
> format. It was apparently always supposed to be, based on the
> wording of the spec.
>
> This CL adds that support and updates expectations, along with a few
> extra tests.
>
> Includes contributions from Robic.Sun@arm.com.
>
> Test: angle_end2end_tests, angle_deqp_*_tests
> Bug: b/42267264
> Bug: angleproject:394384906
> Change-Id: Ia10bcd61f66c5d99a3d27a2cfd6008c991ddcaa7
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6235444
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
> Commit-Queue: Cody Northrop <cnorthrop@google.com>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Bug: b/42267264
Bug: angleproject:394384906
Change-Id: I64572361cfed33b4ea17eabf278f580471d045c2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6285628
Auto-Submit: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
80093a7d
|
2025-02-03T08:50:21
|
|
Add GL_BGRA_EXT as a sized renderable format
dEQP tests were updated to cover GL_BGRA_EXT as a sized renderable
format. It was apparently always supposed to be, based on the
wording of the spec.
This CL adds that support and updates expectations, along with a few
extra tests.
Includes contributions from Robic.Sun@arm.com.
Test: angle_end2end_tests, angle_deqp_*_tests
Bug: b/42267264
Bug: angleproject:394384906
Change-Id: Ia10bcd61f66c5d99a3d27a2cfd6008c991ddcaa7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6235444
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
cfb430c8
|
2025-02-10T13:19:05
|
|
Remove angle::ErrorStream helper
Most uses of the helper either use just the code or a fixed string,
which compiles to a few instructions. Using this helper adds 200+ bytes
of assembly to each use, due to the unneeded instantiation of
ostringstream which allocates a buffer etc. The combined effect of this
CL on an Android perf build is ~12KB (0.2%) reduction in size.
The cases where the message is actually formatted are converted to an
explicit use of ostringstream. Removing the helper so that the new code
is explicit about the intent to use ostringstream, or an alternative way
to format the message.
Discovered accidentally while looking into size reduction due to
__builtin_unreachable()
Semi-automated code change, risk of copy-paste mistakes should be
minimal.
Bug: angleproject:394129077
Change-Id: I47c2642d750d31416b08a1cfa435d5463c294e35
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6250078
Commit-Queue: Roman Lavrov <romanl@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
c24468c9
|
2025-02-06T19:04:19
|
|
Fix "fallthrough annotation in unreachable code" in release d3d builds
The same issue I ran into in https://crrev.com/c/6231111 but on d3d
Bug: angleproject:394129077
Change-Id: I90faa01fa66c514162a1d5e4cbe56a2bfd85085e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6237859
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
Auto-Submit: Roman Lavrov <romanl@google.com>
|
|
47c64ce2
|
2025-01-24T16:15:26
|
|
Vulkan: Fix driver version parsing
Bug: chromium:371512561
Change-Id: I469c4ae71613fdfdfd7e58602b5a7262342acba7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6199184
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Roman Lavrov <romanl@google.com>
|
|
a504b6a2
|
2024-11-25T15:59:05
|
|
Support GL_OES_required_internalformat
Enable GL_OES_required_internalformat GLES extension.
Bug: angleproject:364069034
Change-Id: Ia57548469abff189472aa20b13ca99179c45f2c0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6038448
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Panfeng Hou <panfeng.hou@arm.com>
|
|
fa70c4cb
|
2024-02-02T13:59:06
|
|
CL/Vulkan: Implement the buffer rect enqueues
This change implements the buffer rect copy using a series of memcopies.
The CL buffer rect doesn't map cleanly to the Vulkan copy buffer
command due to the presence of pitches, and implementing as such will
introduce more barriers in the command stream. For now we do process
this command at call entry point.
Bug: angleproject:379764609
Change-Id: I89a9032a4bbfa48899c448eb131a5ce048e8fd60
Signed-off-by: Gowtham Tammana <g.tammana@samsung.com>
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6034035
Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
b16d105f
|
2024-10-03T10:25:32
|
|
Remove Desktop GL front-end support
For Desktop GL applications, please use Zink!
Bug: angleproject:370937467
Change-Id: Ie734634bb62a2e98c80e1b32d8b3d34624da3c04
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5905428
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
f0f65290
|
2024-09-10T15:30:30
|
|
Translator: Add check for atomic counter offset
For GLSL shaders, atomic counter offset should not exceed the
maximum atomic counter buffer size. This issue was seen on a dEQP
test when increasing the LimitToInt() limitation from INT_MAX/2
to INT_MAX+1 or INT_MAX.
* Added check to the translator to make sure the offset does not
go beyond the max atomic counter buffer size.
* Packed the existing checks into a single function.
* (checkAtomicCounterOffsetIsValid())
* Added mMaxAtomicCounterBufferSize to TParseContext for the check.
* Also added the related cap (maxShaderStorageBlockSize) for D3D11.
* Increased the limitation in LimitToInt() to (INT_MAX / 2 + 1).
* Added test based on dEQP test that failed on some platforms as
a result of updating said limitation.
* From KHR-GLES31.core.shader_atomic_counters.negative-large-offset
Bug: angleproject:361369308
Change-Id: Id6128c75e12445b2a0029f4a2eb2bdb379cad48d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5851650
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
8c12874c
|
2024-09-12T11:26:29
|
|
vulkan: add double buffer swapchain for fifo mode.
Double buffer swapchain usually drop the performance.
But at B* the default fps cap for silver device still at 30fps.
This change is for reduce latency.
Bug: b/311022968
Change-Id: Ida4044f439bbe3f235d53f5d1d2f945533cbb094
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5858255
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
6655e94f
|
2024-09-09T15:41:09
|
|
Remove Feature Level 9_3, part 2
Remove all of the remaining feature level 9_3 code.
Bug: angleproject:355462523
Change-Id: Ifd15d8f5486d3e7f8f2e134f23872abf4a8ea51c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5847452
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Rafael Cintron <rafael.cintron@microsoft.com>
|
|
d1a4b0ff
|
2019-05-04T17:15:42
|
|
Remove Feature Level 9_3 code
Feature Level 9_3 was originally added for developers creating apps
for devices which did not have the DirectX 9 API and are no longer
supported. Hence, we can remove the corresponding code in the 11
backend.
Bug: angleproject:355462523
Change-Id: I22db15640b435c61db4d82a815edbc65cecc4e12
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5824661
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Rafael Cintron <rafael.cintron@microsoft.com>
|
|
a93476a1
|
2024-07-11T00:00:00
|
|
D3D11: Pass 3D slice index to Image11::copyWithoutConversion
3D slice range is passed in a D3D11_BOX
structure for CopySubresourceRegion.
Fixed: angleproject:352467349
Bug: angleproject:352496176
Change-Id: Ie96d9567cf73b0612bfb1cbd7fbacc6c0f01dec4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5697425
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
1dd3a4c4
|
2024-07-04T00:00:00
|
|
D3D11: Use built-in position for gl_FragCoord.z on SM 4.0+
If supported, used built-in pixel position
input for the gl_FragCoord.z value.
Exposed GL_EXT_clip_control only
on feature level 10_0 or higher.
Fixed: angleproject:347737886
Change-Id: I272ccce04cf6ad7921aa6cd5dc13f0de2f9ae561
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5679787
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
fcf3a1c0
|
2024-07-02T16:33:28
|
|
GL: Allow shader compilation with cached translated source
Write the translated shader source when serializing shaders. This does
not increase the size of the shader cache because Vulkan only uses the
compiledBinary field.
Spawn a ShaderTranslateTask for loading shaders so the GL backend can
compile the shader on the native driver.
Bug: angleproject:350779978
Change-Id: I14413a7ca2a0d99653a1082f2c8b4a94cf58626a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5672740
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
d193d51b
|
2024-06-17T22:46:08
|
|
Replace issue ids post migration to new issue tracker
This change replaces anglebug.com/NNNN links.
Bug: None
Change-Id: I8ac3aec8d2a8a844b3d7b99fc0a6b2be8da31761
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5637912
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
479c950e
|
2024-06-06T00:00:00
|
|
D3D11: Implement fragment shader image2D layout updates
Checked for updated image2D bind layout
when triggering program recompilation.
Included image2D bind layout variants
into D3DPixelExecutable cache.
Added tests for binding 2D array
texture layers.
Fixed: angleproject:8124
Change-Id: I228a29b5bb175bbf0f8b13e70d1f09e8eb4ebb2f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5630654
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
decaefc9
|
2024-06-06T00:00:00
|
|
D3D11: Generalize shader image2D layout cache
Ensured that mImage2DBindLayoutCache exists
for vertex and fragment shaders.
Changed the dirty bit used for image binding updates
because they use the ShaderConstants11::updateBuffer
function, which is called only for driver uniform
updates of vertex and fragment shaders.
Bug: angleproject:8124
Change-Id: Ifdfc18f28598b636a1019f53af7617a60c12412e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5621178
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
57524dc9
|
2024-06-06T00:00:00
|
|
Fix shader image level rebinding
Added a test that interleaves two draw
calls with rebinding the texture level
of a shader image; fixed surface init.
Vulkan:
Fixed subresource serial generation.
D3D11:
Fixed dirty bit setting.
Fixed: angleproject:7647
Bug: angleproject:8124
Change-Id: I4b5d095a1714f31a4f7b63f96dedb366faa17a03
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5611298
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
1db5581d
|
2024-05-21T13:07:44
|
|
Implement KHR_robustness
* Added implementation for the validation layers for the
added functions, and updated some of the existing ones.
* The core functions require GLES 3.2.
* The KHR functions have been limited to GLES 2.0+.
* KHR_robustness requires GLES 2.0 and removes support
for GLES 1.1 for logistical reasons.
* Some functions require GLES 3.0 with this extension, which become
core in GLES 3.2.
* glGetnUniformuivKHR()
* Enabled robustnessKHR on several platforms.
* Added unit tests similar to ContextLostTest.BasicUsage for the new
cases.
* Added ContextLostTestES32 for the core usage in GLES 3.2.
Bug: angleproject:42262244
Change-Id: Id1425c39d9a1a66ae1a90048b673cb1ae391c0ef
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5555985
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
ccd9a43b
|
2024-05-22T11:15:39
|
|
Split EGL_ANGLE_device_d3d into D3D9 and D3D11 versions.
Add EGL_ANGLE_device_d3d9 and EGL_ANGLE_device_d3d11 which make it
possible to know what type of device can be queried ahead of time
without generating EGL errors.
Refactor the DeviceD3D class into Device9 and Device11. Remove the
getType method now that it's not needed for internal validation.
Keep EGL_ANGLE_device_d3d for backwards compatibility.
Bug: angleproject:342096132
Change-Id: Ib950abad58e46a5be269891ea7afd0cb8534cbe8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5559163
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
0ac0603e
|
2024-05-14T00:00:00
|
|
Fold nested std::max calls
When a maximum of three values is needed,
an initializer list with all three values
is more readable than two std::max calls.
Fixed: angleproject:8695
Change-Id: I073ea1af07b215610c85981eea03f6e73107bce6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5541974
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
c3a1cae4
|
2024-04-15T14:58:55
|
|
Use angle::SimpleMutex everywhere in libGLESv2
Only cases left that use std::mutex are:
- Share group and the context ErrorSet mutexes as they need try_lock()
- Anywhere mutexes are used in conjunction with std::condition_variables
(as they explicitly require std::mutex)
Bug: angleproject:8667
Change-Id: Ib6d68938b0886f9e7c43e023162557990ecfb300
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5453294
Reviewed-by: Roman Lavrov <romanl@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
ac654931
|
2024-04-04T15:42:47
|
|
ProgramExecutable manages post-link tasks
Post-link tasks are now owned and managed by ProgramExecutable.
Also, update `LinkTask::link` API so backends have a choice to populate
either the linkSubTask or postLinkSubTask containers (but not both).
Bug: angleproject:8297
Change-Id: I5dbed6a070efe851fc1376699e9eccd3a21bd03f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5406487
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
ee02014d
|
2024-03-22T11:52:35
|
|
Selectively wait for LinkSubTasks
Backends have the option to request frontend to run their LinkSubTask
post-link. Do not wait for such sub tasks during most glProgram APIs.
Note that we do wait for these "post-link sub tasks" incase of a program
relink or first use by a draw call.
Bug: angleproject:8297
Change-Id: I936fb5a127570f9dfa567ee8cbc02e25c4b70a6b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5387064
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
ad013650
|
2024-03-22T03:42:44
|
|
Revert "Rename LinkSubTask -> PostLinkTask"
This reverts commit 00eb6edba074a22389b09990ab856adfd417dd64.
Reason for revert: Sub tasks are not actually post-link tasks for all
the other backends (other than Vulkan), but they are a real part of
the link job.
Original change's description:
> Rename LinkSubTask -> PostLinkTask
>
> This is a renaming change, no behavior changes are expected.
>
> Bug: angleproject:8297
> Change-Id: I734c7959f5ed6db2447853cc6f6256e3c8e86213
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5382224
> Commit-Queue: mohan maiya <m.maiya@samsung.com>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Bug: angleproject:8297
Change-Id: Iaebf9d165d810344bfc524042206ca427d270034
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5386432
Reviewed-by: Shahbaz Youssefi <syoussefi@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
00eb6edb
|
2024-03-20T06:49:38
|
|
Rename LinkSubTask -> PostLinkTask
This is a renaming change, no behavior changes are expected.
Bug: angleproject:8297
Change-Id: I734c7959f5ed6db2447853cc6f6256e3c8e86213
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5382224
Commit-Queue: mohan maiya <m.maiya@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
7e065b6f
|
2024-03-07T13:52:47
|
|
Fix SRV and RTV confliction
Bug: chromium:324422644
Change-Id: Id0f8fd1183938f3077e97fd6904fbfbad7efda85
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5354106
Auto-Submit: Peng Huang <penghuang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
f044aaf8
|
2024-03-02T00:51:33
|
|
Vulkan: Create instance/device without access to Display
The feature overrides are now encapsulated in a struct, a reference to
which is passed around until features are initialized. Additionally,
some window system information needed to decide which extensions to use
or workarounds to apply are passed around.
This is a step towards decoupling RendererVk from egl::Display for
direct use with OpenCL.
Bug: angleproject:8564
Change-Id: Id6c5d1c3b38aafcd4397e54cc6cad32bf849eeda
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5335823
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
4e6fe5e0
|
2024-02-29T15:01:06
|
|
Vulkan: Cache ImageLoadContext in context
This avoids the need to requery this from the display every time.
Bug: angleproject:8564
Change-Id: Ied650e7789741f59b7662c0f97c55132b105778d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5332074
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
0afcac60
|
2024-02-22T11:21:15
|
|
Handle count = 0 in DrawElementsIndirect
Bug: angleproject:8554
Change-Id: I9618061edf71c3d9a03ea14dfe65b54c58ee98de
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5319131
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Gregg Tavares <gman@chromium.org>
|
|
8346addb
|
2024-02-06T15:40:31
|
|
Contain X11 includes and free usage of common terms
This change undoes workarounds where some terms were avoided so there is
no clash with X11 (such as Success, Bool and None). In particular, this
helps us make sure we never include the X11 headers in such an
unconstrained manner as to clash with our code.
Bug: angleproject:8520
Change-Id: I53d9657c5a33164064d2c80a206b96fd52f607f1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5273491
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Liza Burakova <liza@chromium.org>
|
|
275e6f4f
|
2024-02-02T16:46:14
|
|
D3D: Add multiplanar support to d3d11 glTexSubImage2D
Add multiplanar format support to Angle's D3D11 glTexSubImage2D.
This is needed with multiplanar shared images, where we write all
planes of a d3d shared image through WritePixelsYUV in raster decoder
and need to do this via an intermediate texture for d3d11. This change
checks for multiplanar format supported by Image11 and then goes
through TextureD3D::commitRegion and performs copyTexture and then
copySubResource.
Added necessary test that tests for full texture copy and a subregion
copy and reads back and verifies.
Bug: chromium:40262482
Change-Id: I74c9978e62339375f6623f7f0a609bcb16c4b970
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5263039
Reviewed-by: Vasiliy Telezhnikov <vasilyt@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Saifuddin Hitawala <hitawala@chromium.org>
|
|
a70b6f56
|
2024-01-26T20:37:07
|
|
Add support for WinUI3/Windows App SDK
Adds the necessary build args and code changes to
support building ANGLE for WinUI 3 (aka Windows
App SDK).
To reduce the set of changes, and because it is
functionally the same, a Windows App SDK build is
basically a UWP build, but with an extra define so
that the code can make a few changes to the
namespaces and includes used.
The main changes to the code are:
- ICoreWindow is no longer used
- Dispatcher has a few changes in naming and args
- ISwapChainPanel is now in a different namespace
Bug: angleproject:8490
Change-Id: Ibb298e3e86e8298dac12c2019eac7996a8185c51
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5230637
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
0c4d6446
|
2024-01-24T10:38:45
|
|
Rework uniform block <-> uniform buffer mapping
In GLES, the shader declares which buffer binding a block (uniform,
storage or atomic counter) is bound to. For example:
layout(binding = 1) uniform ubo0 { ... };
layout(binding = 2) uniform ubo1 { ... };
layout(binding = 1) uniform ubo2 { ... };
In the above, ubo0 and ubo2 use data from the buffer bound to index 2
(through glBindBufferRange), while ubo1 uses data from the buffer bound
to index 1. For uniform blocks in particular, omitting the binding
is allowed, in which case it is implicitly bound to buffer 0.
GLES allows uniform blocks (and only uniform blocks) to remap their
bindings through calls to glUniformBlockBinding. This means that the
mapping of uniform blocks in the program (ubo0, ubo1, ubo2) to the
buffer bindings is not constant. For storage blocks and atomic counter
buffers, this binding _is_ constant and is determined at link time.
At link time, the mapping of blocks to buffers is determined based on
values specified in the shaders. This info is stored was stored in
gl::InterfaceBlock::binding (for UBOs and SSBOs), and
gl::AtomicCounterBuffer::binding. For clarity, this change renames
these members to ...::inShaderBinding.
When glUniformBlockBinding is called, the mapping is updated. Prior to
this change, gl::InterfaceBlock::binding was directly updated, trumping
the mapping determined at link time. A bug here was that after a call
to glProgramBinary, GL expects the mappings to reset to their original
link-time values, but instead ANGLE restored the mappings to what was
configured at the time the binary was retrieved.
This change tracks the uniform block -> buffer binding mapping
separately from the link results so that the original values can be
restored during glProgramBinary. In the process, the support data
structures for tracking this mapping are moved to ProgramExecutable and
the algorithms are simplified. Program Pipeline Objects maintain this
mapping identically to Programs and no longer require a special and more
costly path when a buffer state changes.
This change prepares for but does not yet fix the more fundamental bug
that the dirty bits are tracked in the program executable instead of the
context state, which makes changes not propagate to all contexts
correctly.
Bug: angleproject:8493
Change-Id: Ib0999f49be24db06ebe9a4917d06b90af899611e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5235883
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
36013d99
|
2024-01-24T01:21:10
|
|
Improve build for UWP/Windows 10
These changes update the code for more modern
compilers. The changes include:
A) Not using deprecated APIs
When Windows 8.1 was removed in commit
39b110184e2675afbfda1fd70b10ca112127ae74 the code
was not updated to use the new APIs and still use
the things that should not be used:
> DisplayProperties may be altered or unavailable
> for releases after Windows 8.1. Instead, use
> DisplayInformation.
B) Use correct casting
There was also some changes in commit
5eadaf85b42ab1cbb1efcda558db58a3fe5a446a to
properly cast from EGLNativeWindowType to
IInspectable*, but this was not all of the cases.
C) Prepare for WinUI3
There is another change that moves types into a
using to reduce verbosity as well as make it
easier/cleaner to build for WinUI/Windows App SDK.
Bug: angleproject:8496
Change-Id: Ia11b7f92cb4abc524ab8316125e80a22898a8f6b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5232157
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
b007c74d
|
2024-01-23T14:17:54
|
|
GL: Separate dirty bits leading to glUniformBlockBinding
The GL backend is special in that it needs to make actual calls (native
glUniformBlockBinding) in response to (application)
glUniformBlockBinding calls. The other backends just remap the bindings
based on that information when creating descriptor sets.
Previously, an optimization to track which bindings have changed used
the same dirty bits that were used to signify when the GL backend needs
to make these native calls. That ended up as a source of bugs.
In a previous change [1], the context DIRTY_BIT_UNIFORM_BUFFER_BINDINGS
is set when these mappings change, which fixes some of these issues.
That change obviates the need for an actual backend sync of programs,
except for GL programs that need to make these native calls.
This change splits the dirty bits maintained for the purposes of the GL
backend, moves them to that backend and removes the program backend
sync.
[1]: https://chromium-review.googlesource.com/c/angle/angle/+/5228599
Bug: angleproject:8493
Bug: b/318806125
Change-Id: I73c6514e88a116f1cd701cb06da0d8c38f07f7f6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5230137
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
572323cc
|
2024-01-11T16:20:02
|
|
Fix program link after backend rejects program binary
If ANGLE believes the program binary is fine, it populates the program
executable. If the backend then rejects the program binary, the
executable was not reset. After the rejection, ANGLE proceeds to redo
the program link, in which case it fails in various ways (ASSERT
failures, incorrect data etc) as it tries to accumulate info on top of
the previous executable.
Bug: angleproject:8471
Change-Id: Ia4d626f5f9643c39a81062da3d5d58aa4c6be762
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5189152
Reviewed-by: Quyen Le <lehoangquyen@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
5c8cb8a6
|
2023-12-07T00:00:00
|
|
Update WebGLReadOutsideFramebufferTest tests
Enabled robust resource init for these tests as they access
out-of-bounds values. This flag is required to pass some of
the tests on Vulkan backend. WebGL clients always set it.
Fixed subresource index computation on D3D11 to
pass CopyTexSubImage3D with 3D textures there.
Added a similar test for 2D array textures.
Bug: angleproject:4092
Fixed: angleproject:4136
Change-Id: I191c6df3c672e583568aadecac5885da015cfa8b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5106511
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
3680a5dc
|
2023-11-17T13:51:07
|
|
Vulkan: Let program warmup continue passed link
The warmup task does not actually affect the link results, so there is
no reason to wait for it when the application queries the link status.
This change allows the warm up task to continue in parallel until the
program is used at draw time. This allows the warm up to be more
efficient when the link itself is not parallelized.
For applications that create programs in the middle of every frame, it's
still likely best to disable warm up (as the following immediate draw
will already effectively do the warm up).
Note that currently the warm up code in the Vulkan backend is not
completely thread-safe, and so the program still blocks on that task
before the first draw can happen (or the program is modified in any
way).
Bug: angleproject:8417
Change-Id: I0877fef39a0585c3279e32699ce817d4643d7cd6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5037538
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
6f4f5e39
|
2023-11-18T22:15:49
|
|
Fix checking result of link sub tasks
Bug: angleproject:8297
Change-Id: I143a26be6e7340a4a2d2b917bbe4dd9dd474f7af
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5042346
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
058a2fd6
|
2023-11-28T17:38:28
|
|
Clear active queries before Begin
Bug: angleproject:8415
Change-Id: I97dfd904d65933a66f25cd168c50fe150ef9c765
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5068525
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Sergey Kataev <sergeyka@chromium.org>
|
|
dd8432b5
|
2023-11-14T14:39:45
|
|
Remove angle::Result::Incomplete from shader/program paths
angle::Result is not an error code, and having Incomplete made it very
unclear what the purpose of this class is.
A follow up will remove it entirely.
Bug: angleproject:8414
Change-Id: Ica8271b9f7d8868671c7658161e50a53ef23c681
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5028091
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
93b97a59
|
2023-11-03T22:07:23
|
|
Make link job directly wait on compile job
Previously, program link waited on the compile job on the calling thread
before launching the link job. As a result, sequences of intermixed
compile and link would get largely serialized as such:
Main Thread Thread 1 Thread 2 Thread 3 Thread 4
Compile -------> Compile
Compile -----------|----------> Compile
Link | |
Wait | |
| | |
|<--------------/--------------/
\------------------------------------------> Link
Compile -------> Compile |
Compile -----------|----------> Compile |
Link | | |
Wait | | |
| | | |
|<--------------/--------------/ |
\---------------------------------------------|-----------> Link
Compile -------> Compile | |
Compile -----------|----------> Compile | |
Link | | | |
Wait | | | |
| | | | |
...
With this change, the main thread no longer waits for compilation to
finish. It's the link job itself that does the waiting. This allows
the main thread to go through Compile and Link commands without
blocking, generating as many jobs as needed. The above scenario
therefore becomes:
Main T1 T2 T3 T4 T5 T6 T7 T8 T9
C ----> C
C ------|----> C
L ------|------|----> L
C ------|------|-------W---> C
C ------|------|-------|-----|----> C
L ------|------|-------|-----|------|----> L
C ------|------|-------|-----|------|-------W---> C
C ------|------|-------|-----|------|-------|-----|----> C
L ------|------|-------|-----|------|-------|-----|------|----> L
. \-----\------>/ | | | | | W
. | \-----\------>/ | | |
. | | \-----\------>/
. | | |
. | | |
This greatly improves the amount of parallelism compile and link jobs
get.
The careful observer may note that the link job being blocked on the
compile job is now wasting a thread from the thread pool. While this
change is strictly an improvement, parallelism can be further improved
if the link job is just not assigned to a thread until the corresponding
compile jobs are finished. This is currently not possible, but may be
if:
- Instead of a thread pool, the operating system's FIFO scheduler is
used. Then the operating system would automatically put blocking
tasks to sleep and pick up another task. This has the downside of
requiring threads to be created for each task.
- The thread pool work scheduler is enhanced to be made aware of
relationship between tasks and avoid scheduling jobs whose
dependencies are not yet met.
Alternatively, the number of threads in the pool can be increased by 30%
and hope for the best.
Bug: angleproject:8297
Change-Id: If4e6540ade47558a10cfab55e2286f073b904928
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5006874
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
7b62e4f5
|
2023-11-06T00:00:00
|
|
D3D11: Avoid GLenum conversions in GetBlendStateKey
Bug: b/300968773
Change-Id: Ia41f77e686e0f1afc91381e29334f73859868129
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5009815
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
5a71be90
|
2023-11-03T15:07:06
|
|
D3D: Make non-constant loop indexing limitation a feature flag
... instead of exposing it as a front-end limitation only to set a
shader flag in the front-end.
Bug: angleproject:1130
Change-Id: Idbd9a1b7b79d231bd9fc1c0061c768df4aaab92d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5004847
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
e7ce481f
|
2023-11-01T22:44:22
|
|
Consolidate parallel compilation in front-end
This cleans up the multiple compilation task implementations in the
backends and consolidates them in the front-end. The front-end is then
able to do the compilation in an unlocked tail call instead if
desired (in a future change).
This change is in preparation for having the program link tasks directly
wait on the shader compilation tasks. As a result, the "shader resolve"
should not be needed to access the shader compilation results; it should
be enough to wait for the compilation job. This change therefore moves
post-processing of results to the compilation job itself as they did not
need to actually be done after compilation is done (merely after
translation is done). As a side effect, shader substition and other
debug features should now work for the GL backend as they are now done
before back-end compilation.
Bug: angleproject:8297
Change-Id: Ib9274b1149fadca7545956a864d6635b6cba5c3a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4994655
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
8b4901d0
|
2023-11-06T10:43:14
|
|
Avoid GLenum conversion in BlendStateExt blend and equation
The following functions now return value as is without ToGLenum
conversion (that is often unnecessary):
getEquationColorIndexed
getEquationAlphaIndexed
getSrcColorIndexed
getDstColorIndexed
getSrcAlphaIndexed
getDstAlphaIndexed
(at least) getEquationColorIndexed is on the hot path with noticeable
performance impact; this CL also moves the implementation to the
header to allow inlining.
Bug: b/300968773
Change-Id: Ie223abe14b12afd7844686863ee5806945d10e45
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5008031
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Roman Lavrov <romanl@google.com>
|
|
36f41997
|
2023-10-30T15:14:09
|
|
D3D11: CopySubTexture: Handle sRGB source with D3D11
Use typeless formats for sRGB textures that can be reinterpreted as
linear. Add a parameter to SRV creation to request samplers that
do not do sRGB for copying sRGB textures.
Bug: angleproject:7907
Change-Id: I3d94dfa5b25a1c2c531cd9bef4247097aa4bfb61
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4986290
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
1ea49a22
|
2023-10-13T11:28:41
|
|
Move uniform dirty bits to ProgramExecutable
Rather than try to funnel them through Program and ProgramPipeline to
the executable in the backend, just move them to ProgramExecutable in
the front end.
This fixes Dota Underlords at the same time due to not needing to set
the Program dirty to propagate bits.
Test: Dota Underlords
Test: ProgramPipelineTest31.ProgramPipelineBindBufferRange
Bug: b/299532942
Change-Id: Ic73c45608e22f89ca400ebf684f8cd287ed2f43a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4922969
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
34c8778b
|
2023-09-26T13:45:06
|
|
Use atomic counters early in perf warning macros
Before this CL, snprintf was called repeatedly to format the warning
message which was then discarded after 4 logs. snprintf showed up in
profiling at ~2% and this CL appears to yield an ~8% power
improvement in one of the traces (egypt_1500).
A mutex was previously used to avoid the race condition on the static
sRepeatCount variable. This CL avoids the need for that by using static
atomics instead.
Also updated the Debug macro to use the VK macro vararg approach so that
formatting only happens when the message is actually logged.
Bug: b/302112423
Change-Id: Ia8a18361cfb5a9f2aa19ff939499754ba861efb7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4886388
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Roman Lavrov <romanl@google.com>
|
|
66d3db3b
|
2023-09-27T09:15:19
|
|
d3d: Shorten warning about complex uniform blocks
The warning was excessively large, while ANGLE_PERF_WARNING might use a
smaller buffer to format the message.
Bug: b/302112423
Change-Id: Ie8c2fe472c90a39f678fa685e852bbd49b5c8442
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4894632
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Roman Lavrov <romanl@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
97a48912
|
2023-09-26T10:31:58
|
|
Turn is-link-thread-safe feature into a positive condition
Chrome's --disable-gpu-driver-bug-workarounds currently sets every
feature to false, which breaks the GL backend.
Bug: angleproject:8297
Change-Id: I284d0699e356d7c1a362eb992cdc0d052f9ea7c2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4887598
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Roman Lavrov <romanl@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
8fcd4a50
|
2023-09-19T14:08:14
|
|
Cleanup POD struct usage to make them more consistent
In recent months, I have made many CLs to wrap various data structures
into a trivially copy-able struct. Some of them uses different
terminology. This CL replaces all of these to use a consistent name
"pod" in the struct, and "mPod" in a class.
This CL also turns ActiveVariable methods into macros to remove the code
duplication.
This CL also moves ProgramInput/ProgramOutput struct implementations
from Program.cpp to ProgramExecutable.cpp
Bug: b/275102061
Change-Id: Ia2a4210a9ea633f3d323bebe674ee74f8b90b363
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4877335
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Roman Lavrov <romanl@google.com>
|
|
9ca025d2
|
2023-09-18T15:50:48
|
|
Flatten BufferVariable/ShaderVariableBuffer/InterfaceBlock struct
InterfaceBlock inherits from ShaderVariableBuffer, ShaderVariableBuffer
is not a trivially copyable struct, this made InterfaceBlock not
trivially copyable. InterfaceBlock is being used by some app traces for
uniform blocks. BufferVariable inherits from sh::ShaderVariable which is
very complicated and not trivially copyable. This CL flattens all of
these three structs to simple structs without inheritance, and wraps all
trivially copyable data into one POD struct, thus load/save are cheaper.
Bug: b/275102061
Change-Id: I96f89176ce3d3131cb1d3ea3280c3c36c257560f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4874610
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Roman Lavrov <romanl@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
eb0d5997
|
2023-09-15T16:41:13
|
|
Move set/get uniform machinery to ProgramExecutable
This is done because some uniforms are internally added by the compiler
(draw ID, base vertex, and base instance) and are automatically set **on
the installed executable**.
This change fixes scenarios where a draw is done after a program has
failed a relink, and therefore is unable to correctly set the uniforms
(as it does not have access to the executable that is installed).
It also fixes draws that use those uniforms in a PPO.
Bug: angleproject:8297
Change-Id: Id74b4984b88aa09b5b81be1c91412d6c91711136
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4864693
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
29561184
|
2023-09-06T22:08:33
|
|
Remove forward-to-executable helpers from program
This helps avoid accidental usage of the executable that is in the
program instead of the installed executable in the GL context.
The program's executable is still accessed in specific cases of:
- During link
- GL program queries
Bug: angleproject:8297
Change-Id: I40a956e740944f2ecfbf6e4a3060aac08c21f7f3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4864448
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
68bfa1ed
|
2023-08-22T22:02:15
|
|
Support for link to be entirely parallelized
The link job is split as such:
- Front-end link
- Back-end link
- Independent back-end link subtasks (typically native driver compile
jobs)
- Post-link finalization
Each step depends on the previous. These steps are executed as such:
1. Program::link calls into ProgramImpl::link
- ProgramImpl::link runs whatever needs the Context, such as releasing
resources
- ProgramImpl::link returns a LinkTask
2. Program::link implements a closure that calls the front-end link and
passes the results to the backend's LinkTask.
3. The LinkTask potentially returns a set of LinkSubTasks to be
scheduled by the worker pool
4. Once the link is resolved, the post-link finalization is run
In the above, steps 1 and 4 are done under the share group lock. Steps
2 and 3 can be done in threads or without holding the share group lock
if the backend supports it. Step 2 is not yet made independent of the
Context on some backends, and a frontend feature is used to make that
step either run on the main thread or as a worker thread.
Bug: angleproject:8297
Change-Id: I12f1e6bbaf365543dfcac969e166e0b5aa622104
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4808191
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
d3d81498
|
2023-09-11T16:11:33
|
|
Add metrics for shader compilation time and shader blob size
Log the time it takes for the system compiler to compile Metal and D3D
shaders.
Log the D3D shader blob size to get a sense of storage size needed.
Bug: chromium:1481238
Change-Id: I300102dcb035f42e91d7819cd9465ff18436abf3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4851196
Reviewed-by: Peng Huang <penghuang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
1bd9fc24
|
2023-09-07T00:21:13
|
|
D3D: Remove more usages of program instead of executable
Only usage of getProgram() and getLinkedProgram() in the d3d backend
remains for multidraw, which will be fixed separately as it involves
setting uniforms (currently done through the program).
Bug: angleproject:8297
Change-Id: I48b3ec66837888c8ebf58f43a6d8a2f483dd4659
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4846954
Reviewed-by: Shahbaz Youssefi <syoussefi@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
7b0bb0f6
|
2023-09-01T13:52:28
|
|
Properly "install" program executables
According to GL:
- The program has an executable
- The executable is overwritten during link.
- After a failed link, queries of the executable may return
half-linked information
- On glUseProgram, the executable is installed in the context
- On glUseProgramStages, the executable is installed in the program
pipeline
- After a successful link, the executable is updated wherever the
previous executable of the program was installed.
This change implements exactly the above:
- The program's and the program pipeline's executables are now
shared_ptr. References to an executable in the context and PPO are
also through a shared_ptr. Installing an executable thus translates
to sharing the executable.
- The context and PPOs are made to not reference the program directly,
but work solely through the executable. As a result, the program is
free to create a new executable for link.
With this change, the link job will be free to modify the executable as
necessary because that will not be accessed until the link is done.
Note that previous changes made the backend executable accessed through
the frontend one, and moved all link results to the frontend and backend
executables as appropriate.
Bug: angleproject:6358
Bug: angleproject:8297
Change-Id: Ie636b23ff7420ad284d18b525ec4f5fb559dd9d1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4823089
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
0ff71d5e
|
2023-09-05T12:55:50
|
|
D3D: Fix FramebufferD3D reading the wrong program executable
Read the currently bound program executable instead of the possibly
incomplete one from the currently bound program.
Bug: angleproject:6358
Bug: angleproject:8297
Change-Id: Ieda50767b20562436ea9f9bf541965205b578017
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4842929
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
93402d6f
|
2023-09-05T12:57:16
|
|
D3D: Move the program serial into ProgramExecutableD3D
The program executable tracks the specific shaders being used which are
no longer tied to the ProgramD3D.
Bug: angleproject:6358
Bug: angleproject:8297
Change-Id: Ic34b4f229de7fb7daea8c6ef906bf87d8c0b37d9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4842930
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
6ff209bc
|
2023-08-30T00:02:30
|
|
Clean up InfoLog usage during link
The info log doesn't really belong to ProgramExecutable; it belongs to
ProgramState. However, it is placed there for convenience since many
functions access it.
This change cleans up usage of InfoLog so the one in ProgramExecutable
is consistently used, but also that is turned into a reference to
ProgramState's InfoLog.
This is necessary for a follow up change that restores the previous
executable on link failure (and would thus otherwise lose the info log
of the failing link).
Bug: angleproject:8297
Change-Id: I088408e3fce9ebb35b1ec4ad3dc599bdb90bf5c5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4825624
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
d4756a94
|
2023-08-29T15:26:15
|
|
D3D11: Fix register index of read-only storage images
On D3D11 read-only storage images should consume SRV registers ("t")
instead of UAV registers ("u"), so baseUAVRegister shouldn't be
related to read-only storage images.
fixed: angleproject:4404
Bug: angleproject:7121
Change-Id: I3ca35497992de599d0427fae10d750aff7cf7d9e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4819797
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Stephen White <senorblanco@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
0b20cd6a
|
2023-08-28T17:45:00
|
|
d3d11: avoid exit-time-destructor warning
Applies to use_custom_libcxx=false on Windows builds. On MSVC's C++
runtime, std::mutex has a destructor.
Bug: angleproject:8327
Change-Id: I6118753569ce0529015e82673571c961a38f30e6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4819793
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Steven Noonan <steven@uplinklabs.net>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
33472e77
|
2023-08-30T09:45:43
|
|
D3D11: Fix the compilation of vertex shader with storage image
This patch adds the missing declaration of storage images in vertex
shader. With this patch the vertex shaders with storage image
declarations can be correctly compiled on D3D11 backends.
Bug: angleproject:7121
Change-Id: I32b8c632df83a64a34318e9668e9aa8d376cca56
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4819792
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
519d330c
|
2023-08-28T15:41:18
|
|
Add GL_RGBX8_SRGB_ANGLEX and GL_BGRX8_SRGB_ANGLEX formats
If app creates AHB with sRGBX format, and then create a EGLImage,
Image::initialize() will retrieve the sized format from AHB, which is
GL_RGBX_ANGLE, and then try to convert to sRGB color space. The bug here
is that GetNonLinearFormat will pick GL_SRGB8 for all these formats
:GL_RGB8, GL_BGRX8_ANGLEX, GL_RGBX8_ANGLE. This means that different
AHBS with these three different format will end up createing a tetxure
with same format which sRGB. I think the reason somone did it this way
initially simply because there is no sRGB corresponding format available
for BGRX8 and RGBX8. This CL adds sRGB internal version of these two
formats, thus make it straight forward to pick the correct sRGB format.
The other change here is for AHBs, right now we are always force
mRequiredImageAccess to be Renderable. This actually workedaround the
bug that mentioned earlier that we are picking the wrong format. Because
of forced renderable, we end up with SRGB fallback to SRGBA. But
external images should not fallback, we should use its existing format
as is since it can be accessed via AHB interface directly.
Bug: b/298037344
Change-Id: I6119c4015cc5bf0effdf0530cb756b6c4656c38f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4819053
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
3822ea3a
|
2023-08-24T22:42:43
|
|
D3D: Move program state to ProgramExecutableD3D
Bug: angleproject:8297
Change-Id: Ieead87d2f0ebe5937f262f598443a00504ea1492
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4812139
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
bb135f0e
|
2023-08-24T15:29:11
|
|
Make ProgramExecutableImpl managed by ProgramExecutable
This change allows both parts of the program executable to be safely
backed up and swapped on link.
Bug: angleproject:8297
Change-Id: I17e4b6c05e4e481a66a227d6047dbf943d2c2603
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4812138
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
44b5715c
|
2023-08-15T15:06:25
|
|
D3D: Remove link job dependence to context
The part of link that needs the context is moved up. Usage of
gl::Context and gl::State is eliminated from the rest of the link.
Bug: angleproject:8297
Change-Id: I2064b21a6724d602f6a84f53a8ae5fe42fe4e837
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4781566
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
cfd9ccd0
|
2023-08-09T17:21:20
|
|
Reland: Vulkan: Move SPIR-V set up to link job
This is a reland of 10f54902e816fa7e4cf314384e00590e2b9bfa1d
Bug: angleproject:8297
Change-Id: I701b750a13ac5b17df67dee5b6c37c13c60f5b10
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4793219
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
f3c1de36
|
2023-08-17T15:29:24
|
|
Make shader recompile while parallel linking safe
Prior to this change, Program* objects held references to Shader*
objects. This poses a problem where a shader recompile can race with a
program link, if the program link is done in parallel.
As a result, a good chunk of the link job is done serially and under the
share group lock. After this change, that is no longer a problem, and
most of the link can be made lockless/parallelized.
This change separates out the "compiled state" from the rest of the
shader state. This was already done for the front-end state (for the
sake of caching), but is also now done for the backends that need it.
The compiled state in turn is placed in a shared_ptr, and is shared with
the program. When a shader is compiled, its own shared_ptr is replaced
with a new object, leaving all programs currently compiling unaffected
and using the previous compilation results.
Once a program is linked, its references to compiled shader states is
updated.
Bug: angleproject:8297
Change-Id: Iff7094a37088fbad99c6241f1c48b0bd4c820eb2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4791065
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
aaeeea0c
|
2023-08-17T14:28:12
|
|
D3D11: Add device id to the render string
To get device id from GL_RENDER string when using D3D11 backend.
Bug: angleproject:3026
Change-Id: Ied666a481575ece077126c3e1177b150e7358a01
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4786902
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
5217beb2
|
2023-08-15T13:43:12
|
|
Reland "Tightly pack LinkedUniform by using int16_t"
This is a reland of commit 152cf62b38874238095a91307e4ea9bcdedf8f46
Original change's description:
> Tightly pack LinkedUniform by using int16_t
>
> There is a check of vector size when we link uniforms and the maximum
> vector size is 4096 due to we clamp the maxUniformBlockSize to 64KB. In
> reality, if we exceeds this number, program link will take really long
> time and then hit failure. So there is no real need to keep all the
> variables in 32 bit integer. This CL changes to 16 bit integer. Further,
> sh::BlockMemberInfo and ActiveVariable data members are embeded into
> LinkedUniform struct as well so that the unused variables can be removed
> and data can be tightly packed. This also makes LinkedUniform easier to
> maintain as a simple struct with basic data types. With this change,
> LinkedUniform size is reduced from 108 bytes down to 60 bytes, 48 bytes
> reduction. Given some apps has 200-ish uniforms, this CL reduces 48
> bytes x 200 = ~9K memory just for uniforms per program (which goes
> through hash compute and decompression and file reads).
>
> Bug: b/275102061
> Change-Id: I7fae20f5b75f3239305e2094a992e3040b8c8e4c
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4754133
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Commit-Queue: Charlie Lao <cclao@google.com>
Bug: b/275102061
Change-Id: I1cdec9407e930608d3239a104dcbf77c8d8e2113
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4791661
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
1e1c9d9d
|
2023-08-11T15:16:26
|
|
Pack and reduce Program::mProgramInput size
Right now mProgramInput is std::vector<sh::ShaderVariable>. It really
only need a subset of ShaderVariable struct. This CL adds a ProgramInput
struct so that we can add data members that actually required. This CL
also makes bools into bitfield and some variables to uint16_t to further
compact the size. This CL also groups the data memebers other than
string to basicDataTypeStruct which only contains basic data types and
the entire struct is memcpied during program binary load and save. This
not just reduces number of memcpy calls, but also improves reliability
so that when someone adds a new member into the struct, it will
automatically load/save correctly.
Bug: b/275102061
Change-Id: Ic055c986453ed46e56057a0122c9926245fef4d1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4776267
Reviewed-by: Roman Lavrov <romanl@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
aa8d60aa
|
2023-08-14T00:00:00
|
|
D3D11: Normalize blend state for MIN/MAX operations
Use default blend factors for MIN/MAX operations to
reduce the number of unique keys and to avoid D3D11
state allocation failures.
Fixed: angleproject:8305
Change-Id: I6abcf93240653de8d7d8e174c1f8109d12de63e6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4776071
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
4ba4af61
|
2023-08-17T11:28:18
|
|
Revert recompile blocking on link
Causing timeouts on some platforms. An alternative implementation will
follow.
This change also reverts two changes that depend on it:
Vulkan: Move SPIR-V set up to link job
10f54902e816fa7e4cf314384e00590e2b9bfa1d.
Vulkan: Move default uniform init to link job
d8cd4dcdc9c55c88f030f7fca41357e99e600ed2.
Bug: angleproject:8297
Change-Id: I9a258460e7bcaeac214be5e63c16c20681e0bcde
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4789843
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
9f48f931
|
2023-08-16T06:38:15
|
|
Revert "Tightly pack LinkedUniform by using int16_t"
This reverts commit 152cf62b38874238095a91307e4ea9bcdedf8f46.
Reason for revert: Suspect cause of failure in for several Linux MSan Tests, e.g.
https://ci.chromium.org/ui/p/chromium/builders/ci/Linux%20MSan%20Tests/42403/overview
https://ci.chromium.org/ui/p/chromium/builders/ci/WebKit%20Linux%20MSAN/22174/overview
https://ci.chromium.org/ui/p/chromium/builders/ci/Linux%20MSan%20Tests/42403/overview
Original change's description:
> Tightly pack LinkedUniform by using int16_t
>
> There is a check of vector size when we link uniforms and the maximum
> vector size is 4096 due to we clamp the maxUniformBlockSize to 64KB. In
> reality, if we exceeds this number, program link will take really long
> time and then hit failure. So there is no real need to keep all the
> variables in 32 bit integer. This CL changes to 16 bit integer. Further,
> sh::BlockMemberInfo and ActiveVariable data members are embeded into
> LinkedUniform struct as well so that the unused variables can be removed
> and data can be tightly packed. This also makes LinkedUniform easier to
> maintain as a simple struct with basic data types. With this change,
> LinkedUniform size is reduced from 108 bytes down to 60 bytes, 48 bytes
> reduction. Given some apps has 200-ish uniforms, this CL reduces 48
> bytes x 200 = ~9K memory just for uniforms per program (which goes
> through hash compute and decompression and file reads).
>
> Bug: b/275102061
> Change-Id: I7fae20f5b75f3239305e2094a992e3040b8c8e4c
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4754133
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Commit-Queue: Charlie Lao <cclao@google.com>
Bug: b/275102061
Change-Id: Id344e306307553731097f06edafc40bfeb73ff80
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4780494
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
152cf62b
|
2023-08-15T13:43:12
|
|
Tightly pack LinkedUniform by using int16_t
There is a check of vector size when we link uniforms and the maximum
vector size is 4096 due to we clamp the maxUniformBlockSize to 64KB. In
reality, if we exceeds this number, program link will take really long
time and then hit failure. So there is no real need to keep all the
variables in 32 bit integer. This CL changes to 16 bit integer. Further,
sh::BlockMemberInfo and ActiveVariable data members are embeded into
LinkedUniform struct as well so that the unused variables can be removed
and data can be tightly packed. This also makes LinkedUniform easier to
maintain as a simple struct with basic data types. With this change,
LinkedUniform size is reduced from 108 bytes down to 60 bytes, 48 bytes
reduction. Given some apps has 200-ish uniforms, this CL reduces 48
bytes x 200 = ~9K memory just for uniforms per program (which goes
through hash compute and decompression and file reads).
Bug: b/275102061
Change-Id: I7fae20f5b75f3239305e2094a992e3040b8c8e4c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4754133
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
10f54902
|
2023-08-09T17:21:20
|
|
Vulkan: Move SPIR-V set up to link job
Bug: angleproject:8297
Change-Id: I2c7eb0281d181560c8fa3ace007b1e547b6cf18e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4764619
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
424f43e4
|
2023-08-11T17:07:16
|
|
Prevent shaders from recompiling while a link job is in progress
This will prevent a guarantee that link jobs can take further advantage
of. In particular, a good chunk of the link job is done serially and
under the share group lock due to this recompile-while-link issue.
After this change, that is no longer a problem, and most of the link can
be made lockless/parallelized.
Bug: angleproject:8297
Change-Id: Ic41ac62fb8c40131a69cd90fa9430584964677fa
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4776338
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
6092e0b7
|
2023-08-10T00:00:00
|
|
D3D11: Ensure that clip depth mode is synced
Syncing clip depth mode driver uniform
should not depend on a viewport state.
Bug: angleproject:6554
Change-Id: I6ff2549a88fe3795eef20acfc48d0e945f19c4e0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4775599
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
f395f34b
|
2023-08-03T13:58:43
|
|
features: frontload feature overrides
This allows us to have features that depend on the state of other
features more reliably.
For example, let's say you have two features:
ANGLE_FEATURE_CONDITION(&mFeatures, allowX, (benefitsFromX || isSpecificHardware) && !isBadHardware);
ANGLE_FEATURE_CONDITION(&mFeatures, supportsX, hardware.featureXSupported && mFeatures.allowX.enabled);
Before this change, if you overrode allowX, the override would be
applied too late for the supportsX test.
This also helps with disabling dependent features via overrides. For
example, if you disable "supportsRenderpass2", it will also disable
features depending on it, such as "supportsDepthStencilResolve" and
"supportsFragmentShadingRate".
By frontloading the feature overrides, we can have cross-dependencies
between "feature supported on this platform" and "allow this feature by
policy".
Bug: angleproject:8291
Change-Id: Id6da2c89428fa896d677fe8d5a41369277a21b31
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4749524
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Steven Noonan <steven@uplinklabs.net>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
df76f5b1
|
2023-08-08T15:13:54
|
|
Respect KHR_parallel_shader_compile for program link
Parellel shader compilation was using the single-threaded vs
multi-threaded pool appropriately, while program link was always being
multi-threaded.
This change makes sure the program link tasks uses the same pool as
shader compilation per KHR_parallel_shader_compile.
Bug: angleproject:8297
Change-Id: I0508617678a6e875fc0719a2d447cf1a9c5ca40f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4762086
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
eff12c1e
|
2023-08-03T12:10:05
|
|
Move name and mappedName out of LinkedUniform struct
These are std::string objects. This CL moves these two data out of
LinkedUniform and into ProgramExecutable class, side by side with
mUniforms. With these two data moved out, LinkedUniform is now a simple
struct with basic data types, and I can memcpy entire vector of
uniforms.
Bug: b/275102061
Change-Id: I9ae13e7daca85f8e5f3662a4718f190bebb5f5d2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4750442
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|