|
25390156
|
2025-08-21T00:13:19
|
|
Suppress unsafe buffers on a file-by-file basis in src/ [1 of N]
In this CL, we suppress many files but stop short of actually
enabling the warning by not removing the line from the
unsafe_buffers_paths.txt file. That will happen in a follow-on
CL, along with resolving any stragglers missed here.
This is mostly a manual change so as to familiarize myself with
the kinds of issues faced by the Angle codebase when applying buffer
safety warnings.
-- Re-generate affected hashes.
-- Clang-format applied to all changed files.
-- Add a few missing .reserve() calls to vectors as noticed.
-- Fix some mismatches between file names and header comments.
-- Be more consistent with header comment format (blank lines and
trailing //-only lines when a filename comment adjoins license
boilerplate).
Bug: b/436880895
Change-Id: I3bde5cc2059acbe8345057289214f1a26f1c34aa
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6869022
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
25f5e2cf
|
2025-08-13T17:03:19
|
|
Vulkan: Add support for built-in gl_PrimitiveShadingRateEXT
Add support for built-in gl_PrimitiveShadingRateEXT and relative const
value.
Bug: angleproject:397255625
Change-Id: I25d51f5805697e137b232175ee790808c45850b7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6845515
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
b7582680
|
2025-02-24T18:04:32
|
|
Reland: GL: Allow untranslated shaders to pass through on GLES
Add an EGL extension EGL_ANGLE_create_context_passthrough_shaders which
uses the NULL translator and passes the original shader to the driver.
The parser is still used for shader reflection.
Always enable the null compiler backend. It has almost no binary size
cost and is now potentially used when the null ANGLE backend is not
enabled.
Bug: angleproject:398857482
Change-Id: Id528189ccbbacb1c444eacb151baadfda9fcc04b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6488609
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
251ffe62
|
2025-07-15T17:37:30
|
|
Vulkan: Add support for built-in gl_ShadingRateEXT
Add support for built-in gl_ShadingRateEXT of
GL_EXT_fragment_shading_rate
Bug: angleproject:420310117
Change-Id: Ie11b139a0371b5995f1533a85e02c590cd36109c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6733750
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
5dd05578
|
2025-04-14T07:34:57
|
|
Revert "GL: Allow untranslated shaders to pass through on GLES"
This reverts commit 4e77552b86a89b449ada6d6c18f84285f5812b1d.
Reason for revert: breaks ChromeOS and fuzzers
Bug: angleproject:398857482
Original change's description:
> GL: Allow untranslated shaders to pass through on GLES
>
> Add an EGL extension EGL_ANGLE_create_context_passthrough_shaders which
> uses the NULL translator and passes the original shader to the driver.
> The parser is still used for shader reflection.
>
> Bug: angleproject:398857482
> Change-Id: I7c5fcc318c7e11931f78c08dcbf4764bf77d397d
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6297527
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Bug: angleproject:398857482, angleproject:410423936
Bug: chromium:410114655, chromium:410100607, chromium:410121218
Bug: chromium:410052365, chromium:410290507, chromium:410178288
No-Presubmit: true
Change-Id: I45b01960637a1cda05d21a7df6d07465f6a8f5e9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6448984
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Auto-Submit: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
4e77552b
|
2025-02-24T18:04:32
|
|
GL: Allow untranslated shaders to pass through on GLES
Add an EGL extension EGL_ANGLE_create_context_passthrough_shaders which
uses the NULL translator and passes the original shader to the driver.
The parser is still used for shader reflection.
Bug: angleproject:398857482
Change-Id: I7c5fcc318c7e11931f78c08dcbf4764bf77d397d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6297527
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
a05a0e15
|
2024-09-25T22:33:36
|
|
Validate PLS shaders against context state
Add shader introspection for PLS uniforms and validate that they match
context state during draw calls.
Bug: angleproject:40096838
Change-Id: I76cdf8add03de8f8b0b3e772c15c0087c1d97e98
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5893962
Commit-Queue: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
ab1cdd22
|
2024-10-03T00:00:00
|
|
Translator: Support EXT_texture_query_lod
No backend support yet.
Bug: angleproject:368275901
Change-Id: I10bbc03feca485908315633cbc0f955e82994657
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5920240
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
ae5c3b96
|
2024-10-08T17:02:21
|
|
Boilerplate for GL_ARM_shader_framebuffer_fetch_depth_stencil
Bug: angleproject:352364582
Change-Id: I94c670db5546564a6f60bb513a6d7f3f5bd5778c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5916771
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
b98e6bc0
|
2024-09-12T00:00:00
|
|
Translator: Add EXT_texture_shadow_lod functions
Added translator support for functions defined
in the GL_EXT_texture_shadow_lod extension.
Trivially enabled on GL and Vulkan backends.
Bug: angleproject:365066518
Bug: angleproject:365108862
Change-Id: Ie1fc8f50e321a559d4506c479d9cebbb48802091
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5867416
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
ebb56cee
|
2024-05-31T15:10:37
|
|
Implement OES_tessellation_shader
Based on the specs, there are no functional differences between
OES and EXT.
* Added validation for glPatchParameteriOES() and the core
glPatchParameteri().
* Added the extension support for GLSL.
* EXT_shader_io_blocks is implicitly enabled for the EXT geometry
and tessellation shader extensions.
* OES_shader_io_blocks is implicitly enabled for the OES versions
of said extensions.
* Added a test to make sure using this extension works instead of EXT.
* Turned the repeated test code into a function:
* testTessellationTextureBufferAccess
* Skipped the tests that fail on various platforms.
* It seems that these tests were being skipped before enabling
this extension ("Not supported").
Bug: b/344030760
Bug: angleproject:345306326
Bug: angleproject:345304850
Bug: angleproject:345312771
Change-Id: I905da0132bf6525cb453dcaa613e4deb3155c4dd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5595611
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
25374c90
|
2024-05-31T16:08:58
|
|
Implement OES_gpu_shader5
Based on the specs, there is no difference between the OES version
and the EXT version.
* Added support for use in shaders
* Added test to make sure the OES extension works.
* Turned the repeated test code into a function:
* testArrayOfArrayOfSamplerDynamicIndex()
Bug: b/344031022
Change-Id: Ifda4fa5495983d254f598940a95d0797e8a9ce67
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5595609
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
2ecfc5a1
|
2024-05-03T18:29:12
|
|
Issue 8644: Deeply nested iterator declarations can crash
Avoid stack overflow crash when parsing nested iterators (especially
`while` statements).
Limits the number of nested iterator statements to `mMaxStatementDepth`
(defaults to 256).
Bug: angleproject:8644
Change-Id: I9b0fd2ab456c3cdd731b41ab97f495ae4dc0b0bb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5519169
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com>
Auto-Submit: Scott M <mscott@apple.com>
|
|
175514c6
|
2024-01-12T14:43:33
|
|
Translator: Bundle metadata flags coming out of the translator
In preparation for a follow up change that adds more such metadata.
Bundling them together makes it convenient to retrieve, save and load
all those flags.
Bug: b/320563594
Change-Id: I4f95b32acfb0842cc5d9e72c1788a827bee2c760
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5209450
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
0510fb49
|
2023-09-11T18:11:50
|
|
[code health] Use more standard enumerator names
Use more standard enumerator names in ANGLE
https://google.github.io/styleguide/cppguide.html#Enumerator_Names
There are still some non-standard enumerator names in the //cc
directory, which will be modified in subsequent patches.
Bug: chromium:1480233
Change-Id: I96d534f0eb74a8583237c754f6ef867bd1b33d4a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4853030
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Ho Cheung <uioptt24@gmail.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
9b63700b
|
2023-07-11T10:25:40
|
|
Translator: Reorganize files
This change makes the translator files more organized by:
- Grouping files that are specific to a certain output under their own
directory,
- Moving transformations under tree_ops
- Removing Direct from metal translation now that that SPIR-V Cross path
is removed
Bug: angleproject:6394
Change-Id: Iaf5bb8d5604b84748dece029821b1f77b2813967
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4678780
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
24f4007b
|
2023-06-08T00:41:55
|
|
Vulkan: Use SPIR-V ids instead of names in the transformer
This change removes the SPIR-V transformer's reliance on type and
variable names. As a result:
- String hashing is removed from the info map data structure and the
SPIR-V transformer
- The ID discovery class is entirely removed
- Internal variable names have become a detail of the compiler alone
(and are no longer exposed as part of the compiler interface)
- Some front-end name tracking is removed ("parentStructMappedName",
etc)
This change also properly cleans up xfb emulation types that were
previously left over.
This change allows the SPIR-V compiler to emit user strings as-is
instead of prefixing them with `u_` leading to more readable debug
shaders. Additionally, it will make it possible not to emit debug info
at all. Both of these changes will be done in follow ups.
Bug: angleproject:7220
Change-Id: Iaa127496209a27aaae2e0d14c41b22fffb0b72a2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4600610
Reviewed-by: Roman Lavrov <romanl@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
76b0e7f3
|
2023-06-01T11:25:54
|
|
Vulkan: Use reserved SPIR-V ids for internal variables
With this change, the SPIR-V transformer does not need to discover these
ids through name matching. Ultimately, user variables would also be
identified by their SPIR-V ids (instead of name), removing the Vulkan
backend's reliance on strings.
Bug: angleproject:7220
Change-Id: I241c3247b89a28f9eed28f23c06b7c8b7fbbeaa0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4583133
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
4ff41604
|
2023-05-31T11:12:33
|
|
Vulkan: Declare common SPIR-V ids in the compiler
The SPIR-V transformer no longer needs to discover these ids.
Bug: angleproject:7220
Change-Id: I7082e831308eaac97ace3c128f398ff5f5497739
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4573825
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
493b5aff
|
2022-08-09T14:57:24
|
|
Vulkan: Workaround ARM bug with stencil write mask
Bug: angleproject:7556
Change-Id: I0aa17c178071cc15d8ee15f700b0c4932819c72a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3821367
Reviewed-by: Ian Elliott <ianelliott@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
6f80f0f0
|
2022-08-06T02:29:19
|
|
Translator: Clean up the compile flag passing interface
Historically, compile flags were sent to the translator as a bitmask.
Recently, we were getting close to running out of bits. Additionally,
direct-to-metal work had started to introduce constants to be passed to
the translator, which were misplaced in ShBuiltInResources and Caps.
Recent work on Pixel Local Storage adds even more constants, aggravating
the situation.
In this change, the interface to passing compile flags is reworked. A
struct is passed (instead of a bitmask) that has one bit for each flag.
This can be indefinitely extended. Additionally, the constants needed
by metal and PLS are also placed in this struct. In turn, the backends
can set these options directly, and don't have to hack them into Caps to
further get hacked into ShBuiltInResources.
Bug: angleproject:7559
Change-Id: If93f1e1b8818ad3a0ac708ab04ab93b4b397d114
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3812562
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
15cc0013
|
2022-07-14T23:32:05
|
|
Add a GL_ANGLE_shader_pixel_local_storage extension
Plumbs through "GL_ANGLE_shader_pixel_local_storage" and
"GL_ANGLE_shader_pixel_local_storage_coherent" extension strings
advertised by ANGLE and stubs out an initial spec document. This change
doesn't add any new procedures or shader constructs, but it does allow
the PLS tests to start checking for the real extension strings and
requiring the GL_ANGLE_shader_pixel_local_storage extension.
Bug: angleproject:7279
Change-Id: I36877fe4117185a2121f803288123cd69a447cf3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3739590
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Chris Dalton <chris@rive.app>
|
|
3b988fef
|
2022-06-01T10:54:03
|
|
Vulkan: Remove enableLineRasterEmulation
* Removed the Bresenham line raster emulation specialization
constant, along with related variables and functions.
Bug: angleproject:7366
Change-Id: If17c8ce9b459ad801bae8e887e5674bd9a3ff2bf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3680860
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
ce3c0fe9
|
2022-06-06T12:09:45
|
|
Vulkan: Make depth-correction uniform controlled
This change makes sure SPIR-V transformations are not required for depth
correction, having the number of potential pipelines.
Bug: angleproject:5881
Change-Id: If3f66b34bdd1127ae588cbc822ea7cf01fa8621f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3691801
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
98c2e169
|
2022-05-20T16:17:49
|
|
Vulkan: Reduce pre-rotation spec const to bool
The specialization constant now only dictates whether x and y should be
swapped. The complete 8 possible states of rotation and y-flip are
achieved by using this swap in combination with a driver uniform for x
and y flip.
Swapping is still a specialization constant to avoid degrading
performance of dFdx/dFdy which otherwise would need both to be evaluated
instead of one. On platforms which don't support pre-rotation, the
specialization constant will never change and driver uniforms entirely
govern y-flip. On platforms that do support pre-rotation, only two
variations of the pipeline are needed.
Bug: angleproject:7366
Change-Id: I73f84e89fa9349d2098fa5b21573aee57d93a30c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3663151
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Lingfeng Yang <lfy@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
fea19567
|
2022-05-17T17:44:06
|
|
Vulkan: Remove removeEarlyFragmentTestsOpt flag
* Removed removeEarlyFragmentTestsOptimization and the related
SPIRV transformation and variables.
* Removed mUsesEarlyFragmentTestsOptimization.
* Removed SH_EARLY_FRAGMENT_TESTS_OPTIMIZATION.
* Merged updateUsesEarlyFragmentTestsOptimization() into
updateFragmentInoutRange().
Bug: angleproject:7347
Change-Id: I7299bd4e8ab5363e5cf06eb48419d4f469106e12
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3648217
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
5113ae8e
|
2022-04-29T22:42:59
|
|
Vulkan: Explicitly enable per-sample shading if `sample` used
The Vulkan spec is not explicit about the `Sample` decoration implicitly
enabling per-sample shading. While this is being corrected in the spec,
the ARM Vulkan driver does not have this implicit behavior.
A workaround is added such that the usage of the `sample` qualifier is
reported, and used to explicitly enable per-sample shading through the
API.
Bug: angleproject:6876
Change-Id: Idb8345aacdcfa45cb37fefcd30aa5405168d21e3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3615738
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
1e773db9
|
2022-02-22T10:51:15
|
|
Vulkan: Shader support for KHR_blend_equation_advanced
Translator can accept the layout qualifiers for the advanced blend
equation. No emulation code is currently generated, and ANGLE will
initially rely on the corresponding Vulkan extension.
Based on change by Brandon Schade <b.schade@samsung.com>
Bug: angleproject:3586
Test: angle_unittests --gtest_filter=*KHRBlendEquationAdvanced*
Change-Id: I3b728c5f144386d7030bbbb301ddb07daa1492b9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3481309
Reviewed-by: Brandon Schade <b.schade@samsung.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
f64f9546
|
2021-12-07T20:17:32
|
|
Reland "Decouple gl_BaseVertex/gl_BaseInstance uniforms"
This reverts commit 10e5f34d1439f0bcd5b30bea5bfbf6bdaafd4935.
Reason for revert: exonerated from flaky crash suspect
Original change's description:
> Revert "Decouple gl_BaseVertex/gl_BaseInstance uniforms"
>
> This reverts commit 36bf1ebe5e9500704dd235254bd22a1f2bbd7059.
>
> Reason for revert: suspect causing flaky crashes
>
> Bug: angleproject:6763
>
> Original change's description:
> > Decouple gl_BaseVertex/gl_BaseInstance uniforms
> >
> > These are builtin uniforms removed in
> > https://github.com/KhronosGroup/WebGL/pull/3278
> >
> > Decouple them from the original ANGLE_base_vertex_base_instance
> > extension.
> >
> > Make a new ANGLE_base_vertex_base_instance_shader_builtin
> > extension for these builtin uniforms.
> >
> > Bug: angleproject:3402
> > Change-Id: I77b93917976ce435db9c578c0ade37bff18a42b0
> > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3290304
> > Commit-Queue: Shrek Shao <shrekshao@google.com>
> > Reviewed-by: Geoff Lang <geofflang@chromium.org>
> > Reviewed-by: Kenneth Russell <kbr@chromium.org>
>
> Bug: angleproject:3402
> Change-Id: I75830baa14cf4e7c53750fd14ff76501145b4823
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3315610
> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
> Reviewed-by: Kenneth Russell <kbr@chromium.org>
> Commit-Queue: Shrek Shao <shrekshao@google.com>
Bug: angleproject:6763
Bug: angleproject:3402
Change-Id: Ie436dc5d55364e464897d407a53b793941cd5d0b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3321703
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
10e5f34d
|
2021-12-04T00:10:21
|
|
Revert "Decouple gl_BaseVertex/gl_BaseInstance uniforms"
This reverts commit 36bf1ebe5e9500704dd235254bd22a1f2bbd7059.
Reason for revert: suspect causing flaky crashes
Bug: angleproject:6763
Original change's description:
> Decouple gl_BaseVertex/gl_BaseInstance uniforms
>
> These are builtin uniforms removed in
> https://github.com/KhronosGroup/WebGL/pull/3278
>
> Decouple them from the original ANGLE_base_vertex_base_instance
> extension.
>
> Make a new ANGLE_base_vertex_base_instance_shader_builtin
> extension for these builtin uniforms.
>
> Bug: angleproject:3402
> Change-Id: I77b93917976ce435db9c578c0ade37bff18a42b0
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3290304
> Commit-Queue: Shrek Shao <shrekshao@google.com>
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
> Reviewed-by: Kenneth Russell <kbr@chromium.org>
Bug: angleproject:3402
Change-Id: I75830baa14cf4e7c53750fd14ff76501145b4823
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3315610
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Shrek Shao <shrekshao@google.com>
|
|
36bf1ebe
|
2021-11-17T13:31:17
|
|
Decouple gl_BaseVertex/gl_BaseInstance uniforms
These are builtin uniforms removed in
https://github.com/KhronosGroup/WebGL/pull/3278
Decouple them from the original ANGLE_base_vertex_base_instance
extension.
Make a new ANGLE_base_vertex_base_instance_shader_builtin
extension for these builtin uniforms.
Bug: angleproject:3402
Change-Id: I77b93917976ce435db9c578c0ade37bff18a42b0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3290304
Commit-Queue: Shrek Shao <shrekshao@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
8bb3c827
|
2021-07-22T19:06:40
|
|
Fix Multithreaded eglDestroyContext()/eglTerminate()
The following EGL calls can lead to a crash in eglMakeCurrent():
Thread A: eglMakeCurrent(context A)
Thread B: eglDestroyContext(context A)
B: eglTerminate() <<--- this release context A
Thread A: eglMakeCurrent(context B)
The eglMakeCurrent(context B) call will assert when attempting to
unMakeCurrent(), since thread A doesn't know that context A was already
destroyed by thread B.
To fix this:
1.) A Context will only be released once there are no Threads that
currently have a reference to it (no longer have the Context current).
- Context::mIsCurrent is being removed, since it was inaccurate and not
thread-safe. For example, when eglTerminate() was called, the
eglTerminate()'ing-Thread would "steal" the Context that was current on
another Thread to destroy it.
2.) A Display will only be fully terminated and its resources released
once all Contexts have been destroyed and are no longer current.
Otherwise, Display::terminate() will return if any Contexts are still in
use by a Thread.
EGL 1.5 Specification
3.2 Initialization
If contexts or surfaces, created with respect to dpy are current (see
section 3.7.3) to any thread, then they are not actually destroyed
while they remain current. If other resources created with respect to
dpy are in use by any current context or surface, then they are also
not destroyed until the corresponding context or surface is no longer
current.
With this fix, the app com.netmarble.sknightsmmo can start.
This also exposed an issue with GlslangFinalize(), since glslang can
only be initialized/finalized once per process. Otherwise, the
following EGL commands will call GlslangFinalize() without ever being
able to GlslangInitialize() again, leading to crashes since
GlslangFinalize() cleans up glslang for the entire process.
dpy1 = eglGetPlatformDisplay() |
eglInitialize(dpy1) | GlslangInitialize()
dpy2 = eglGetPlatformDisplay() |
eglInitialize(dpy2) | GlslangInitialize()
eglTerminate(dpy2) | GlslangFinalize()
eglInitialize(dpy1) | isInitialized() == true
Since Display::isInitialized() == true, the rest of
Display::initialize() is skipped and GlslangInitialize() is not called.
Later, the next test that attempts to compile a program will crash due
to glslang no longer being initialized.
Finally, this exposed the following tests leaking EGLContext handles:
- EGLSurfaceTest::initializeContext()
- EGLContextSharingTest.DisplayShareGroupContextCreation
- EGLCreateContextAttribsTest.IMGContextPriorityExtension
- EGLMultiContextTest.TestContextDestroySimple
Other tests were failing to reset the context, preventing the Display
from being terminated since there were still references to Contexts
owned by the display:
eglMakeCurrent(dpy, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
Bug: angleproject:6208
Bug: angleproject:6304
Bug: angleproject:6322
Test: EGLContextSharingTest.EglTerminateMultiThreaded
Test: EGLContextSharingTestNoFixture.EglDestoryContextManyTimesSameContext
Test: Load com.netmarble.sknightsmmo
Change-Id: I160922af93db6cabe0ed396be77762fa8dfc7656
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3046961
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Tim Van Patten <timvp@google.com>
|
|
49af677a
|
2021-08-16T07:59:18
|
|
Capture/Replay: Update serialization logic.
- Uses more common toString methods instead of custom ones.
- Uses enum to string in more places intsead of numeric enums.
- Adds missing group scopes in several places.
- Skips serializing empty image levels.
Bug: angleproject:5133
Change-Id: I2c9523981aba4ec0afb5f0623cb34154db263e6b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3097805
Reviewed-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
1ce78397
|
2021-07-30T16:51:45
|
|
Remove support for WEBGL_debug_shader_precision
This extension was rejected, and the implementation was hacky. This
clean up is part of an ongoing work to improve precision handling.
Bug: angleproject:6059
Change-Id: If08581ec6f19cf1698ffa3dd6d248dc5e68a1d31
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3064303
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
69f2fb00
|
2021-03-08T10:49:31
|
|
Vulkan: Expose OES_geometry_shader extension
Modify the symbol table generation script to accept a list
of supported extensions. This allows for the EXT and
OES versions of the geometry shader extension to be exposed.
Test: angle_deqp_khr_gles31_tests --deqp-case=*geometry_shader*
Bug: angleproject:3571
Change-Id: Ia7127a03dbd3fce78957f0505d3ce0c9bab6cb15
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2765011
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
1b680b77
|
2021-06-02T22:04:45
|
|
Reland "Make SH_CLAMP_INDIRECT_ARRAY_BOUNDS do proper AST transformation"
This is a reland of a474fd7de769ae817db83490d410510cdbed75b2
The integer clamp used in this transformation is not available in es100
shaders, and float clamp is used instead.
Original change's description:
> Make SH_CLAMP_INDIRECT_ARRAY_BOUNDS do proper AST transformation
>
> This translator flag adds a clamp to non-literal indices to arrays. Two
> strategies were provisioned, using the clamp intrinsic or a hand-written
> function. The latter is ununsed in angle, chromium, firefox and
> webkit, so this change removes this option and uses the clamp intrinsic
> unconditionally.
>
> The clamp itself was added at output generation time with special flags
> set on the index node. This is changed such that a proper AST
> transformation is done and no-special handling would be necessary.
>
> Bug: angleproject:4361
> Bug: angleproject:4889
> Change-Id: Ieccfd2c1c347563fb5282e9fa66d39304e62f2ca
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2935041
> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Bug: angleproject:4361
Bug: angleproject:4889
Change-Id: I9397ec7e6bdfb706c2a891b33fd3b2b79e883ccc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2940902
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
|
|
10f15011
|
2021-06-03T19:22:53
|
|
Revert "Make SH_CLAMP_INDIRECT_ARRAY_BOUNDS do proper AST transformation"
This reverts commit a474fd7de769ae817db83490d410510cdbed75b2.
Reason for revert: breaks GLES2ConformTest, see roll into Chromium:
https://chromium-review.googlesource.com/c/chromium/src/+/2935093
Original change's description:
> Make SH_CLAMP_INDIRECT_ARRAY_BOUNDS do proper AST transformation
>
> This translator flag adds a clamp to non-literal indices to arrays. Two
> strategies were provisioned, using the clamp intrinsic or a hand-written
> function. The latter is ununsed in angle, chromium, firefox and
> webkit, so this change removes this option and uses the clamp intrinsic
> unconditionally.
>
> The clamp itself was added at output generation time with special flags
> set on the index node. This is changed such that a proper AST
> transformation is done and no-special handling would be necessary.
>
> Bug: angleproject:4361
> Bug: angleproject:4889
> Change-Id: Ieccfd2c1c347563fb5282e9fa66d39304e62f2ca
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2935041
> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Bug: angleproject:4361
Bug: angleproject:4889
Change-Id: I911cfe0199b04dbc3d6d4265775b6c2de00a9777
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2937024
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
a474fd7d
|
2021-06-02T22:04:45
|
|
Make SH_CLAMP_INDIRECT_ARRAY_BOUNDS do proper AST transformation
This translator flag adds a clamp to non-literal indices to arrays. Two
strategies were provisioned, using the clamp intrinsic or a hand-written
function. The latter is ununsed in angle, chromium, firefox and
webkit, so this change removes this option and uses the clamp intrinsic
unconditionally.
The clamp itself was added at output generation time with special flags
set on the index node. This is changed such that a proper AST
transformation is done and no-special handling would be necessary.
Bug: angleproject:4361
Bug: angleproject:4889
Change-Id: Ieccfd2c1c347563fb5282e9fa66d39304e62f2ca
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2935041
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
776c6015
|
2021-02-26T00:00:57
|
|
Vulkan: Call glslang at compile time
With this change, the ANGLE translator immediately compiles the
generated GLSL into SPIR-V with glslang and discards the source. This
is in preparation for generating SPIR-V directly, by making the frontend
and backend already able to digest it.
This change also allows the expensive glslang calls to be parallelized,
improving the following perf test by about 20%:
LinkProgramBenchmark.Run/vulkan_compile_and_link_multi_thread
Previously, the test was run as such in the Vulkan backend:
Main Thread 1 Thread 2
Compile1 --->
Compile2 --------------------->
Translator Translator
<---
<---------------------
Link
glslang
for
shader1
glslang
for
shader2
Done
With this change, it is run as such:
Main Thread 1 Thread 2
Compile1 --->
Compile2 --------------------->
Translator Translator
glslang glslang
<---
<---------------------
Link
Done
glslang_wrapper_utils no longer interacts with glslang! A rename will
follow.
Bug: angleproject:4889
Change-Id: If4303e8ba0ba43b1a2f47f8c0a9133d0bee1a19a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2721195
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
77637f2d
|
2021-02-19T15:18:52
|
|
Vulkan: Generate xfb support code in SPIR-V for emulation path
This change moves the code generation at link time from source code to
SPIR-V. As a result, transform feedback extension and emulation paths
are more similarly handled before SPIR-V transformation (they both store
information identically in the ShaderInterfaceVariableInfoMap).
This change gets rid of the @@ XFB-OUT @@ marker. With no source code
generation at link time, shader compilation can be moved to
glCompileShader time.
Bug: angleproject:4888
Change-Id: I8cdb89c22b57ce48cf5d226b8e41622d9d550d46
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2713269
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
550f2a3e
|
2021-02-24T09:49:42
|
|
Vulkan: Shader support for EXT_shader_framebuffer_fetch_non_coherent
Translator can accept gl_LastFragData and 'inout' variable to gain
access to framebuffer attachment data. The Vulkan translator replaces
it with the SubpassInput type variable. Note that this works only for
the noncoherent version of the extension.
Bug: angleproject:5454
Test: *EXTShaderFramebufferFetchNoncoherent*.*
Change-Id: I392f84ee3ad3eb9fbd09d0b7ff83731a9a3f33f6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2598060
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
|
|
e670fc72
|
2021-01-18T15:51:42
|
|
Implement shader compiler changes for Tessellation.
Numerous rule changes to support validating Tessellation Control and
Evaluation shaders. New per-patch inputs and output variable support.
Includes a new traverser step that validates barrier function calls.
Functionality changes upcoming in http://crrev.com/c/2568234
Bug: angleproject:3572
Change-Id: If8da1c21d30efa12c60ed0d6c3f8cf0b27e4c86f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2633936
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Mohan Maiya <m.maiya@samsung.com>
|
|
68635b43
|
2021-01-16T10:56:39
|
|
Reland "Vulkan: Move xfb position decl to translator in extension path"
This reverts commit b4b5972627e148ed91aac3cbc02806bb6407ef0a.
Reason for revert: This was in a chain of reverts, but is unrelated to the issue.
Original change's description:
> Revert "Vulkan: Move xfb position decl to translator in extension path"
>
> This reverts commit 8f5ca26678c12d54d2981a84e48a5304746ec824.
>
> Reason for revert:
> Earlier CL breaks pre-rotation:
> https://chromium-review.googlesource.com/c/angle/angle/+/2598584
>
> Original change's description:
> > Vulkan: Move xfb position decl to translator in extension path
> >
> > This change removes the @@ XFB-DECL @@ marker. The ANGLEXfbPosition
> > output is unconditionally emitted in VS, TES and GS by the translator,
> > and is appropriately decorated or removed by the SPIR-V transformer.
> >
> > Bug: angleproject:3606
> > Change-Id: Ia76224f5a6d147362eeb2d288f05e333aaf75481
> > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2617658
> > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
> > Reviewed-by: Jamie Madill <jmadill@chromium.org>
> > Reviewed-by: Charlie Lao <cclao@google.com>
>
> TBR=syoussefi@chromium.org,jmadill@chromium.org,cclao@google.com
>
> Change-Id: Ia03988b9c17639513576e82e8f11cd4c7b52640b
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: angleproject:3606
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2634202
> Reviewed-by: Tim Van Patten <timvp@google.com>
> Commit-Queue: Tim Van Patten <timvp@google.com>
TBR=timvp@google.com,syoussefi@chromium.org,jmadill@chromium.org,cclao@google.com
# Not skipping CQ checks because this is a reland.
Bug: angleproject:3606
Change-Id: Ib5b5925528a5c8698390b81f71ee788f5b332a1f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2633708
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
b4b59726
|
2021-01-16T00:12:00
|
|
Revert "Vulkan: Move xfb position decl to translator in extension path"
This reverts commit 8f5ca26678c12d54d2981a84e48a5304746ec824.
Reason for revert:
Earlier CL breaks pre-rotation:
https://chromium-review.googlesource.com/c/angle/angle/+/2598584
Original change's description:
> Vulkan: Move xfb position decl to translator in extension path
>
> This change removes the @@ XFB-DECL @@ marker. The ANGLEXfbPosition
> output is unconditionally emitted in VS, TES and GS by the translator,
> and is appropriately decorated or removed by the SPIR-V transformer.
>
> Bug: angleproject:3606
> Change-Id: Ia76224f5a6d147362eeb2d288f05e333aaf75481
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2617658
> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Reviewed-by: Charlie Lao <cclao@google.com>
TBR=syoussefi@chromium.org,jmadill@chromium.org,cclao@google.com
Change-Id: Ia03988b9c17639513576e82e8f11cd4c7b52640b
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: angleproject:3606
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2634202
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Tim Van Patten <timvp@google.com>
|
|
cea86910
|
2021-01-14T08:13:00
|
|
Vulkan: Support EXT_clip_cull_distance extension
EXT_clip_cull_distance extension is supported except for
some features related to EXT_tessellation_shader and
EXT_geometry_shader. Also added a few compiler tests to validate
the transformation from ESSL to GLSL for Vulkan backend.
Bug: angleproject:5458
Tests: angle_end2end_tests --gtest_filter=Clip*DistanceTest*
angle_unittests --gtest_filter=*Clip*Distance*
Change-Id: Ie74e6b2b55112ad92ad111191d629b63506032ab
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2585987
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
|
|
8f5ca266
|
2021-01-07T16:04:16
|
|
Vulkan: Move xfb position decl to translator in extension path
This change removes the @@ XFB-DECL @@ marker. The ANGLEXfbPosition
output is unconditionally emitted in VS, TES and GS by the translator,
and is appropriately decorated or removed by the SPIR-V transformer.
Bug: angleproject:3606
Change-Id: Ia76224f5a6d147362eeb2d288f05e333aaf75481
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2617658
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
c07ef602
|
2021-01-05T12:26:05
|
|
Vulkan: Move xfb buffer decl to translator in emulation path
This makes @@ XFB-DECL @@ empty on this path. Ultimately, this is
working towards removing both @@ XFB-DECL @@ and @@ XFB-OUT @@ macros
for both the emulation and extension paths, allowing the shaders to be
compiled at compile time rather than link time.
Bug: angleproject:3606
Change-Id: If16e9d92c419a04ecd3094481ed546d0708cdb43
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2611305
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
e2a8a69a
|
2021-01-04T23:52:02
|
|
Vulkan: Move xfb emulation offset calculation to translator
A new function is added by the translator to calculate the transform
feedback offsets in the emulation path. This function makes the
generated code for transform feedback smaller.
Bug: angleproject:3606
Change-Id: I01460f907e20e2887cb720bddad96697fdcb0cf3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2607492
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
378653f8
|
2020-11-20T12:24:41
|
|
D3D: throw a perf warning for uniform block
We had translated an uniform block only containing a large array member
into StructuredBuffer instead of cbuffer on D3D backend for slow fxc
compile performance issue with dynamic uniform indexing.
This patch throw a warning if a uniform block containing a large array
member fails to hit the optimization.
Bug: angleproject:3682
Change-Id: I33459b559923f16a8dfb70c6f46ec52f68d96e06
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2552365
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jiajia Qin <jiajia.qin@intel.com>
|
|
8797714c
|
2020-12-01T11:39:25
|
|
Vulkan: Support OES_shader_io_blocks
Enables OES/EXT_shader_io_blocks extensions in Vulkan backends.
With shader I/O blocks, the varyings can now be an array of struct (the
block itself) of struct (nested in the block).
This change is missing a number of features. In particular, if the
shader I/O block has a location decoration in the middle of the block,
that is not handled yet.
Based on changes from m.maiya@samsung.com and jmadill@chromium.org.
Bug: angleproject:3580
Tests: dEQP-GLES31.functional.shaders.linkage.es31.io_block.*
dEQP-GLES31.functional.separate_shader.validation.es31.io_blocks.*
dEQP-GLES31.functional.program_interface_query.program_input.*
dEQP-GLES31.functional.program_interface_query.program_output.*
Change-Id: I593840475d2365ff6c9ce7b2290f5ee462a30dfb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2567645
Reviewed-by: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
24f64249
|
2020-11-16T17:55:02
|
|
Vulkan: Track specialization constant usage bit and feedback to ctx
Right now context does not know which specialization constant is used by
the shader. Whenever a specialization constant changes, we assume shader
program is using it, we always reach into vulkan driver to ask for a new
program. Instead we can track shader's usage of specialization constant
so that context can utilize this information to avoid recompile pipeline
program if an unused specialization constant has changed.
This CL implements the plumbing the usage bits form compiler to program
object, it does not actually utilize the usage bits to avoid unnecessary
compilation yet.
Bug: b/173461931
Change-Id: Iebc9d0638c17b1a282c8b6093ce6bae154246e57
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2542866
Reviewed-by: Ian Elliott <ianelliott@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
8a401051
|
2020-11-19T07:58:05
|
|
Vulkan: Support OES_sample_variables extension
Enable OES_sample_variables extension on Vulkan backend.
Add support for built-in variables, uniform state and constants
- gl_SampleId, gl_SamplePosition, gl_SampleMask,
gl_SampleMaskIn
- gl_NumSamples
- gl_MaxSamples
Bug: angleproject:3588
Tests: dEQP-GLES31.functional.shaders.sample_variables.*
KHR-GLES31.core.sample_variables.*
Change-Id: Idf37c7b4ccb0331dbda7acd6389ff4e1022ba959
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2477907
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
738092ae
|
2020-11-18T07:58:53
|
|
Add auto generated code for GL_EXT_tessellation_shader
To support tessellation, code and auto generated code are added.
Entry points function, ShaderTypes, built in variables and constants,
builtin function barrier and patch keyword are added.
Bug: angleproject:3572
Change-Id: Ia5fe473e884466cb88cea7138e13377a1d7b4fa0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2538393
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
43acf3ba
|
2020-07-31T15:43:57
|
|
GL: Compiler changes for GL_OES_texture_buffer
This extension is core in GLES 3.2
This CL enables the extension, added 412 new dEQP tests for texture
buffer. 410 of these tests pass, but there are two tests that fail,
detailed in anglebug.com/4933
Also includes a fix for completeness checks.
Based on a CL by Jonah Ryan-Davis.
Bug: angleproject:3573
Bug: angleproject:4933
Change-Id: I45759d765c88c64f21b592eab01d910dc4bc8da3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2521239
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
e895ced6
|
2020-10-29T09:06:00
|
|
Vulkan: Add OES_shader_image_atomic support
Add support for shader builtins and enable the extension.
Bug: angleproject:3578
Tests: dEQP-GLES31.functional.*image_atomic*
Change-Id: Idd45b2ee62efe1474c6c5947c77da64ff2221bf6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2505540
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
553726a4
|
2020-10-20T11:29:17
|
|
Vulkan: Add OES_shader_multisample_interpolation extension
Addition of 'sample' qualifier keyword and 'interplateAt*'
fragment shader builtin functions with autogen
Bug: angleproject:3589
Change-Id: If358eb371fbcefffa715c8da4ba5e96eefaf6f52
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2477904
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
7a0faa82
|
2020-09-24T20:15:26
|
|
Revert "Pass #pragma optimize setting down to compilation."
This reverts commit 499173de1c91932ba272269cab6918bf7e8d7c11.
Reason for revert: Causes unexpected HLSL compiler errors in some
cases. See bug.
Bug: angleproject:5094
Original change's description:
> Pass #pragma optimize setting down to compilation.
>
> This will allow us to disable optimizations in the back-end. This can
> be useful both for developers and for ANGLE to disable very slow
> shader compilation on D3D11.
>
> Also apply this pragma to VerifyMaxVertexUniformVectorsWithSamplers.
> Reduces compilation time by half in local testing.
>
> Bug: angleproject:5076
> Change-Id: I64ad576e11b9cee5b41f8af0d3621570304d65c2
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2420749
> Commit-Queue: Jamie Madill <jmadill@chromium.org>
> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
TBR=geofflang@chromium.org,jonahr@google.com,jmadill@chromium.org
# Not skipping CQ checks because original CL landed > 1 day ago.
Bug: angleproject:5076
Change-Id: I733e788fe8e9421ae0af662c0eb51af1ed79dde3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2429517
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
499173de
|
2020-09-20T10:42:56
|
|
Pass #pragma optimize setting down to compilation.
This will allow us to disable optimizations in the back-end. This can
be useful both for developers and for ANGLE to disable very slow
shader compilation on D3D11.
Also apply this pragma to VerifyMaxVertexUniformVectorsWithSamplers.
Reduces compilation time by half in local testing.
Bug: angleproject:5076
Change-Id: I64ad576e11b9cee5b41f8af0d3621570304d65c2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2420749
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
7e815c77
|
2020-07-08T13:43:40
|
|
Implement EXT_shadow_samplers
Bug: angleproject:4863,b/161716126
Change-Id: I6beb45d91f59a851787c9f40b40266fb985198d5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2288330
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: back sept 10 - Jamie Madill <jmadill@chromium.org>
|
|
eadc387c
|
2020-04-01T16:53:31
|
|
GL: Support GL_OES_texture_cube_map_array in shader translator
GL_OES_texture_cube_map_array is core in 3.2. This CL adds support
for this extension in the shader translator.
Now passes dEQP.KHR_GLES31/core_texture_cube_map_array.*,
dEQP.GLES31/functional_fbo_color_texcubearray_*, and
dEQP.GLES31/functional_opaque_type_indexing*samplercubearray* with GL backend.
Bug: angleproject:3584
Change-Id: I1a8485c7d9d3fffb9b5109d292b35b0c56a3c665
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2133086
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
|
|
dadd1986
|
2020-04-21T01:50:00
|
|
Implement GL_APPLE_clip_distance
- Built-in variable gl_ClipDistance has been added to compiler.
- Desktop GL: gl_ClipDistance is supported since GL 3.0. Enable/Disable
each gl_ClipDistances[i] works out of the box via glEnable().
- Vulkan/Metal: Use uniform variable to control writing to each
gl_ClipDistance. One bit flag controls one element in the gl_ClipDistance
array. The writing to the disabled element in vertex shader will be
ignored, and turned into zero assignment instead.
- Direct3D/Mobile GL: Not implemented yet.
- Added ClipDistanceTest to gl_tests and compiler unittests.
- GL_APPLE_clip_distance is a subset of GL_EXT_clip_cull_distance, so
GL_EXT_clip_cull_distance could be implemented in future if needed.
Bug: angleproject:4452
Change-Id: I571ac8b56826989808a680226a04bec4cf59988e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2084324
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
dee4d7a5
|
2020-04-10T10:22:56
|
|
Vulkan: Early fragment tests optimization
Checks if early fragment tests as an optimization is feasible and enable
it if we can. In the link time, if context state diagrees with
optimization (in rare case), then remove the
ExecutionModeEarlyFragmentTests sprv op code.
Bug: angleproject:4508
Change-Id: Ifbb06c0ffb050a9f3ddb16ab50362e908b4b9cf6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2136490
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
96c26c68
|
2020-04-03T07:52:52
|
|
Add support for NV_shader_noperspective_interpolation
Added support for GL_NV_shader_noperspective_interpolation on
the Vulkan and Desktop OpenGL backends
Bug: angleproject:4388
Test: angle_end2end_tests --gtest_filter=ShaderInterpTest.NoPerspective/*
Change-Id: I12473830c0ea8b4fffeae9c4a8ec92d979c8e18c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2107234
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
ca2b6e1f
|
2020-03-19T16:30:21
|
|
Vulkan: Implement EXT_shader_non_constant_global_initializers
Enables the translator to handle non-constant global initializers in
all essl versions iff the shader enables the extension to do so.
Bug: angleproject:4468
Test: angle_end2end_tests --gtest_filter=ShaderNonConstGlobalInitializerTest.*
Change-Id: I8f138c12fc83d2f38ff8f45ca9133222b01e4087
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2102959
Reviewed-by: Tobin Ehlis <tobine@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
|
|
1f5f7ea3
|
2020-02-14T23:39:11
|
|
Vulkan: Fix SPIR-V transformation name-info association
Prior to this commit, when "OpName %id name" was encountered, the info
corresponding to "name" was immediately associated with %id. This is
not necessarily correct because there could be multiple ids with the
same name. For example a sampler declaration and an unrelated function
argument could have the same name. In this case, the sampler
declaration and function argument name don't even need to be in the same
shader stage.
This change modifies the SPIR-V transformation such that the name-id
mapping is tracked until the OpVariable instruction that actually
declares the variable is visited. The mapping to variable info is only
done if the storage class specified in this instruction corresponds to a
shader interface variable.
Bug: angleproject:3394
Change-Id: I35a1f6f8278e4b1ad81c9955a55e1b72d6f2e4ea
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2057248
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
f1f082e1
|
2020-01-17T14:53:38
|
|
Vulkan: Set varying location & xfb decorations in SPIR-V
The shader translator outputs arbitrary location indices. Once compiled
by glslang, the SPIR-V transformer modifies these decorations. If the
transform feedback extension is used, it will also add the relevant
decorations to the varyings that are captured.
Bug: angleproject:3394
Change-Id: I5ecafd0536408612a5d4b920dbabbfabe650657c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2008468
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
71e6afb1
|
2020-01-14T14:12:31
|
|
Vulkan: Set set/binding in SPIR-V
This change introduces a SPIR-V transformer that modifies shader
interface variable decorations directly in SPIR-V instead of
manipulating the input GLSL. Currently, descriptor set and binding
indices are set by the transformer.
The shader translator outputs arbitrary set and binding indices. Once
compiled by glslang, the SPIR-V transformer modifies these decorations.
The ultimate goal is to be able to modify the SPIR-V again when program
pipeline objects decide a different set/binding is necessary.
Bug: angleproject:3394
Change-Id: If358265a72bf1fe9f5676562b39a632cb2e05dc4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2001477
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
0af8b596
|
2019-09-03T16:24:45
|
|
D3D11: Translate uniform blocks to StructuredBuffer when necessary
fxc exhibits slow compile performance with dynamic cbuffer indexing.
So when a uniform block contains only one large array member, which is
an array of structures, translate this uniform block to
a StructuredBuffer instead.
Bug: angleproject:3682
TEST=angle_end2end_tests.UniformBufferTest.*
Change-Id: Ife80dba8aae65b761737e095895e00a570230f88
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1782046
Commit-Queue: Xinghua Cao <xinghua.cao@intel.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
17b3c2f3
|
2019-10-14T14:13:59
|
|
Implement SamplerVideoWEBGL for WEBGL_video_texture extension on desktop
WEBGL_video_texture is an extension that will improve uploading video frame to WebGL performance.
(https://www.khronos.org/registry/webgl/extensions/proposals/WEBGL_video_texture/)
This extension introduced a new texture type TEXTURE_VIDEO_IMAGE_WEBGL and a new sampler type
samplerVideoWEBGL to sample it.
In chromium implementation, TEXTURE_VIDEO_IMAGE_WEBGL maps to different native texture type
based on platform. On desktop, it maps to GL_TEXTURE2D(Currently supported). On Android, it
should map to GL_TEXTURE_EXTERNAL(TODO). SamplerVideoWEBGL needs to be mapped to sampler2D or
samplerExternalOES according to TEXTURE_VIDEO_IMAGE_WEBGL implementation.
This patch implements samplerVideoWEBGL in Angle to support WEBGL_video_texture on desktop. In
this case, samplerVideoWEBGL should map to sampler2D.
Bug: chromium:776222, angleproject:3889
Change-Id: Idb0a5fcde37ca75ccc1181226b91f257212e7500
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1866274
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
795a3559
|
2019-12-03T11:31:18
|
|
Vulkan: EXT_gpu_shader5 support: precise
The precise keyword is used in tessellation shaders but introduced in
this extension.
EXT_gpu_shader5 introduces a handful of features to shaders. This
change only implements the `precise` keyword.
Bug: angleproject:3569
Change-Id: I2252b79098eb8ba2d2faa040d7eaed7548b7051e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1939851
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
33a00efd
|
2019-11-27T09:21:45
|
|
Add Compute Shared Memory Size Validation
Add tracking of shared memory declarations in compute shaders.
Test:
angle_deqp_gles31_tests --gtest_filter=dEQP.GLES31/functional_debug_negative_coverage_callbacks_compute_exceed_shared_memory_size_limit
Bug: 4173
Change-Id: If2a86d467a82f73fa5b2ee0ced752701acfe1872
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1934653
Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
3f647b1b
|
2019-11-09T16:24:50
|
|
Vulkan: Improve Bresenham line emulation.
Clamps the vertex position to the subpixel grid before interpolation.
This will give more correct results on systems that have less than
8 bits of subpixel accuracy.
Also uses a more accurate formulation for the emulation filter in the
fragment shader using dfdx and dfdy.
Fixes line raster CTS tests on SwiftShader. Still does not produce spec
conformant lines. Updates the public docs to indicate this.
Bug: angleproject:2830
Change-Id: Ib9a268df3e7d986bd2b1348be664389fe8fc0ef2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1826598
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
90a58622
|
2019-09-04T15:39:58
|
|
Refactor ShaderVariable to Remove Specializations
The following structs are being refactored and moved into the parent
struct ShaderVariable:
VariableWithLocation
Uniform
Attribute
OutputVariable
InterfaceBlockField
Varying
Bug: angleproject:3899
Test: CQ
Change-Id: I389eb3ab4ed44a360e09fca75ecc78d64a277f83
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1785877
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Commit-Queue: Tim Van Patten <timvp@google.com>
|
|
9d737966
|
2019-08-14T12:25:12
|
|
Standardize copyright notices to project style
For all "ANGLE Project" copyrights, standardize to the format specified
by the style guide. Changes:
- "Copyright (c)" and "Copyright(c)" changed to just "Copyright".
- Removed the second half of date ranges ("Y1Y1-Y2Y2"->"Y1Y1").
- Fixed a small number of files that had no copyright date using the
initial commit year from the version control history.
- Fixed one instance of copyright being "The ANGLE Project" rather than
"The ANGLE Project Authors"
These changes are applied both to the copyright of source file, and
where applicable to copyright statements that are generated by
templates.
BUG=angleproject:3811
Change-Id: I973dd65e4ef9deeba232d5be74c768256a0eb2e5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1754397
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
cdab03aa
|
2019-06-18T17:24:54
|
|
Add flags to shader translator to emulate gl_BaseVertex and gl_BaseInstance
Adds support for translating gl_BaseVertex and gl_BaseInstance for implementation of
GL_ANGLE_base_vertex_base_instance.
They will only be available in WebGL 2. Since there's no gl_VertexID and
gl_InstanceID in WebGL 1. It won't be very useful to add them to WebGL
1.
Mostly follow pattern of gl_DrawID of GL_multi_draw
BUG=angleproject:3402,chromium:891861
Change-Id: Ifcd990c52d12f6814127b904e61a779b8d382e0c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1666361
Commit-Queue: Shrek Shao <shrekshao@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
4fbbdb15
|
2019-06-28T14:17:13
|
|
texture3D: Compiler changes for sampler3D
Bug: angleproject:3188
Change-Id: Iac1408f8b91c6a6610a63cef236205b7dcdbd2c4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1682781
Reviewed-by: Lingfeng Yang <lfy@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
ebab670c
|
2019-04-19T14:36:45
|
|
Adding new extension GL_OVR_multiview
GL_OVR_multiview functions exactly the same as GL_OVR_multiview2.
All GL_OVR_multiview2 tests now also repeat the same test using GL_OVR_multiview
Bug: angleproject:3341
Change-Id: I7e5294fb6bbf7692535174a15da6a42e1b5fc4e2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1575904
Commit-Queue: Rafael Cintron <rafael.cintron@microsoft.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
7d64c486
|
2019-03-12T14:27:40
|
|
GL_ANGLE_multiview has been renamed to GL_OVR_multiview2.
changes include:
1) GL_OVR_multiview to GL_OVR_multiview2 extension directive change
2) Removal of all references to side by side. We no longer support multiple views in a single 2DTexture. Only 2DTextureArray's are supported
3) WebGL 2 (ES3) is required for multiview
Bug: angleproject:3341
Change-Id: Ie0c1d21d7610f8feebdb2e4d01c6947f57e69328
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1552023
Commit-Queue: Rafael Cintron <rafael.cintron@microsoft.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
f3179a6a
|
2018-07-12T16:22:06
|
|
ES31: Implement bindImageTexture binds a single layer on D3D backend
Dynamically generate image2D variables' declaration and function
definition in libANGLE.
Bug: angleproject:1987
TEST=angle_end2end_tests.ComputeShaderTest.*
Change-Id: Idacc756f7bd15f22eccb1d689e18e997f3e74159
Reviewed-on: https://chromium-review.googlesource.com/c/1142885
Commit-Queue: Xinghua Cao <xinghua.cao@intel.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
b980c563
|
2018-11-27T11:34:27
|
|
Reformat all cpp and h files.
This applies git cl format --full to all ANGLE sources.
Bug: angleproject:2986
Change-Id: Ib504e618c1589332a37e97696cdc3515d739308f
Reviewed-on: https://chromium-review.googlesource.com/c/1351367
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
7cf9cd24
|
2018-10-09T15:27:32
|
|
Add flags to shader translator to emulate gl_DrawID
Adds support for translating gl_DrawID for implementation of
GL_ANGLE_multi_draw.
Currently the change only supports and allows emulation of the
draw id using a uniform variable named `gl_DrawID`. This uniform is
mapped in the translated shader to a hashed name that does not
use the gl_ namespace
Bug: chromium:890539
Change-Id: I08a246ca911e88e733ccdf22f1ed69dcae948e05
Reviewed-on: https://chromium-review.googlesource.com/c/1271957
Commit-Queue: Austin Eng <enga@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
|
|
c4533eae
|
2018-09-19T15:23:29
|
|
Enable ANGLE_texture_multisample in glsl in es 3.0
Enable gsampler2dMS, texelFetch, textureSize in glslang in
es 3.0 if ANGLE_texture_multisample is supported.
Bug: angleproject:2275
TEST=SamplerMultisampleEXTTest.TextureMultisampleEXTEnabled
Change-Id: Ibfa367970db3ae790f3822e57eb50090843dc6db
Reviewed-on: https://chromium-review.googlesource.com/c/867521
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Yizhou Jiang <yizhou.jiang@intel.com>
|
|
a602f906
|
2018-09-11T14:40:24
|
|
ES31: Support shader storage buffer in D3D-API side.
Bug: angleproject:1951
Test: angle_end2end_tests
Change-Id: I0d8a4f8cf00fc7fd2d85315138e2b7457fd0b90c
Reviewed-on: https://chromium-review.googlesource.com/1242846
Commit-Queue: Jiajia Qin <jiajia.qin@intel.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
f0d0408a
|
2018-08-28T16:02:13
|
|
Use OES_texture_storage_multisample_2d_array
There's an OES extension for multisample texture arrays,
OES_texture_storage_multisample_2d_array. Change references from
ANGLE_texture_multisample_array to the native extension in the shader
compiler.
ANGLE still needs to have robust behavior for out-of-range texel
fetches that's not found in the original extension, but this does not
need to be spelled out in the extension spec.
BUG=angleproject:2775
TEST=angle_unittests
Change-Id: Ie80ae767cc92ccaf7389af28789f45547f86978f
Reviewed-on: https://chromium-review.googlesource.com/1193266
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
8ca60805
|
2018-08-23T14:10:02
|
|
Add 2D MS array sampler support to compiler
This also places textureSize(gsampler2DMS) correctly in the ESSL 3.10
builtins instead of ESSL 3.00 builtins.
BUG=angleproject:2775
TEST=angle_unittests
Change-Id: Ieb0f7a7424a5558a5569af6d4fcbcc9b12ec9840
Reviewed-on: https://chromium-review.googlesource.com/1186466
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
05a449a7
|
2018-06-20T18:08:04
|
|
Replace reinterpret_cast with safer or no cast
When casting types to one another in C++, the weaker the cast,
the better.
This change replaces instances of reinterpret_cast with static_cast
or no cast where it safe and correct to do so.
BUG=angleproject:2683
Change-Id: I99c9033614a65282ae1d78cf0f4b80fabd75877a
Reviewed-on: https://chromium-review.googlesource.com/1109396
Commit-Queue: Rafael Cintron <rafael.cintron@microsoft.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
4ed05da2
|
2018-02-02T14:26:15
|
|
ES31: Add link validation on geometry shader itself
This patch intends to support program link validation on geometry
shader itself. A link error should occur when linking a program with
a geometry shader that lacks input primitive or output primitive or
the declaration of 'max_vertices'.
This patch also adds the support of linking a program with geometry
shader in angle_end2end_tests.
BUG=angleproject:1941
TEST=angle_end2end_tests
dEQP-GLES31.functional.shaders.linkage.es31.geometry.varying.rules.unspecified_*
Change-Id: I25fb08514753102f5dd3ab86211c05d2ca4fd185
Reviewed-on: https://chromium-review.googlesource.com/898842
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
bd924af1
|
2017-11-16T15:28:04
|
|
ES31: Remove support of GL_OES_geometry_shader in compiler
This patch intends to remove the support of GL_OES_geometry_shader
in ANGLE compiler.
To make the implementation simpler, currently we decide to only
support "GL_EXT_geometry_shader" as the extension string of geometry
shader in ANGLE.
This patch also updates all the related shaders in angle_unittests
into R"()" format.
BUG=angleproject:1941
TEST=angle_unittests
Change-Id: Ife9858abeedfb46b02c5c2fb1cda16fa27198511
Reviewed-on: https://chromium-review.googlesource.com/773451
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
ebee5b3b
|
2017-11-23T12:56:32
|
|
Add GLSL support for runtime-sized arrays in SSBOs
The GLSL parser now allows a runtime-sized array as the last member in
a shader storage block. Clamping indexing against the memory bounds is
done by determining the array length at runtime.
Runtime-sized arrays are used in dEQP tests for many compute shader
tests, so these now work on the OpenGL backend.
BUG=angleproject:1951
TEST=angle_unittests,
dEQP-GLES31.functional.shaders.linkage.shader_storage_block.*
dEQP-GLES31.functional.shaders.builtin_functions.*compute*
Change-Id: Ibecca24623ca8e4723af6f0e0421fe9711ea828d
Reviewed-on: https://chromium-review.googlesource.com/787976
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
89be29a5
|
2017-11-06T14:36:45
|
|
ES31: Implement creation and attaching geometry shader on OpenGL
This patch intends to implement the creation of a geometry shader
and attaching a geometry shader to a program on OpenGL back-ends.
This patch also adds all geometry shader related dEQP-GLES31 test
failures to deqp_gles31_test_expectations.txt.
BUG=angleproject:1941
TEST=angle_end2end_tests
Change-Id: Ib0b497030255b15dacd967e48bc59eef0009af46
Reviewed-on: https://chromium-review.googlesource.com/757979
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|