|
10380f4b
|
2023-06-06T11:52:08
|
|
Vulkan: Output SPIR-V ids from compiler
In this change, the shader interface variables are given SPIR-V ids by
the compiler before SPIR-V generation. Those ids are made available
through the ShaderVariable interface.
The transformer does not yet rely on this information. A follow up
change will rework the backend's name->info map and the transformer to
directly use ids instead of names.
Bug: angleproject:7220
Change-Id: Ic0a62681d4bcf3ed171c39c3ecd83e438ea068c8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4600609
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Roman Lavrov <romanl@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
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>
|
|
2780cb0b
|
2023-06-05T00:00:00
|
|
Disallow 'depth_unchanged' qualifier for WebGL contexts
This qualifier has no equivalents in HLSL or MSL.
Bug: angleproject:8046
Change-Id: I1e79c8d725306efb859152b8083d72019c982149
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4595017
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
e60f64dd
|
2023-05-31T17:02:22
|
|
D3D11: fix for atomic assigned to an SSBO.
When assigning the previous value of an atomic op to an SSBO, we do not
want to use the "direct assignment" path, since we can't pass the SSBO
expression as an argument to Interlocked*().
Instead, we change the RewriteAtomicFunctionExpressions transform not to
defer assignments until HLSL output if the LHS is an SSBO expression,
and to do its usual creation of a temporary for the previous value of
the atomic op.
In OutputHLSL, we skip the direct assignment path if the LHS is an SSBO
expression.
Bug: angleproject:8182
Change-Id: I0707f4f69757119fe5c8f8e7a12bd26025ec74e6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4573827
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Stephen White <senorblanco@chromium.org>
|
|
e7a9275b
|
2023-06-02T18:09:40
|
|
Make run_code_generation faster using python3 for auto_script
Only changes the way we get auto_script inputs/outputs.
Before this CL, some of the scripts (depending on the shebang)
are run via vpython3 - which can take a few seconds. But the
inputs/outputs code generally doesn't require any unusual imports, so we
can just add little hacks to suppress those imports where needed when
an argument is given to the script.
Bug: angleproject:8184
Change-Id: Ib09a35b839318253fe7e913e24a756d2cb46dad1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4585820
Commit-Queue: Roman Lavrov <romanl@google.com>
Reviewed-by: 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>
|
|
5f833ff2
|
2023-05-31T00:06:24
|
|
Vulkan: Pass non-semantic info from translator to transformer
The SPV_KHR_non_semantic_info extension is set up in this change to
allow the translator to communicate an overview of the SPIR-V to the
SPIR-V transformer as well as mark locations of interest. This would
help the SPIR-V transformer avoid having to discover basic ids and such
locations.
In this change, a few basic types are predefined and the location where
new types and variables need to be defined are marked.
Bug: angleproject:7220
Change-Id: I237b9a79efa9c192b3b11f1d97bc9b6a5cc2f8fb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4573823
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
dfb2bab0
|
2023-05-25T15:08:19
|
|
Apply Aliased Decorators To Image DataTypes
Bug: b/274478912
Bug: b/266235549
Change-Id: I2cd272a1e7481a8803be63efe0be11c61560b23e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4568287
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
02e7f967
|
2023-05-25T14:54:49
|
|
Translator: Remove the "variables" option
Variable collection is invariably enabled by the front-end as well as
other major users of ANGLE such as Firefox. All translator backends
except GLSL force-enable variable collection either way.
This change removes this compile option and enables variable collection
unconditionally.
The flag itself remains in ShCompileOptions until references to it are
removed from Chromium.
Bug: chromium:1447314
Change-Id: I4d3b30c1bfbd345c5ad269abc62c0a6a59de2f56
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4568524
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
9b1ff7b1
|
2023-05-25T14:13:13
|
|
Translator: Fix SPIR-V translation without "variables" flag
This flag is now assumed to always be true for the SPIR-V (and MSL)
translators. They use the collected variables during translation.
Bug: chromium:1447314
Change-Id: I69d31ce8144aec0bd2a7263bad6e5a366e922740
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4567830
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
bdbcf763
|
2023-05-24T00:00:00
|
|
Compile ClampFragDepth on all backends
Bug: angleproject:3970
Change-Id: I498f8c101e5939156eba6a071278f6ea912fee70
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4561897
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
80e60bbc
|
2023-05-09T12:46:18
|
|
Validate non-precision qualifiers in GLSL shaders
Add validation to reject non-precision qualifiers on struct members
in GLSL shaders, as per the GLSL ES 3.2 specification,
section 4.1.8: Structures
Tests: KHR-GLES3*.shaders.negative.non_precision_qualifiers_in_struct_members
Bug: angleproject:8045
Change-Id: I863ae631b09ff773a826d542f387072491489699
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4534656
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Brandon Schade <b.schade@samsung.com>
|
|
7aadc962
|
2023-05-05T19:28:17
|
|
Ban transform feedback and blend extensions with PLS
Transform feedback can lead to render pass breaks in the Vulkan backend.
EXT_blend_func_extended may restrict the number of draw buffers
depending on API state, which can invalidate a PLS implementation.
KHR_blend_equation_advanced does not allow multiple draw buffers, which
is required by some PLS implementations.
Bug: angleproject:7279
Change-Id: Id89f0e485ee65f55d802b121018f13b0028d8029
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4510716
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
|
|
b0f9c01e
|
2023-05-01T12:54:10
|
|
metal: adds feature that minimizes generated shader differences
This adds a feature (enabled by default) that results in
generating the same code regardless of whether emulateAlphaToCoverage
is enabled or addExplicitBoolCasts. This is done to maximize
cache sharing.
Bug: chromium:1423136
Change-Id: Ia491f13469c750fc2c45aecf1f93fed53b782dc5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4496254
Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Scott Violet <sky@chromium.org>
|
|
d0ee0197
|
2023-05-03T13:41:36
|
|
WebGL: Limit total size of private data
... not just individual arrays.
Bug: chromium:1431761
Change-Id: I721e29aeceeaf12c3f6a67b668abffb8dfbc89b0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4503753
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
2ee97f91
|
2023-04-27T15:43:03
|
|
Unconditionally enable append_aliased_memory_decorations_to_ssbo
After the discussion with Khronos group on how to
handle aliased ssbo in GL driver:
https://gitlab.khronos.org/Tracker/vk-gl-cts/-/issues/4321
https://gitlab.khronos.org/opengl/API/-/issues/183
it is the correct behavior to append aliased memory
qualifier to SSBOs, if restrict memory qualifier is
not specified. Unconditonally enable this feature
for all hardware.
Bug: b/266235549
Change-Id: I20c811710bb10f0de39de5707adab0262a46d296
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4485008
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
|
|
e96e919f
|
2023-04-24T00:00:00
|
|
D3D11: Implement multisampling shader extensions
* OES_sample_variables
* OES_shader_multisample_interpolation
Bug: angleproject:8097
Bug: angleproject:8131
Change-Id: I8ea81725d30ab3a5db6254b897fe72dbe88739d9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4484164
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
d37c97d1
|
2023-04-17T00:00:00
|
|
Metal: Implement OES_shader_multisample_interpolation
* Added support for sample qualifier
and shader interpolation functions
* Added MSL-specific AST transformations
* Adjusted minimum fragment interpolation offset state
query test so that accurate limits could be reported
* Drive-by: Y-flip gl_SamplePosition adjustment
* Renamed ANGLESampleMaskEnabled function constant to
ANGLEMultisampledRendering to correctly reflect its
usage
Bug: angleproject:8097
Bug: angleproject:8131
Change-Id: I25c9f36487e29f05bb9fe874e146d06378fef975
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4440827
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
b494691d
|
2023-04-20T00:00:00
|
|
GL: Enable NV_shader_noperspective_interpolation on ES
Although the extension requires ESSL 3.00,
some drivers support it only in ESSL 3.10.
Fixed: angleproject:4542
Change-Id: I2c50b521056f485a5986942ea882780b327844a9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4455507
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
1acc6d40
|
2023-04-21T17:03:49
|
|
Vulkan: Use Android TLS for *valid* global context
... instead of just global context. This means that the majority of
calls which call GetValidGlobalContext() will be faster (because they
don't need to check for context loss).
Bug: angleproject:8135
Change-Id: Ia91f8fadb5799088542c58d417f31c3e5028b3e0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4454769
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
20b6624a
|
2023-04-17T13:55:09
|
|
Metal: Support compiling on iOS without EAGL
Makes EAGL and CGL compilation exclusive to each other. Catalyst would
compile with both on ARM64, but only use EAGL.
Remove use of GLSL generation in MSL. Generating GLSL for MSL
compute and geometry shaders do not make sense.
Remove compilation of RewriteRowMajorMatrices for Metal.
It was removed from Metal in:
b23bf47c9e999532a684beab9ac901552420b0b8
Reland "Metal: rewrite default uniforms and uniform blocks"
Remove use of ANGLE_ENABLE_APPLE_WORKAROUNDS and gn variable
angle_enable_apple_translator_workarounds. The workarounds are just
unconditional business-as-usual implementation of ANGLE when ANGLE is
compile for PLATFORM_APPLE.
Fixed: angleproject:8129
Change-Id: I3af249708803fba816e2a7c92c35dddb84ce6946
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4428875
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Kyle Piddington <kpiddington@apple.com>
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Dan Glastonbury <djg@apple.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
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>
|
|
443ac5b4
|
2023-04-17T00:00:00
|
|
GL: Enable OES_shader_multisample_interpolation
Drive-by:
* Fixed validity of the related state queries
* Added SampleMultisampleInterpolationTest
* Removed unused OES_sample_variables code
Bug: angleproject:8097
Bug: angleproject:8131
Change-Id: I816d2096759a96d8691acd0a8c5ecdedf880201b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4440826
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Geoff Lang <geofflang@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>
|
|
336bfd60
|
2023-03-30T00:16:40
|
|
GL: Fix the RewriteRepeatedAssignToSwizzled workaround
This transformation splits chained assignments where the LHS is
assigning to a swizzle. However, instead of retaining the assignment
operator (like *=, += etc), it was accidentally unconditionally using
`=`.
Bug: chromium:1394345
Change-Id: Icaef159e1fb57e720e08d4b4f6603f08d9cd2bfe
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4381648
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@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>
|
|
fe45418c
|
2023-03-28T11:43:23
|
|
Translator: Limit the size of private variables in WebGL shaders
As a follow up to
https://chromium-review.googlesource.com/c/angle/angle/+/3023033, the
limit to shader-private variables (locals and globals) is further
reduced to 1MB. A variable that large will not fit in GPU registers and
will spill to memory, killing performance.
Bug: chromium:1427865
Change-Id: I77314d4b891c591cd9a83ad2aebb77d7256f3ada
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4377639
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
6d12a280
|
2023-03-24T00:00:00
|
|
D3D11: Support NV_shader_noperspective_interpolation
Fixed: angleproject:8096
Change-Id: Ic7c27c735661b2ef8095c81201b2ce0a82ad3ae7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4368472
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
57dd0e5f
|
2023-03-27T13:05:36
|
|
Translator: Initialize out arguments too for WebGL
Local variables were initialized for WebGL, but not `out` arguments.
However, `out` arguments completely overwrite the passed-in variable at
call site, so they should also be zeroed out.
Bug: chromium:1425685
Change-Id: Ib2f61a962eea74c4933aafa4d5ad377189cec578
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4375137
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
fc7cb00e
|
2023-03-24T00:00:00
|
|
Metal: Support NV_shader_noperspective_interpolation
Fixed: angleproject:8095
Change-Id: Ieded1f704f82963984f1aee5072f152de0de374c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4368473
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Geoff Lang <geofflang@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>
|
|
d8c9ba9a
|
2023-03-27T00:00:00
|
|
Avoid defaulted comparison operator
Not available until C++20.
Bug: angleproject:8046
Change-Id: I6f4093b0bdccca55818109836e2e0d68f66897b9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4373861
Reviewed-by: Brian Osman <brianosman@google.com>
Auto-Submit: Alexey Knyazev <lexa.knyazev@gmail.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
afc1e5dc
|
2023-03-27T00:00:00
|
|
GL: Support OES_sample_variables
Bug: angleproject:8097
Change-Id: I983d6e83fe9ca942c91cbdf7274b46306e38f11f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4368476
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
997c4c7b
|
2023-03-21T00:00:00
|
|
D3D11: Implement EXT_conservative_depth
Drive-by:
* Hid the extension from ES 2.0 client contexts.
Bug: angleproject:8046
Change-Id: I8bca4161dde4bda7ee75541b9164777884900d89
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4366784
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
648f3657
|
2023-03-21T00:00:00
|
|
Metal: Implement EXT_conservative_depth
Bug: angleproject:8046
Change-Id: I3b9f497da19bf005c7948e552f2e1c7415d4ac6d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4363020
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Kyle Piddington <kpiddington@apple.com>
Reviewed-by: Geoff Lang <geofflang@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>
|
|
ba845fcf
|
2023-03-20T00:00:00
|
|
Metal: Implement EXT_clip_control
* Skipped vertex shader depth correction when
clip depth mode is set to GL_ZERO_TO_ONE.
* Adjusted front face mode and pre-fragment
vertical flip driver uniform based on the
clip origin state.
* Added more clip control end2end tests.
* D3D11: Fixed scissored draws
with upper-left clip origin.
Fixed: angleproject:8065
Change-Id: Ife82fa2ad39fad463c23ec10b49bff409272ebf2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4356661
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Kyle Piddington <kpiddington@apple.com>
|
|
1e6dd013
|
2023-03-21T00:00:00
|
|
Metal: Support centroid qualifier
Fixed: angleproject:8090
Change-Id: I3137599e976bc469709347f423b7e8b71e6ed9f7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4356667
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Kyle Piddington <kpiddington@apple.com>
|
|
53d1a179
|
2023-03-20T17:17:59
|
|
Makes ToposortStructs() return consistent results
This patch introduces a step in ToposortStructs() that
sorts the nodes by name. Doing this ensures consistent
results between calls. Without this, the order depends
upon the pointer value, which varies depending upon when
called.
Ensuring consistent results for the same input is important
for other parts of this code that use the string as key.
Bug: chromium:1423136
Change-Id: I19f053df5cf86c81b800056e86b742d8c34af7d4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4357255
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Scott Violet <sky@chromium.org>
|
|
f5695244
|
2023-03-21T00:00:00
|
|
Fix sample qualifier validation
* `smooth sample` is the same as `sample`
* `flat sample` is the same as `flat`
Bug: angleproject:3589
Change-Id: I8615fa73f4b0cea729b8e09d86f1b8183669de2b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4356666
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
12b3d52d
|
2023-03-10T17:02:55
|
|
Prevent bugs in "FastVector" class.
FastVector does not call destructors when resizing down and constructors
when resizing up. This may cause reuse of previous values after resizing
up and prevent releasing resource in destructors.
Above problems only relevant for non trivially
constructible/destructible types.
For performance reasons (chromium:1417087) this CL disables using
trivially destructible types at all and adds special resizing methods
for non trivially constructible types.
Almost all uses of FastVector was already using trivially destructible
types. Except "angle::FixedVector" used in "rx::vk::SubpassVector<>".
However, "angle::FixedVector" is unnecessarily calls "clear()" in the
destructor. This CL removed "clear()" and made the destructor trivial.
All non trivial constructor cases are limited to
"angle::spirv::BoxedUint32<>" used in
"angle::spirv::FastVectorHelper<>".
No problems found because of the possibility to reuse previous values.
All "resize(count)" methods replaced with special versions.
Therefore, this CL does not fix actual bugs, but rather prevents
incorrect use in the future.
Bug: angleproject:8021
Bug: chromium:1417087
Change-Id: Id65d75575f2f582450b1cc45dc6b1f2bf3bc5289
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4328286
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
6ea6b360
|
2023-03-15T13:49:02
|
|
Fix allowed_keywords dEQP test failures
Bug: b/272756897
Bug: angleproject:7592
Change-Id: I12f498f4ef0a1fa6da7d45345a4cb9e208bd9f03
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4343518
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
|
|
4cbe8548
|
2023-02-28T21:12:17
|
|
Expose shader extensions based on ESSL version
Previously, all suported extensions were always exposed in the
preprocessor. This broke some games which relied on ESSL1-only extension
macros not being defined in ESSL3 shaders. This change adds min/max
version information to list of extensions so the preprocessor can
conditionally expose extensions based on the shader language version,
both via the extension name macros and the #extension directive.
Test: angle_unittests --gtest_filter="VersionTest.*"
Test: angle_end2end_tests --gtest_filter="*ESSL*ExtensionMacros*"
Test: Run com.gameloft.android.ANMP.GloftGGHM on Pixel 6
Bug: b/268091452
Change-Id: I2332a6cb964f54c47d23e2ef6b24e99a0b5c8202
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4304907
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Mike Schuchardt <mikes@lunarg.com>
|
|
8abf7153
|
2023-03-01T00:00:00
|
|
GL: Complete EXT_blend_func_extended
* Increased test threshold to 2 to
avoid failures on some GPUs
* Skipped desktop name bindings when
running on OpenGL ES
* Adjusted extension exposure conditions
to avoid failures on older platforms
* Adjusted webgl_FragData array size
Bug: angleproject:1085
Bug: angleproject:2833
Change-Id: Ic72ba42b024de276d3586446e03013e6063d15ba
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4307122
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.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>
|
|
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>
|
|
facd07ec
|
2023-02-14T14:11:00
|
|
Vulkan: Prune all statements without side effect
Bug: chromium:1417461
Bug: angleproject:6061
Change-Id: I6e2b74589021ee60c99448e43ee3eb7f06796ede
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4250278
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
b7505d98
|
2023-02-21T12:04:59
|
|
Metal: Fix crashes in EXT_b_f_e using temporaries
Implementation of EXT_blend_func_extended made all uses of gl_FragData,
with or without the extension, crash.
Function-local constexpr char arrays are temporaries.
Their address cannot be used to construct ImmutableStrings.
Use static arrays instead.
Fixed: angleproject:8031
Change-Id: I91d27f6204374613e19d45f6e04e425985d519f2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4272832
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
|
|
7586f8c8
|
2023-02-20T22:10:55
|
|
Translator: Validate correct op usage in nodes
Bug: angleproject:2733
Change-Id: Id555398cd6633ce38e1d4d900c7b739fd9990ad1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4274045
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
9d84ad7d
|
2023-02-14T10:47:54
|
|
Translator: Fix sampler-in-struct when struct is unused
Standalone symbols as statements are also pruned. For example in the
below:
```
x;
g();
```
The line that only contains `x;` is pruned. In particular, this was
causing a bug with sampler-in-struct processing where the code ASSERTs
that if an instance of the struct is visited during traversal, that
it's already processed as part of an index chain (like s.member), but
in the above situation that is not true.
Bug: chromium:1416152
Change-Id: I49e9a5826fc4d8c1fef1fa6f1d38c65f33f8acfd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4247584
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
8c2fcc70
|
2023-02-02T00:00:00
|
|
Metal: Implement EXT_blend_func_extended
Fixed: angleproject:8015
Change-Id: Ic92a8823869bf097349aee6241f6cfb86942c945
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4242128
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Kyle Piddington <kpiddington@apple.com>
|
|
b23bf47c
|
2023-01-25T18:50:40
|
|
Reland "Metal: rewrite default uniforms and uniform blocks"
Instead of rewriting uniforms in shaders to match std140 layout,
re-pack incoming uniform blocks' std140 packed variables to match
Metal's layout.
This change intorduces a new BlockLayoutEncoder for Metal types
The block encoder handles packing typically larger GL types (bools)
into smaller types, and adding support for more compressed matrix types.
Since we no longer need to do shader-time packing and unpacking of data
from std140 padded structs, complicated shader transformations have been
removed. This patch greatly reduces register pressure, especially when
working with shaders with arrays of previously expanded types. (Vec3's)
Reland: Fix an issue where the default uniform block's final size was not
aligned to the default uniform block's alignment requirements, causing
crashes with the debug layer enabled.
Bug: angleproject:7137
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3733524
Commit-Queue: Kyle Piddington <kpiddington@apple.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Change-Id: I89d3b817675486fde73b91b0be0f4c25986d4ba5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4209867
|
|
360cd0d1
|
2023-01-31T12:32:15
|
|
Include debug.h in various treeops headers
Avoids compile failure if the UNREACHABLE is used due to compile
flags.
Bug: angleproject:7987
Change-Id: I4655b345648b6b56faaa42030fb8997184c6b7e8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4205890
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
fb948319
|
2023-01-31T18:16:41
|
|
Revert "Metal: rewrite default uniforms and uniform blocks"
This reverts commit b8bfe6f6c04a6cf4fac81f0363ad23a0b92b22f2.
Reason for revert: potential cause of crashes/timeouts in crbug.com/1411755
Original change's description:
> Metal: rewrite default uniforms and uniform blocks
>
> Instead of rewriting uniforms in shaders to match std140 layout,
> re-pack incoming uniform blocks' std140 packed variables to match
> Metal's layout.
>
> This change intorduces a new BlockLayoutEncoder for Metal types
> The block encoder handles packing typically larger GL types (bools)
> into smaller types, and adding support for more compressed matrix types.
>
> Since we no longer need to do shader-time packing and unpacking of data
> from std140 padded structs, complicated shader transformations have been
> removed. This patch greatly reduces register pressure, especially when
> working with shaders with arrays of previously expanded types. (Vec3's)
>
> Bug: angleproject:7137
> Change-Id: Icd1da8c7a383f3354313a58618fc1bf6656726b4
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3733524
> Commit-Queue: Kyle Piddington <kpiddington@apple.com>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Reviewed-by: Kenneth Russell <kbr@chromium.org>
Bug: angleproject:7137
Bug: chromium:1411755
Change-Id: I1b6a62d7eb542c3e7ef4b84858ab2683abb66f8b
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4210448
Commit-Queue: Kenneth Russell <kbr@chromium.org>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
|
|
b8bfe6f6
|
2023-01-25T18:50:40
|
|
Metal: rewrite default uniforms and uniform blocks
Instead of rewriting uniforms in shaders to match std140 layout,
re-pack incoming uniform blocks' std140 packed variables to match
Metal's layout.
This change intorduces a new BlockLayoutEncoder for Metal types
The block encoder handles packing typically larger GL types (bools)
into smaller types, and adding support for more compressed matrix types.
Since we no longer need to do shader-time packing and unpacking of data
from std140 padded structs, complicated shader transformations have been
removed. This patch greatly reduces register pressure, especially when
working with shaders with arrays of previously expanded types. (Vec3's)
Bug: angleproject:7137
Change-Id: Icd1da8c7a383f3354313a58618fc1bf6656726b4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3733524
Commit-Queue: Kyle Piddington <kpiddington@apple.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
b96d1955
|
2023-01-20T16:06:34
|
|
Implement GL_ARM_shader_framebuffer_fetch
GL_ARM_shader_framebuffer_fetch allows fragment shaders to read
gl_LastFragColorARM. The extension is similar to
GL_EXT_shader_framebuffer_fetch, but is more limited in its
capabilities.
GL_ARM_shader_framebuffer_fetch was removed from HasFramebufferFetch()
because it acts differently from GL_EXT_shader_framebuffer_fetch in
significant enough ways that it should not be included in that
single-use function.
Tests: FramebufferFetchES31.*_ARM
Bug: b/242419750
Bug: angleproject:7882
Change-Id: Id3a25c8ee50ca3e2a4c30a2261f507b0b53511ec
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4083108
Commit-Queue: Sean Risser <srisser@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Geoff Lang <geofflang@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>
|
|
0133b6f1
|
2023-01-20T16:02:27
|
|
Add GL_ARM_shader_framebuffer_fetch builtins
Bug: b/242419750
Bug: angleproject:7882
Change-Id: I85582ad21e58e448b740789ec88f783c8b95ee01
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4189028
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Sean Risser <srisser@google.com>
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>
|
|
39450a0f
|
2023-01-19T18:29:45
|
|
Add memory qualifier decorations for uniform buffer members
During the parsing of GLSL shader code, we set
memory qualifier on each individual member
of the buffer struct:
http://go/cs-angle/src/compiler/translator/ParseContext.cpp;l=4957.
However, when generating the SPIR-V instructions,
we did not add the corresponding
OpMemberDecorate SPIR-V instructions.
This change adds the missing OpMemberDecorate
SPIR-V instructions for each field in
uniform buffer struct.
Bug: b/261634197
Change-Id: Id930e11f62a0e04e1b151b7d073cca6944474c87
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4179065
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
d0c936cf
|
2022-12-23T00:00:00
|
|
Check clip and cull distance storage qualifiers
When redeclared, these built-ins must be outputs in
vertex shaders and inputs in fragment shaders.
Bug: angleproject:4452
Change-Id: I811764009669ec358f05eb7a26297742baf2de63
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4120264
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
70b5620e
|
2023-01-10T17:16:41
|
|
Metal: skip out variable rewrite for array element references.
ANGLE_elem_ref already returns a reference which is incompatible with
the ANGLE_out and ANGLE_inout builtins. Skip the rewrite for this
builtin, similarly to swizzle_ref for which it was already skipped.
Add a small regression test which catches this bug.
Fixed: angleproject:7939
Change-Id: Iff8ead697220466ceb063ea2f8eebdb7d9e5896d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4152866
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Auto-Submit: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
bec220f6
|
2022-11-01T22:05:30
|
|
Translator: Fix operand component specifications
Before this change, TIntermConstantUnion::foldUnaryComponentWise always
used the first operand component for some operators. Use the operand
component corresponding to the result component.
Bug: angleproject:7801
Change-Id: I99a941a9eee0c10a4bcb3f515aa5cbf5accc0d52
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3996520
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Auto-Submit: 小田喜陽彦 <akihiko.odaki@gmail.com>
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
|
|
9d5d619c
|
2022-12-26T00:00:00
|
|
Adjust clip distance compiler state and validation
The internal uniform, which is used for passing GL state on
some platforms, could be removed by GL drivers when built-ins
are not accessed; this may lead to failed frontend assertions.
Refactored relevant compiler state and validation helpers to
avoid ambiguous usage.
Added ClipCullDistanceTest.Unused test.
Bug: angleproject:4452
Change-Id: I06fdf9a69e01afb2ad11fa12e0510d8b0421e4bc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4143839
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
2e086405
|
2022-12-23T00:00:00
|
|
Metal: Implement ANGLE_clip_cull_distance
Emulate clip distance varyings as they are not
available in Metal fragment shaders.
Drive-by: skip rewriting unused pipelines.
Bug: angleproject:7904
Change-Id: Iabc37ffe6e8c9e2d0fb34e508ae2512a200c8351
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4124235
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Kyle Piddington <kpiddington@apple.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
32175d8a
|
2023-01-04T09:53:02
|
|
Address Visual Studio 17.4 build issues
The `SpirvType` is used as a key in a hash map. When using Visual Studio
17.4, the build fails as `SpirvType`'s equality operator is not defined.
This declares `SpirvType`'s equality overload on its header file.
Bug: angleproject:7925
Change-Id: If5013df36eb9c33bba88eebe8752df7808b02ff5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4136932
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@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>
|
|
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>
|
|
0103213e
|
2022-12-05T00:00:00
|
|
GL: Support clip and cull distance redeclarations
* Fixed gl_PerVertex qualifier string.
* Updated ValidateClipCullDistanceTraverser to output
redeclared array sizes and maximum constant indices.
* Made DeclarePerVertexBlocks available for non-Vulkan
outputs.
* Updated DeclarePerVertexBlocks to remove gl_ClipDistance
and gl_CullDistance redeclarations.
* Enabled DeclarePerVertexBlocks for ESSL output when
gl_ClipDistance or gl_CullDistance are redeclared.
* Updated ESSL output to use 3.10 shading language version,
when the context has GL_EXT_clip_cull_distance enabled.
* Updated ESSL output to enable GL_EXT_shader_io_blocks
when gl_ClipDistance or gl_CullDistance are redeclared.
* Updated extension exposure conditions.
* Fixed typos in ParseContext.
Bug: angleproject:7763
Change-Id: Ib87368a1953ad546a407d634d8b00f71cf92c40c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4083705
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
0d7a4884
|
2022-11-30T14:33:12
|
|
Use string_view to compute custom string hash
C++17 supports std::hash<string_view>, which can be used to compute a
hash for the custom sh::TString class.
This eliminates the dependency on smhasher.
Bug: b/260426695
Change-Id: I2f4044fea4e44396a5d798436ec02da22a37bed7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4066987
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Nicolas Capens <nicolascapens@google.com>
|
|
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>
|
|
db67df60
|
2022-10-31T13:01:25
|
|
Metal texture cleanups
* Record the texture arguments' location in main() instead of inferring
their position based on an assumption that the texture pipeline comes
last.
* Fix one spot that was using mMainSamplerIndex that should have been
using mMainTextureIndex.
Bug: angleproject:7279
Change-Id: I53af0f016e52217c53d98b560011ffe958746cda
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3993362
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Chris Dalton <chris@rive.app>
|
|
7fefd230
|
2022-10-20T00:00:00
|
|
GL: Adjust APPLE_clip_distance exposure
Partial revert of
I458cad29c10b9d9193c5233e24bac53361ba104e
APPLE_clip_distance cannot be implemented on top of
EXT_clip_cull_distance because the former is defined both
for ES 2.0 and ES 3.0 while the latter is defined only for ES 3.0.
Although some ES 3.0+ drivers allow gl_ClipDistance built-in in
ESSL 1.00 shaders, this behavior is not specified so ANGLE should
not allow it.
Added independent ESSL 3.00 gl_ClipDistance and gl_MaxClipDistances
definitions.
Adjusted translator unit tests.
Bug: angleproject:4452
Change-Id: Ib582ce0ac7ccb65f0200ef1d17eaab0c83b228cf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3963745
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@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>
|
|
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>
|
|
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>
|
|
a55c5315
|
2022-11-02T10:43:08
|
|
translator: handle tesselation shaders when force-init outputs
Bug: angleproject:7804
Change-Id: Ie3565c1fa1a3563192eb2faf3830883f2788b77a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3998632
Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
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>
|
|
ac5a9c53
|
2022-10-26T00:00:00
|
|
Metal: Optimize ReplaceClipCullDistanceVariable
The intermediate ANGLEClipDistance variable is
not needed when generating MSL output directly.
Bug: angleproject:6291
Change-Id: Ie3d32a903645be002f21c44a6233f9cd0155605a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3981716
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Kyle Piddington <kpiddington@apple.com>
|
|
c97edf51
|
2022-10-24T00:00:00
|
|
Metal: Enable APPLE_clip_distance
Adjusted direct-to-Metal shader translator to support
gl_ClipDistance built-in.
Bug: angleproject:6291
Change-Id: Ice4cc3e4d7c131cbaac9726e845a5c1e59787e69
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3976428
Reviewed-by: Kyle Piddington <kpiddington@apple.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
adde4265
|
2022-10-19T23:33:48
|
|
Vulkan: Separate pipeline cache query and insertion
In preparation for VK_EXT_graphics_pipeline_library usage, the query and
insertion functions of the graphics pipeline cache are separated. This
will allow the implementation using VK_EXT_graphics_pipeline_library to
query the monolithic pipeline cache, and if a pipeline is not found,
create it through the pipeline library caches.
Bug: angleproject:7369
Change-Id: Iebf7669ae3ea95e180646198c4861cc59d67e580
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3963854
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
c6390143
|
2022-10-12T09:57:55
|
|
Vulkan: Make compatible with GCC
Resolves below warnings occurred with GCC build.
1) deperecated-copy
Overriding an assignment operator without a copy constructor
caused the deprecated-copy warnings.
2) unused-function
3) parenthesis
Warnings occurred due to missing parenthesis around
some logical expressions, add them to quiet the warnings.
4) unused variable
5) 'maybe-unused' attribute ignored
Introduces 'ANGLE_MAYBE_UNUSED_PRIVATE_FIELD' macro to avoid
'attribute ignored' warning which is only occurred
with GCC because GCC doesn't warn about 'unused non
static data member' whereas Clang has Wno-unused-private-field.
Signed-off-by: Sungyong Choi <sywow.choi@samsung.com>
Bug: angleproject:7764
Change-Id: I8e7410a5ed8cb9b8f8b3202073d779fea63d6b75
Reviewed-by: Jeff Vigil <j.vigil@samsung.com>
Reviewed-by: Mohan Maiya <m.maiya@samsung.com>
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3963830
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
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>
|
|
54d094fe
|
2022-05-23T13:05:46
|
|
angle: fix potential nullptr dereference
`checkIsScalarBool` immediately deref's `typedCond`, which may be NULL.
Prevent that.
Caught by the static analyzer:
>
device/generic/vulkan-cereal/third-party/angle/src/compiler/translator/ParseContext.cpp:893:9:
warning: Called C++ object pointer is null
[clang-analyzer-core.CallAndMessage]
Bug: b/206470603
Test: None
Change-Id: I2c055d637fb3ef254c0cebfae32bfbe17bf850ea
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3935460
Auto-Submit: Greg Schlomoff <gregschlom@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: 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>
|
|
b5514bb2
|
2022-09-21T20:47:00
|
|
Support pixel local storage on ES 3.0
Now that the application-facing API is implemented, we don't have to
rely on ES 3.1 anymore. Expose and test the extension on ES 3.0.
Bug: angleproject:7279
Change-Id: I5635620b9088201c20bafd283813092a329225d6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3915327
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Chris Dalton <chris@rive.app>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Chris Dalton <chris@rive.app>
|
|
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>
|
|
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>
|
|
583fd03e
|
2022-09-29T16:28:05
|
|
Translator: Fix ClampIndirectIndices vs. unsized arrays
A deepCopy() was missing from this code path, which led to an AST
validation error. However, clamping indices for unsized arrays is not
strictly correct. For example, an out of bounds write with robustness
is expected to be dropped, not overwrite the last element.
Since robustness already covers storage blocks, this clamping is no
longer done.
Bug: angleproject:7712
Change-Id: I96dd18ef47cd453f19391bdccbd4372c24854ade
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3924863
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
90201481
|
2022-09-30T17:37:15
|
|
Add missing include for std::function
A roll of libc++ in Dawn finds these issues.
Bug: dawn:1532
Change-Id: I5e3f8e89630b13e22b2942e10648761bed80920c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3925805
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@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>
|
|
0af9aa03
|
2022-08-30T22:24:21
|
|
use proper TPrecision when creating TType
Overview
Using "EbpUndefined" when create the inputAttachmentType(TType) causes
the maximum precision in SPIR-V. The maximum precision is not required
and may degrade performance. This CL makes the creation using a
proper precision based on declared variables.
Tests
===== confirm the precision in SPIRV =====
- Using genshin_impact trace to verify
- Using RenderDoc
- Executable Path: com.android.angle.test/#DefaultActivity
- Intent Argument: -e org.chromium.native_test.NativeTest.StdoutFile
/sdcard/chromium_tests_root/out.txt -e
org.chromium.native_test.NativeTest.CommandLineFlags
"--gtest_filter=TracePerfTest.Run/vulkan_genshin_impact"
- Capture frame 9 with the drivers built with and without CL.
- Magically found one vkCmdDrawIndexed(396, 1) that "TextureViewer" has
"ANGLEInputAttachment" as inputs. In "Pipeline State", the "FS" uses
shader module 9556
- then compare the shader module 9556 sources from the 2 drivers.
Confirmed the differences:
- GLSL (SPIRV-Cross): https://screenshot.googleplex.com/A8gWMGR2EmnZwHv.png
- SPIR-V (RenderDoc):
https://screenshot.googleplex.com/5yqKc4pWL3qLaEj.png
Bug: angleproject:7281
Change-Id: I86b315ddf057325638e58d5a0d7f8b203d8b74f8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3866573
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Solti Ho <solti@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
f39a9659
|
2022-09-09T10:09:58
|
|
Update flex/bison binaries.
These binaries were updated using update_flex_bison_binaries.py.
Please see instructions in tools/flex-bison/README.md.
flex is at version 2.6.4.
bison is at version 3.8.2.
Bug: None
Change-Id: Ia3189b678fc8ddacdf14bbfd3f4750f938d32ac3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3886807
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
fc51d98f
|
2022-08-11T03:29:16
|
|
Add Direct Composition offset to gl_FragCoord
DComp usually gives us an offset at (0, 0), but this is not always
the case. It is valid for DComp to give us an offset into a texture
atlas, for example with some video overlays. If we do have an offset,
gl_FragCoord must also be offset to point to the correct pixel in the
surface.
Bug: chromium:1269749
Change-Id: I3ca39860d176bcf9f1d520d781cfed2d1d1ad1dd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3827081
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Rafael Cintron <rafael.cintron@microsoft.com>
Reviewed-by: Rafael Cintron <rafael.cintron@microsoft.com>
|