|
6deca89e
|
2023-03-22T22:33:40
|
|
Add Spirv Instruction to explicitly cast mediump float to 16 bit
If the GLSL shader code expects the comparison between
two mediump float values returning true, but the SpirV
compiler treats one of them as 32-bit, and treats the
other one as 16-bit, the comparison would return false
instead. The SpirV compiler may not automatically cast
the mediump float values to 16 bits, because it may
utilize the RelaxedPrecision decoration to keep a mediump
float as 32-bit, so that the compiler can avoid the
type cast from 32-bit highp to 16-bit mediump.
This change adds an additional OpQuantizeToF16 SpirV
instruction to explicitly cast mediump float scalar
or mediump float vector to 16 bit, if they are assigned
with a highp float value. This ensures that if the
GLSL shader code ever compares two meiump float values,
the SpirV shader compiler is not accidentally comparing
a 16 bit with a 32 bit float value.
This fixe the deqp test failure on Pixel 6 and Pixel 7:
dEQP-GLES2.functional.shaders.algorithm.rgb_to_hsl_vertex.
Bug: b/274859104
Bug: b/274408172
Change-Id: Ifd996cea14c0f77f45ae90f38c8e53cf5035139f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4400404
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
65f4d2a4
|
2023-04-17T10:08:18
|
|
Adds features to enable loading/saving metallibs to blobcache
CompileMetalShaders results in the appropriate command line tool
being run to generate metallib blobs from shader source.
DisableProgramCaching results in not saving programs to BlobCache
LoadMetalShadersFromBlobCache results in trying to load metallibs
from BlobCache.
Bug: chromium:1423136
Change-Id: I01a4d7a5d60ed5ac978fb99db01b741e0f19e76b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4434293
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Scott Violet <sky@chromium.org>
|
|
7bc4b7e3
|
2023-03-27T00:00:00
|
|
Metal: Implement OES_sample_variables
New ESSL built-ins are mapped to their Metal
counterparts and tweaked to follow OpenGL ES
semantics when needed.
Fixed A2C interaction with sample coverage
by emulating the former on non-Apple GPUs.
Bug: angleproject:8097
Fixed: angleproject:5087
Change-Id: I5d28a941af5cbc14743a3930731529f11f55febd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4404896
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Kyle Piddington <kpiddington@apple.com>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
c26011b8
|
2023-04-11T15:16:29
|
|
Vulkan: Make advanced blend alpha div workaround permanent
This workaround turned out to affect pretty much every driver, and
numerous GL implementations were found to work around it similarly to
ANGLE. It seems like this workaround may only be necessary for
colorburn and colordodge, but for now ANGLE applies it to all modes.
Bug: b/274528004
Bug: b/277777623
Change-Id: Id555c981a9775f949a3022b7e92c755accea7cea
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4416158
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
8b79410b
|
2023-04-02T22:25:12
|
|
Vulkan: Treat readonly SSBOs as readonly!
Instead of assuming SSBOs are always written to, this change adds
plumbing for the backend to know when an SSBO is declared readonly and
marks the buffer readonly accordingly.
With this change, BufferVk can optimize uploads and copies to and from
the buffer with the knowledge that it can be safely mapped on the CPU
for read while it's being used by the GPU.
Bug: b/276002151
Change-Id: I75342148c07949a83436054a738395bbd88caec5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4392720
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
3aea3cfd
|
2023-04-03T16:38:29
|
|
Vulkan: Workaround depth bias constant factor on ANV
Bug: b/249380591
Change-Id: Iaeda7faf5eb40e0e2086674d3e63bf5bc9911ab4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4392893
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
f1f80e1e
|
2023-03-22T12:54:08
|
|
Metal: Always prefer staged GPU uploads for textures.
Uploading Metal texture data via MTLTexture::replaceRegion is a source
of lots of CPU hangs and jank. There may be better heuristics to
determine if we should do a CPU vs GPU upload but for now preferring
GPU uploads has better overall performance.
This also improves the MotionMark images test:
- 40 -> 100 when using Metal.
- 217 -> 235 when using Metal +
https://chromium-review.googlesource.com/c/chromium/src/+/4091749
Bug: angleproject:8024, angleproject:8092, angleproject:8109
Change-Id: I36b5f585884391b4cc416365ae65f8542745beee
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4264963
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
|
|
29abd5a2
|
2023-03-06T11:35:45
|
|
Explicitly Add Aliased Memory Decoration in SpirV
In GLSL, aliased memory qualifier is implicitly available,
unless we explicitly specify the memory is restrict:
https://www.khronos.org/opengl/wiki/Type_Qualifier_(GLSL)#Memory_qualifiers.
However, in SpirV, aliased memory qualifier has to be
explicitly specified:
https://registry.khronos.org/SPIR-V/specs/unified1/SPIRV.html#AliasingSection
This change adds the aliased memory decorations to SSBO
if the GLSL does not specify the restrict memory qualifier.
This is a temporary workaround to fix the deqp test failures
on some android devices. Eventually we would like to waive this
test for ANGLE due to alised memory in Vulkan does not suppose
to affect SSBOs that have different set/binding, please refer
to this Khronos ticket for more details:
https://gitlab.khronos.org/Tracker/vk-gl-cts/-/issues/4321
Bug: b/266235549
Change-Id: Ic7afc417a5d421664b60e0413a011314787e14e7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4312130
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
97897d92
|
2023-03-27T16:02:57
|
|
Vulkan: Work around driver bug with dynamic primitive restart
This CL forces the state to be static on buggy drivers.
Bug: b/275210062
Change-Id: Ia3391ecb19c3c9d19c05a83e11da8c718513a4e2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4374104
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@google.com>
|
|
1ee27fcd
|
2023-03-24T00:00:00
|
|
Fix translation of noperspective interpolation qualifier
Auxiliary storage qualifiers used with 'noperspective'
interpolation must be retained during ESSL translation
* Added new qualifiers:
* EvqNoPerspectiveCentroid
* EvqNoPerspectiveCentroidIn
* EvqNoPerspectiveCentroidOut
* EvqNoPerspectiveSample
* EvqNoPerspectiveSampleIn
* EvqNoPerspectiveSampleOut
* Adjusted GLSL and SPIR-V output
* Adjusted 'sample' rank to be the same as 'centroid'
Fixed: angleproject:4388
Change-Id: Iffc80a7a3b057beffd3bcbbc9446eeed77183c99
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4368471
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
888ca8d9
|
2023-03-21T18:56:56
|
|
Bind FBO before timer query on Mali GL driver.
glBeginQuery(GL_TIME_ELAPSED/GL_TIMESTAMP) on Mali implementation
assumes a complete FrameBuffer. Without it glGetQueryObject will return
a meaningless value, causing some applications to misbehave.
This workaround caches and binds a default FBO in this case.
Bug: chromium:1356053,b/269068358
Change-Id: I756ded948c2c5aada744f9dd428ad77c37a009c6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4359032
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Kramer Ge <fangzhoug@chromium.org>
|
|
ad52f12e
|
2023-03-21T00:00:00
|
|
Implement EXT_conservative_depth
Added translator frontend and GLSL backend
support for gl_FragDepth redeclaration and
layout qualifiers.
Added mappings to DepthGreater, DepthLess,
and DepthUnchanged SPIR-V execution modes.
Bug: angleproject:8046
Change-Id: I23f19ff54380741107970a44055ea269eef179f6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4355028
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
a491bbe3
|
2023-03-18T19:05:08
|
|
Add PLS utilities for interrupting a rendering pass
Adds two more simple commands to ANGLE_shader_pixel_local_storage that
allow WebGL and the command buffer to interrupt rendering passes without
having to either (1) make expensive queries, or (2) track lots of
complex state for validation that they are not currently equipped to
track.
Bug: chromium:1421437
Change-Id: I80eaef3ae6b0b4bbbecb9cd2268ac90b43675d1c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4355032
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
|
|
513ca723
|
2023-03-13T14:30:20
|
|
Delete GL_LOAD_OP_DISABLE_ANGLE from PLS
This load op makes the PLS spec and WebGL implementations unnecessarily
complex.
Bug: chromium:1421437
Change-Id: Iab02a8b02083899c6cc345ecb25b88c5871611c9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4335148
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Chris Dalton <chris@rive.app>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
b468e4dd
|
2023-03-08T14:21:47
|
|
Add back "non-robust" PLS queries
Chrome doesn't have a codegen template for queries that model the
"robust" signature, so support both types.
Specify that the robust variants are only supported if
ANGLE_robust_client_memory is supported, so Chrome and other
implementations don't have to support them.
Bug: chromium:1421437
Change-Id: Icc69b69ce9ce0a2cfad0dbeed1f3b29bcfa92d20
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4321867
Commit-Queue: Chris Dalton <chris@rive.app>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
aa5b97de
|
2023-03-06T17:59:43
|
|
ANGLE_metal_shared_event_sync: Control signaling external events
It was assumed that the external MTLSharedEvent passed to eglCreateSync
should be signaled by the GL. This change adds
EGL_SYNC_METAL_SHARED_EVENT_SIGNALED_ANGLE, which when passed as the
value for EGL_SYNC_CONDITION during eglCreateSync, changes the behavior
to not insert a fence command into the command stream.
Test: angle_end2end_tests --gtest_filter=EGLSyncTestMetalSharedEvent.AngleMetalSharedEventSync_WaitSync_ExternallySignaled
Bug: angleproject:8064
Change-Id: Ia1b8615b976f293d411b7d2be506b0ac87d64dee
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4307152
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Sunny Sachanandani <sunnyps@chromium.org>
|
|
a65f6a9d
|
2023-03-07T16:11:44
|
|
Make PLS queries robust
There's no reason not to mirror the ANGLE_robust_client_memory API here.
Bug: chromium:1421437
Change-Id: Ifb8b1a9675abe2ceb35272dc905f3c38f29dceda
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4317485
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Chris Dalton <chris@rive.app>
|
|
4256c022
|
2023-03-01T00:00:00
|
|
Metal: Implement ANGLE_stencil_texturing
Used texture views to sample stencil values
from combined depth/stencil textures.
Texture2DDepthStencilTestES3.TexSampleModes* tests
were split into swizzled and non-swizzled variants
to suppress only swizzled cases on some platforms.
Added a new avoidStencilTextureSwizzle workaround to
skip creating swizzled texture views of stencil-only
textures on platforms that fail to sample from them.
Fixed: angleproject:8051
Change-Id: I0b1148f8d30fc6459239efcdaeee6c0364633cc8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4304058
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
4f87f4e9
|
2023-03-03T13:19:09
|
|
Vulkan: Add useResetCommandBufferBitForSecondaryPools feature.
Currently ANGLE does not use "vkResetCommandBuffer()" on Vulkan
Secondary Command Buffers. Instead it uses "vkFreeCommandBuffers()" and
"vkAllocateCommandBuffers".
According to spec, "VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT" is
required only for command buffer reset operations.
However, some ARM drivers may not free memory in
"vkFreeCommandBuffers()" without this flag.
Bug: angleproject:8059
Change-Id: Ibfe45bca345dc48484b625c450369d30805cec77
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4306722
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
3fed0866
|
2023-02-22T00:00:00
|
|
Implement EXT_texture_mirror_clamp_to_edge
Support GL_MIRROR_CLAMP_TO_EDGE_EXT address
mode when native support is available.
Adjusted validation, sorted switch cases by
target enums order.
Added new TextureMirrorClampToEdge* end2end
tests.
Drive-by: fixed texture address computation
for integer formats with GL_MIRRORED_REPEAT
on D3D11.
Fixed: angleproject:7968
Change-Id: Iaf29c8b4b32a7630c2a871f832d171f4bc4e2672
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4289137
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
a2efea13
|
2023-03-01T00:00:00
|
|
Add ANGLE_stencil_texturing
This extension allows texturing of the stencil
component of a packed depth stencil texture on
OpenGL ES 3.0 contexts.
Trivially exposed on backends that support
OpenGL ES 3.1, which requires this feature.
Adjusted the tests to check for the new
extension string instead of the context
version.
Bug: angleproject:8051
Change-Id: I4d833acbc72e7374bde91d4c861598a0fdaf9b90
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4295312
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
6d282d62
|
2023-02-08T16:51:07
|
|
Vulkan: Move retireFinishedCommands/garbageCleanup to worker thread
This CL separate out the logic of mLastCompletedQueueSerial update and
retireFinishedCommands and garbage clean up into different functions. At
submission, previously we are always check fence and update
mLastCompletedQueueSerials and calling reset on finished commands and do
garbage clean up. With this CL, we only do the fence check and update
mLastCompletedQueueSerials. Then it request worker thread to do the
command buffer reset and garbage cleanup. We uses the CommandProcessor's
thread for the reset and cleanup, since async submission path needs to
handle this clean up anyway.
This CL also added a new feature flag asyncCommandBufferReset and it is
disabled right now. This will be enabled in the follow up CL.
Bug: b/255411748
Change-Id: I6da558f8d4c962eb038e2378ccc76c464101cde2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4244823
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Charlie Lao <cclao@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
a1f9b9aa
|
2023-02-20T00:00:00
|
|
Implement more texture border color adjustments
D3D11:
* Exposed EXT_texture_border_clamp extension string,
to ensure that the relevant CTS tests are running.
* Updated StateManager11::setSamplerState to adjust
the border color based on the texture format.
* Refactored ShaderConstants11::updateSamplerMetadata to
correctly adjust the border color for integer formats.
* Removed unused SamplerMetadata.internalFormatBits
D3D9:
* Updated Renderer9::setSamplerState to adjust the border
color value based on the current texture format.
* Added borderColorSrgb feature required for some drivers.
GL:
* Copy alpha value to green for A and LA legacy formats to
workaround driver bugs when lumaWorkaround is not used.
Tests:
* Added ES 2.0 tests for texture formats
that require border color adjustments.
Fixed: angleproject:7969
Change-Id: I3d36cce43e76e6d5069a51865152c2250ecbb017
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4291000
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
3a7904e1
|
2023-01-25T23:56:56
|
|
Vulkan: Use VMA suballocation for images
There is a maximum limit for device memory object allocation. On some
platforms, there can be an error regarding too many object allocations
when 4096 device memory handles have been allocated. Suballocation can
help mitigate this issue. In this CL, some images will be allocated
using VMA API calls, which use suballocation.
* Added a new feature (useVmaForImageSuballocation).
* Added VMA allocation for ImageHelper, which is used in initMemory().
* Suballocation is used for VMA image allocation.
* If enabled, mVmaAllocation will be initialized in the ImageHelper
object (instead of mDeviceMemory).
* It is currently used for all platforms.
* Minor change to the name of an arg in CreateBuffer() declaration.
* Added test to make sure we can allocate at least 4096 images on
supported platforms (8000 in the test).
* Skipped the test "NonZeroBaseEmulatedClear" when run on Linux/Intel
if this feature is enabled (due to output color mismatch).
* Skipped several tests for capture/replay on Windows.
Bug: b/218891184
Change-Id: Ibf80c9c8c485b301da7d23b5ba4bcbb1a8e3194f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4191202
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
8105a801
|
2023-02-23T10:00:17
|
|
Change enum allocation for EGL_PLATFORM_ANGLE_DISPLAY_KEY_ANGLE
Changes EGL_PLATFORM_ANGLE_DISPLAY_KEY_ANGLE from 0x34DA to 0x34DC
Bug: chromium:1251724
Change-Id: I609d37abd622bf0c3bbab253d4d0dea31edd1774
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4287264
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
13e8dabc
|
2023-02-15T14:34:05
|
|
Add EGL_PLATFORM_ANGLE_DISPLAY_KEY_ANGLE
To allow the creation of multiple EGLDisplays on the same graphics
device, we need a value to key for the display cache. When the
display key is specified, the cache will return a new display for
that key, even if there is an existing display on the same graphics
device.
Bug: chromium:1251724
Change-Id: I55e169776770734fc33b8bc8e1265ea6f7472fe3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4255730
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
5a77200b
|
2023-02-08T17:10:28
|
|
Metal: Implement parallel shader linking.
Update the Metal library cache to be thread safe. Change
absl::flat_hash_map back to std::unordered_map because the value types
now contain a mutex which must not move.
Only generate async compilation tasks for shaders that were not already
compiled and in the cache.
Collapse some of the link methods in ProgramMtl that only had one call
site. All linking is now done in ProgramMtl::link and
ProgramMtl::load.
Support disabling parallel linking using the new
enableParallelMtlLibraryCompilation feature.
Bug: chromium:1385510
Change-Id: I71ba71a34d994066729df7e4170911f88c89de4a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4234153
Reviewed-by: Quyen Le <lehoangquyen@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
ee64836f
|
2023-02-11T17:56:06
|
|
Revert "Metal: Optimized BufferSubData per device"
This reverts commit 968041b54770af8917001d8fe9b52a881cfed0b2.
Includes the following patches:
git revert -n 995db1f66bcf87fc9e47d908fb2a885e810d2567 \
9a6c90c8f802b4d107a081bfccaf4be007e7af54 \
dbd47e378582ef86db52c7379cd220cf0b2c8193 \
369b320f92f54774879e8b8faff834fc8db0793e \
4abae6f97586448712e2dc1cced4a678b0901d7b \
968041b54770af8917001d8fe9b52a881cfed0b2
Several conflicts with top-of-tree were resolved during this revert.
The aim is to reland this with additional code which will reduce the
amount of excess buffer memory allocated, and release the resources
associated with temporary buffer allocations.
Bug: angleproject:7544
Change-Id: Ib7a6bc2ab1c2f23cb43112cd980106e2898c3826
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4240556
Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Gregg Tavares <gman@chromium.org>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
|
|
54951da2
|
2022-12-18T17:11:33
|
|
Vulkan: Refactor extension vs core version checks
Extensions are now grouped based on promotion-to-core status, and
initialization code is generally cleaned up. ANGLE currently doesn't
attempt to use a core version above Vulkan 1.1, as extensions are always
assumed to be exposed even if promoted to core in later versions.
With this change, it would be simpler to use a newer core version if
ever necessary.
Bug: angleproject:7959
Change-Id: Ia5fd3e06c18f7289e9e5a63af0f039a6dc89c687
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4224582
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Ian Elliott <ianelliott@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
b3846714
|
2022-11-28T11:05:05
|
|
Vulkan: Feature to make async queue slow for testing
Bug: angleproject:6746
Change-Id: I2573cae2dcf42d177168c55bc2a6d8bb012dde18
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4227986
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
9b00af52
|
2023-02-01T11:10:32
|
|
Metal: Add an in-memory MTLLibrary cache.
Add a small cache for (msl + compile parameters) -> MTLLibrary at the
egl::Display level. In regular executions of Chrome, the same shaders
(particularly vertex) are compiled multiple times in different programs.
Tested for a regular Chrome startup + open wikipedia + motionmark 1.2:
112/282 (40%) cache hits.
Several different caching methods were profiled (LinkProgram perf test)
- struct key with std::map : 303309
- struct key with std::unordered_map : 308090
- binary blob key with std::map : 263595
- binary blob key with std::unordered_map : 286051
- struct key + is_transparent with std::unordered_map : 304877
- struct key + is_transparent with absl::flat_hash_map : 335686
Using is_transparent allows us to search the hash map without
copying the shader source string to construct the key structure.
Bug: chromium:1385510
Change-Id: Ieec4ba526fe286276a4af7114d89cde32a8f9e1d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4214012
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
1d9b8d80
|
2023-01-24T16:50:32
|
|
Reland "Add support for glShaderBinary"
This is a reland of commit 228973e73135924ddf6116e0b63eff5a1ccbf232
with the following fixes -
1. Apply patch from Yuly to fix chromium build errors
2. Fix ShaderBinaryTest instantiation call
3. Add ShaderBinaryTest to expectations file for IOS
Original change's description:
> Add support for glShaderBinary
>
> This patch adds the following -
> 1. ANGLE_shader_binary extension and GL_SHADER_BINARY_ANGLE token.
> 2. Compiler support to generate shader binaries.
> 3. Update compiler to use SH_SPIRV_VULKAN_OUTPUT as output type for
> Vulkan translator.
> 4. Support to load GL_SHADER_BINARY_ANGLE binaries.
> 5. end2end tests for glShaderBinary.
>
> Tests: ShaderBinaryTest*
> Bug: angleproject:7833
> Change-Id: I191d5ba7c4d5304696f5e743c851dc945fa57858
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4137306
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Commit-Queue: mohan maiya <m.maiya@samsung.com>
> Reviewed-by: Charlie Lao <cclao@google.com>
Bug: angleproject:7833
Change-Id: I21135c52e2bae955342a99aff5631ba0e687eff1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4195852
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
18657894
|
2023-01-25T13:05:56
|
|
Add features to dump and replace shader source.
dump_shader_source writes shader source strings to files named
with the hash of the source and shader type.
enable_shader_substitution allows subsituting the shader source
with the strings contained in a file. The same file naming scheme
as dump_shader_source is used so shaders can be dumped in one run,
modified and subsititued in the next run.
Use the ANGLE_SHADER_DUMP_PATH and debug.angle.shader_dump_path
environment variables to control where files are written. If they
are unspecified, write to the temp directory.
Based upon Cody's CLs:
https://chromium-review.googlesource.com/c/angle/angle/+/2755841
https://chromium-review.googlesource.com/c/angle/angle/+/3961670
Bug: angleproject:7760, chromium:1385510
Change-Id: I43b9827b977079b88daa794e867637f7a126b080
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4192347
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
0c9cbf39
|
2023-01-26T12:07:51
|
|
Revert "Add support for glShaderBinary"
This reverts commit 228973e73135924ddf6116e0b63eff5a1ccbf232.
Reason for revert: breaks compile on ANGLE into Chromium roll
https://cr-buildbucket.appspot.com/build/8790942326644064097
https://cr-buildbucket.appspot.com/build/8790942759045412865
https://cr-buildbucket.appspot.com/build/8790942417069789217
Leaks detected on ASAN
https://cr-buildbucket.appspot.com/build/8790946657703508337
Original change's description:
> Add support for glShaderBinary
>
> This patch adds the following -
> 1. ANGLE_shader_binary extension and GL_SHADER_BINARY_ANGLE token.
> 2. Compiler support to generate shader binaries.
> 3. Update compiler to use SH_SPIRV_VULKAN_OUTPUT as output type for
> Vulkan translator.
> 4. Support to load GL_SHADER_BINARY_ANGLE binaries.
> 5. end2end tests for glShaderBinary.
>
> Tests: ShaderBinaryTest*
> Bug: angleproject:7833
> Change-Id: I191d5ba7c4d5304696f5e743c851dc945fa57858
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4137306
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Commit-Queue: mohan maiya <m.maiya@samsung.com>
> Reviewed-by: Charlie Lao <cclao@google.com>
Bug: angleproject:7833
Change-Id: Ice19576acbc1351810ff0cd769ac17ad6c0abdf3
No-Try: true
No-Presubmit: true
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4197375
Auto-Submit: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
|
|
228973e7
|
2023-01-24T16:50:32
|
|
Add support for glShaderBinary
This patch adds the following -
1. ANGLE_shader_binary extension and GL_SHADER_BINARY_ANGLE token.
2. Compiler support to generate shader binaries.
3. Update compiler to use SH_SPIRV_VULKAN_OUTPUT as output type for
Vulkan translator.
4. Support to load GL_SHADER_BINARY_ANGLE binaries.
5. end2end tests for glShaderBinary.
Tests: ShaderBinaryTest*
Bug: angleproject:7833
Change-Id: I191d5ba7c4d5304696f5e743c851dc945fa57858
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4137306
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
ffbb65bc
|
2022-11-28T13:31:48
|
|
Vulkan: Use VK_EXT_swapchain_maintenance1 for present fences
Bug: angleproject:7878
Change-Id: Ic3a43c663789a6489cff261848d9ad4a408ca53a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4088905
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Ian Elliott <ianelliott@google.com>
|
|
bf5a007a
|
2022-06-16T14:21:08
|
|
Metal: Ensure render pass has at least one valid render target.
Extend MTLRenderPipelineDescriptor validation to ensure that there is at
least one valid render target set for the the render pipeline. This is
required for certain families of metal devices to avoid a validation
failure inside the metal framework. Moving the failure here will cause
the app using ANGLE to return a GL error instead of crashing the
process.
Bug: angleproject:7436
Change-Id: I594d92492a22a61a720dbe7021843c8460b389b8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4109310
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com>
Commit-Queue: Kyle Piddington <kpiddington@apple.com>
|
|
5d1ac2e0
|
2023-01-17T10:21:01
|
|
Add missing include to ShaderVars.h
Patch by mcatanza@redhat.com
Bug: angleproject:7963
Change-Id: I1466ab227ae4e8b5703bd68bafbf12c31d441c2e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4174172
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
e58e77f5
|
2022-11-10T12:49:03
|
|
Support timestamp behind flag enableTimestampQueries
All timestamp queries happen in the same disjoint query in one
Context11.
The whole design is that we start a disjoint query in D3D11 at the first
timestamp request and keep it continuously running in current context.
Only end it and read it back when the user queries if there is a
disjoint. We cache the frequency and assume it doesn't change. For the
first timestamp, we create a temporary D3D disjoint query and end it so
we have a frequency to convert the ticks to nanoseconds.
This task is taken over from
https://chromium-review.googlesource.com/c/angle/angle/+/3694732
Bug: angleproject:7367
Change-Id: I747c9b00e10ac58362df66332efd01a24aa395f2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4021139
Commit-Queue: Jiajia Qin <jiajia.qin@intel.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
067ace47
|
2022-12-21T00:00:00
|
|
Add ANGLE_clip_cull_distance extension
Added an extension spec.
Trivially exposed it on GL, Vulkan, and D3D11.
Adjusted tests and validation to allow no cull
distance support for this extension string.
Removed extra built-in variable definitions.
Bug: angleproject:7904
Change-Id: Ic60772dfe28132c316eaa29aadc1afd66e3b0fa7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4114290
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
301ed545
|
2022-12-20T20:16:22
|
|
Vulkan: Pass context to layout getters
In preparation for a change that optionally uses read/write
depth/stencil layouts. Context is used to test for the
supportsMixedReadWriteDepthStencilLayouts feature to know whether those
layouts are supported or that a fallback must be chosen.
Bug: angleproject:7899
Bug: b/192477489
Change-Id: I1453dc9d060453a3806ad0f261b94368fe01fb29
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4116735
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
91a5635a
|
2022-12-16T00:00:00
|
|
Support arbitrary clip and cull distance array sizes
Removed limitSimultaneousClipAndCullDistanceUsage cap.
Enhanced HLSL translator to support all valid combinations
of clip and cull distances.
Validate that these arrays are sized explicitly or by using
only constant indices; adjusted link program error message.
Enhanced tests to cover all possible combinations of
implicit and explicit array sizes for both built-ins.
Bug: angleproject:4452
Change-Id: I704db6dc3c8951e5ba482a3e4dad09e5b0182f9c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4111645
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
28e7adca
|
2022-12-09T00:00:00
|
|
GL: Implement clip distance state emulation
Pass the current set of enabled clip distances
to vertex shaders via an internal uniform and
dynamically set disabled elements to zero.
Bug: angleproject:7880
Change-Id: I709d31dc7ca0606decf49adf674460a941837683
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4094314
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
cd540095
|
2022-12-12T13:13:14
|
|
Vulkan: Add memory log at allocation error
* Added logging memory allocation information in handleError() in the
event of an error from ANGLE_VK_TRY.
* Used for the handleError() in ContextVk.
* Updated the name and message of the function to log allocations.
* checkForCurrentMemoryAllocations()
* Added logging memory heap stats, including budget and usage.
* logMemoryHeapStats()
* In the renderer, added the feature flag indicating whether the
platform supports the memory budget extension.
* Uses VK_EXT_memory_budget.
* Added the enum class MemoryLogSeverity, which is used to select
the severity level of the memory log.
* Added logging pending memory allocation information.
* logPendingMemoryAllocation()
* If the last unsuccessful memory allocation was unsuccessful, its
information will be added to the log.
Bug: b/262029018
Change-Id: I97343c1553936aed23d763f3e0c00d495f9ee810
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4089531
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Kaiyi Li <kaiyili@google.com>
|
|
ea36cf1c
|
2022-12-19T09:55:45
|
|
Vulkan: Feature for VK_EXT_rasterization_order_attachment_access
This change just adds the feature. A follow up change will actually
start using the extension.
Bug: angleproject:7899
Bug: b/192477489
Change-Id: I19c078ebe57a7819b3aa3e95d4436cefa34ba85b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4113912
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
be9e8e7b
|
2022-12-14T14:13:39
|
|
Add EGL_ANGLE_wait_until_work_scheduled extension
We're changing eglReleaseTexImage so it calls
flushCommandBuffer(mtl::NoWait) instead of
flushCommandBuffer(mtl::WaitUntilScheduled)
and then adding an extension to allow us to
WaitUntilScheduled.
This is because Chrome calls eglReleaseTexImage for
every canvas and having it WaitUntilScheduled per call
is very slow. So instead we'll call eglWaitUntilWorkScheduledANGLE
once which will effectively wait just once.
Bug: angleproject:7890
Change-Id: I87bc9f9a1a7f4a0f99d93736cc3083799e76afeb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4109311
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Gregg Tavares <gman@chromium.org>
|
|
77c95de4
|
2022-11-16T21:12:28
|
|
Vulkan: Threaded monolithic pipeline creation
With this change, once a pipeline is created out of libraries, a task is
scheduled (if necessary) to asynchronously create a corresponding
monolithic pipeline. Once the task is complete, the linked pipeline
handle is replaced by the monolithic one, gaining back any performance
that might have been lost due to the use of libraries.
Bug: angleproject:7369
Change-Id: I525fb1e09f8bedc61b9dbef19f9cce7026ff9c53
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4031151
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
db9ffea3
|
2022-12-08T22:08:51
|
|
Vulkan: Remove the unused shadowBuffer feature
Bug: angleproject:4339
Change-Id: I4f4524ba597af25bd6da3792bd7a85ae1b52962e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4089448
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
eb1a13d8
|
2022-12-06T21:56:42
|
|
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 <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
9bd9c1c2
|
2022-11-03T11:49:33
|
|
Workaround for AMD [[raster_order_group()]] bug
Metal [[raster_order_group()]] does not work for read_write textures on
AMD when the render pass doesn't have a color attachment on slot 0. To
work around this we attach one of the PLS textures to
GL_COLOR_ATTACHMENT0, if there isn't one already.
Bug: angleproject:7792
Bug: angleproject:7803
Bug: angleproject:7818
Change-Id: I7567ed28ed30c7e3ca23dc52778ed90f2fdff965
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4004529
Reviewed-by: Kyle Piddington <kpiddington@apple.com>
Commit-Queue: Chris Dalton <chris@rive.app>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
8ee1b89f
|
2022-11-04T13:10:37
|
|
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 <syoussefi@chromium.org>
Commit-Queue: Chris Dalton <chris@rive.app>
|
|
a4db9477
|
2022-10-06T10:35:39
|
|
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 <kbr@chromium.org>
Reviewed-by: Quyen Le <lehoangquyen@chromium.org>
Commit-Queue: Chris Dalton <chris@rive.app>
Reviewed-by: Kyle Piddington <kpiddington@apple.com>
|
|
fa37af38
|
2022-07-12T22:47:22
|
|
Translator: Support SSO's built-in redeclaration
EXT_separate_shader_objects requires that gl_Position and gl_PointSize
be redeclared in the vertex shader. This is not adopted by GLES3.2, but
is nevertheless required to be supported if the shader enables this
extension explicitly.
Bug: angleproject:6590
Change-Id: I3428851ff9f00fb63573e4322bb62fe04bf0a095
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3757918
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
1434697f
|
2022-11-23T14:47:38
|
|
Add a vk feature flag to only enable precision match fixer on IMG
According to
https://gitlab.khronos.org/vulkan/vulkan/-/merge_requests/5273,
RelaxedPrecision does not need to match in the interface matching
rules. However, removing the precision match is causing triangle
clipping issues on IMG hardware. This change adds a feature
flag to only run the code path that applies precision match in
SpirV if the hardware is IMG.
This is a follow-up change to https://crrev.com/c/4049421.
Instead of adding back the code path that handles varying
precision mismatch for every hardware, only enabling the code
path if the vendor is IMG.
Test:
On Pixel6:
$ adb shell setprop debug.angle.feature_overrides_enabled
varyingsRequireMatchingPrecisionInSpirv
$ out/AndroidDebug/angle_end2end_tests
--gtest_filter="GLSLTest_ES3.MismatchPrecision*" --verbose
Bug: angleproject:7488
Change-Id: Ia0155f14d523195df2f47b852ed6642918270e2a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4054100
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
27727e50
|
2022-11-21T00:00:00
|
|
Fix ProvokingVertex typos
Aligned the parameter name with the upstream specs
Moved ValidateProvokingVertexANGLE to validationESEXT.cpp
Bug: angleproject:2829
Change-Id: I820a90c20ef0a1873640c933b1de52526cac7e70
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4043701
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
68b47e58
|
2022-11-16T10:46:59
|
|
Vulkan: Initial support for VK_EXT_graphics_pipeline_library
When available, this change uses VK_EXT_graphics_pipeline_library to
create pipelines. Currently, it is only used when
graphicsPipelineLibraryFastLinking is available. This restricts the use
of this extension to devices where monolithic pipelines are not any more
performant than linked libraries.
A future change adds support for other implementations by providing
async pipeline creation.
Bug: angleproject:7369
Change-Id: I1e3b7ac4aa56e75c7d6f4d0d5ea91cb0b862e581
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4031489
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Steven Noonan <steven@valvesoftware.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
70cf2322
|
2022-11-16T10:25:07
|
|
Vulkan: Move async pipeline cache sync feature to backend
Bug: b/246683126
Change-Id: I194e488e04580cee7055c0674091f1228984edf9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4031486
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Solti Ho <solti@google.com>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
44d8fef8
|
2022-11-01T00:00:00
|
|
Add ANGLE_provoking_vertex spec
Renamed provoking vertex enums to use _ANGLE suffix.
The newly defined enums alias those from the
desktop OpenGL extensions.
Updated tests to use the new enum names.
Bug: angleproject:2829
Change-Id: I72b686773536d3d54a653114cee5292007510a55
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4013700
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
9c019cb3
|
2022-11-08T13:29:08
|
|
Vulkan: Features for graphics pipeline library
Bug: angleproject:7369
Change-Id: I561cc095dcf2d4c71d24de8a6ca08d45567ad937
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4014519
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
78e28cb8
|
2022-11-03T11:05:48
|
|
Vulkan: Remove glslang fallback
ANGLE's SPIR-V generator is battle tested by now.
Bug: angleproject:6210
Change-Id: I2ed88642e3ede435e3f906fbd701133be6873fb7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4002868
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
5b218196
|
2022-11-06T11:39:23
|
|
Metal: Remove compilation through SPIR-V
Direct metal generation is stable.
Bug: angleproject:6081
Change-Id: If9e76f61ad38f2fc9963f0181dfd03c99ffa3e2b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4003675
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
9bda9a79
|
2022-10-22T22:05:11
|
|
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 <chris@rive.app>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
3605b399
|
2022-10-20T17:00:02
|
|
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 <chris@rive.app>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
3226cce3
|
2022-11-02T16:02:46
|
|
Update EGL_ANGLE_metal_shared_event_sync implementation.
Rename the extension's .txt file to match the current name of the
extension.
Update function signatures to take EGLSync rather than EGLSyncKHR. The
two types are conceptually incompatible. This extension requires the
use of eglCreateSync rather than eglCreateSyncKHR because the latter
takes an array of EGLInt, but EGLAttrib is needed to express pointers
(to MTLSharedEvents) in the attribute list.
Revise ContextMtl::flush to use WaitUntilScheduled on older operating
systems not supporting MTLSharedEvent.
Bug: angleproject:7809
Change-Id: I39197616dc3e1e7ec6dc68dd83b4fde05184debf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4000941
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
|
|
5e95a4d9
|
2022-10-07T00:52:38
|
|
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 <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
1b88c41f
|
2022-10-31T10:58:09
|
|
Vulkan: Remove the disableFifoPresentMode feature
Workaround was added for old Intel bots, no longer applicable.
Bug: angleproject:3153
Change-Id: Ib248927fbb1be33d8bd89a0c8185761f7f1ed6fa
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3993361
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
9f693aa3
|
2022-10-22T14:45:59
|
|
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 <kbr@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Chris Dalton <chris@rive.app>
|
|
805e00b8
|
2022-10-27T00:00:00
|
|
D3D11: Add clip and cull distance support
Added gl_ClipDistance and gl_CullDistance
support to HLSL translator.
Added enabled clip distance GL state emulation.
Added limitSimultaneousClipAndCullDistanceUsage
limitation.
Expanded and optimized related end2end tests.
Bug: angleproject:4452
Change-Id: Id66312505254ceff43d5258d486ddcdb0462db47
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3990944
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
81a244de
|
2022-10-10T15:32:25
|
|
Adding a class to perform ASTC texture decompression on the CPU
This significantly improves performance by caching and re-using the ASTC
decoder context, and using multi-threaded decompression.
This code was originally written for gfxstream.
Bug: b/250688943
Change-Id: I1727447907f2e25cf9b854ffcc9ccfc04db2fb91
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3929008
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
53fd00c5
|
2022-10-10T21:00:02
|
|
Add missing function prototypes to ANGLE ext headers.
Bug: angleproject:7752
Change-Id: I316e181c61fe1daf3611c58b4db0321678d9eba2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3963365
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
fec93f40
|
2022-10-14T00:00:00
|
|
GL: Support clip and cull distance extensions
Use EXT_clip_cull_distance on OpenGL ES to expose
APPLE_clip_distance; use ARB_cull_distance on OpenGL
to expose EXT_clip_cull_distance.
Added disableClipCullDistance OpenGL workaround.
Bug: angleproject:4452
Change-Id: I458cad29c10b9d9193c5233e24bac53361ba104e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3956075
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
968041b5
|
2022-08-19T12:11:23
|
|
Metal: Optimized BufferSubData per device
Adds a staging buffer path which means there are 4 paths
for bufferSubData.
1. direct copy
* get a pointer to the buffer
* copy the new data to the buffer
* if the buffer is managed, tell metal which part was updated
2. use a shadow copy
* copy the data to a shadow copy
* copy the entire shadow to a new buffer
* start using the new buffer
3. use a new buffer
* get a new buffer (or unused)
* put the new data in the new buffer
* blit any unchanged data from the old buffer to the new buffer
* start using the new buffer
4. use a staging buffer
* get a staging buffer
* put the new data in the staging buffer
* blit from the staging buffer to the existing buffer.
Further, there are 3 types of memory storage modes.
Managed, Staged, Private.
Based on the GPU type different storage modes and different
paths in different sitatutions are more performant.
So, add feature flags to select paths by GPU.
Bug: angleproject:7544
Change-Id: I741dd1874201043416374194bd2001ded8dbd9b4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3842641
Reviewed-by: Kyle Piddington <kpiddington@apple.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Quyen Le <lehoangquyen@chromium.org>
Commit-Queue: Gregg Tavares <gman@chromium.org>
|
|
e8f9355c
|
2022-10-13T16:51:32
|
|
Vulkan: Add forceWaitForSubmissionToCompleteForQueryResult flag
Add forceWaitForSubmissionToCompleteForQueryResult feature flag and
enable it for ARM.
Also force host wait if async submission is enabled.
Bug: b/253522366
Change-Id: Ie2d7373930f1a2b3fc761d2f8d2df8fa84983c54
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3954044
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
76f377c5
|
2022-06-17T16:05:16
|
|
Vulkan: Break renderpass when switch from query to non-query
getQueryResult will wait for query result to be available, which means a
potential CPU bubble if the result is not yet available. On tiler GPUs
it will at least wait for renderpass to complete. Usually query enabled
draws are very tiny (usually just draw a point to see if it is occluded
or not), and query disabled draws are expensive. Some apps do issue a
glFlush when switch from query draw to non-query draw, but app like
dead_by_daylight does not issue such flush. In order to reduce the
bubble, this CL ends renderpass and issue a flush when we switch from
query enabled draws to non-query enabled draw so that the result will be
available much earlier, this reduce the CPU bubble. This result in
dead_by_daylight frame time improves from 5.45ms to 3.5ms (35%
improvement).
Bug: b/250706693
Change-Id: Ia3a32a9fb336e6f256809b3cad83f61a45415fb1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3931739
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Charlie Lao <cclao@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
b3b855d2
|
2022-10-09T21:39:16
|
|
Vulkan: Features for two exts
- VK_EXT_graphics_pipeline_library
- VK_EXT_pipeline_protected_access
Bug: angleproject:7369
Bug: angleproject:7714
Change-Id: I42b5b5a2758b32625dc12352d521cfa1dff1aa90
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3939919
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
2d31fe98
|
2022-09-22T21:04:22
|
|
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 <kbr@chromium.org>
Commit-Queue: Chris Dalton <chris@rive.app>
Reviewed-by: Gregg Tavares <gman@chromium.org>
|
|
a7dc51f2
|
2022-10-01T08:49:11
|
|
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 <syoussefi@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Chris Dalton <chris@rive.app>
|
|
836cc5e2
|
2022-09-09T22:06:22
|
|
Vulkan: add etc to bc compute transcoding.
use compute shader to transcode etc format to bc format.
Bug: b/243398683
Change-Id: Idbd0820a2df8d92fe690055dae2933bc559e9bfd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3888501
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Hailin Zhang <hailinzhang@google.com>
|
|
a81679bc
|
2022-09-26T23:56:34
|
|
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 <chris@rive.app>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
bf22843c
|
2022-09-22T16:58:37
|
|
EGL: Update EGL headers
In order to implement EGL_EXT_device_drm_render_node
Bug: angleproject:7686
Change-Id: If9b0e2852a816071bad79c103f1e291dd43eb45c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3913209
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Robert Mader <robert.mader@collabora.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
01285f16
|
2022-09-26T23:19:28
|
|
Remove Platform.h
Overloaded name. Causing trouble with gles1's platform.h on
case-insensitive file systems despite the different case.
Bug: angleproject:3408
Change-Id: Icc1644a4c6a9c9076a2bbafbfb1d6eac578b731a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3920895
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
163e56e4
|
2022-09-20T00:40:55
|
|
Allow feature overrides to end in * (wildcard)
Makes it easier to apply overrides to features with long names. Also
works around Android's limit of 92 characters for debug properties.
Bug: b/238024366
Change-Id: I8f417287f92b2439de1a7b7d6abbaf9e61b405e8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3906222
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
|
|
25bad36c
|
2022-09-23T13:23:57
|
|
Metal: Remove unpackLastRowSeparatelyForPaddingInclusion
This speculative fix did not work.
Bug: angleproject:7573
Change-Id: I345db1746f8725d82420aabffb37c8dd01230a34
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3915182
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Gregg Tavares <gman@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
70e5e90f
|
2022-09-23T13:17:34
|
|
Metal: Avoid locking IOSurfaces in glReadPixels on AMD.
The AMD driver tends to crash when locking IOSurfaces. Avoid this by
using the copyIOSurfaceToNonIOSurfaceForReadOptimization feature to do
a texture-texture copy before reading back data to the CPU.
This is a *speculative* fix due to seeing crashes in the
ClientLockIOSurface function in the AMD driver.
Bug: angleproject:7573
Change-Id: Ia120f2a96eed65431b5f8a99cf1da7d7e85da639
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3915181
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Gregg Tavares <gman@chromium.org>
|
|
2aa52da7
|
2022-09-23T13:15:44
|
|
Metal: Upload IOSurface data with staging buffers on AMD
Crashes have been seen in the AMD driver when locking IOSurfaces. Avoid
this by always using a staging buffer and doing a GPU-GPU copy for
uploading client side data to IOSurfaces.
Bug: angleproject:7573
Change-Id: I4d981a24554a755a7248199699b486d98cbad83d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3915180
Commit-Queue: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Gregg Tavares <gman@chromium.org>
|
|
d2a58f00
|
2022-09-08T14:19:21
|
|
EGL: Implement eglCopyMetalSharedEventANGLE
Add eglCopyMetalSharedEventANGLE function to the
ANGLE_metal_shared_event_sync extension. This brings the extension on
par with the EGL_ANDROID_native_fence_sync extension.
eglCopyMetalSharedEventANGLE allows for copying the Metal event object
from EGLSync objects implemented by the ANGLE Metal renderer. This
function follows Objective-C convention for "copy" methods and increases
the retain count of the Metal event object. The EGL API user is thus
responsible for ensuring to release the returned object to avoid memory
leaks.
Test: angle_end2end_tests --gtest_filter=EGLSyncTestMetalSharedEvent.*
Bug: angleproject:7561
Change-Id: I8c35b559014b85cb8c6a0e76ac2ab7891eed5da0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3881423
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Quyen Le <lehoangquyen@chromium.org>
|
|
a89f678f
|
2022-06-16T13:59:16
|
|
EGL: Implement ANGLE_metal_shared_event_sync on metal
Implement creation of fence sync object taking an external
MTLSharedEvent and optional value to use when signaling completion of
prior commands.
Extended end2end test suite with metal shared event test cases.
Test: angle_end2end_tests --gtest_filter=EGLSyncTestMetalSharedEvent.*
Bug: angleproject:7561
Change-Id: I0e72b5417275a20a24e535670ceb995ecc87abcb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3865060
Reviewed-by: Quyen Le <lehoangquyen@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
|
|
ba3b4515
|
2022-09-15T01:06:51
|
|
Vulkan: Implement GL_ANGLE_logic_op
Enabled if the logicOp device feature is available. According to
gpuinfo, it's pretty much universal except for ARM.
Bug: angleproject:7654
Change-Id: I4808b519fdd6273b2f8c1bb17f59517eb65bfe8d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3898317
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
de73f7cd
|
2022-09-14T22:27:28
|
|
Introduce GL_ANGLE_logic_op
This extension exposes the desktop GL glLogicOp function as a GLES
extension. This is supported by Vulkan through the logicOp feature as
well.
The goal is to directly use this extension in GLES1 emulation where the
backend supports it, avoiding a more costly fallback.
Bug: angleproject:3862
Change-Id: I7ed436cdf401437157ca9724168849b4c819b91b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3898310
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
493bab09
|
2022-09-15T14:20:41
|
|
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 <chris@rive.app>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
a8a04ce1
|
2022-08-16T17:59:20
|
|
Vulkan: Add supportsPresentation feature
Some platforms do not support presentation through any Vulkan queue. In
this case we should not transition the color image layout to present.
Bug: angleproject:7217
Change-Id: I71cad0e52bc1fdb531de5a34e917a1862a4cf070
Signed-off-by: Antonio Caggiano <antonio.caggiano@collabora.com>
Suggested-by: Sungyong Choi <sywow.choi@samsung.com>
Suggested-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3853598
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
04f46f39
|
2022-09-12T10:15:16
|
|
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 <chris@rive.app>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Bug: angleproject:7279
Change-Id: I02f42c1cfc685ed95164744108e0c185d3a7fefb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3900491
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Chris Dalton <chris@rive.app>
|
|
8c45e3c4
|
2022-09-15T01:07:47
|
|
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 <chris@rive.app>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Bug: angleproject:7279
Change-Id: Ic9a232f9d722b42e615de3827ce118616f3acc71
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3897425
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Chris Dalton <chris@rive.app>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Chris Dalton <chris@rive.app>
|
|
8208e8a2
|
2022-09-12T10:15:16
|
|
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 <chris@rive.app>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
09446a6b
|
2022-09-02T11:29:32
|
|
Metal: Upload the last texture row separately on AMD.
Speculative fix for crashes seen when uploading texture data on AMD.
Port of the unpackLastRowSeparatelyForPaddingInclusion workaround from
the GL backend.
Currently constrained to client data 2D uploads to non-compressed
textures.
Bug: angleproject:7573
Change-Id: Idd036b92619d309e5b2a8062043e8644f4d5b2e0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3870655
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Gregg Tavares <gman@chromium.org>
|
|
662226a3
|
2022-09-06T14:12:26
|
|
Metal: Preemptively Start Provoking Vertex CmdBuffer on AMD
There seems to be a bug in older AMD drivers and this appears
to work around it
Bug: angleproject:7635
Change-Id: I1b22e4b7d5d1ce0d405e422d08d33eeeb731050a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3877666
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
|
|
9aeb6311
|
2022-08-29T10:50:01
|
|
Revert "Extra buffer logging/checking on Android Cuttlefish"
This reverts commit 5cb05e0482ed1a2c4048f76c1a7fd444849410d8.
The root cause was found, and this extra logging/checking is no longer
needed.
Bug: b/236098131
Bug: b/245339714
Change-Id: Ibefbeec30be974788789650f2dc86696a6eba11a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3862408
Auto-Submit: Ian Elliott <ianelliott@google.com>
Reviewed-by: Jason Macnak <natsu@google.com>
Commit-Queue: Jason Macnak <natsu@google.com>
|
|
d0fad24c
|
2022-08-30T23:24:06
|
|
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 <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
ba4b6913
|
2022-08-23T09:34:27
|
|
Fix data race in BlobCache
* Re-enable shader cache feature
* Improve BlobCache thread-safety test
* Improve EGLProgramCacheControlTest to not check the size
of the BlobCache, since the shader cache interferes with this.
* Include the arguments to ConstructCompiler() and Compile()
in the key hash for the shader cache.
Bug: angleproject:7036
Change-Id: Ied4e11f9160552f2f9358d99b5656315239ba856
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3851161
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Eddie Hatfield <eddiehatfield@google.com>
|
|
9d41585e
|
2022-08-12T14:20:34
|
|
Make PLS coherent on D3D 11.3
Adds a new internal memory qualifier to the compiler called
"rasterOrdered", which we set in RewritePixelLocalStorage.cpp when D3D
11.3 Rasterizer Order Views are supported. The HLSL translator then
generates RasterizerOrderedTexture2D<> instead of RWTexture2D<> when
this qualifier is set.
Bug: angleproject:7279
Change-Id: I39b8c3279b7bff93b7e57272e8fb84d9c0312616
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3830288
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Chris Dalton <chris@rive.app>
|