|
f355e2b3
|
2025-04-15T18:58:25
|
|
Vulkan: Remove preferDriverUniformOverSpecConst
This was practically true for every vendor on Android (where rotation
matters). For Qualcomm, it was also true due to a bug in version
checking and didn't seem to be causing any concerns. Where pre-rotation
is supported, it is better to enable this feature to avoid excessive
pipeline creation.
This change removes the feature and makes sure ANGLE always uses
uniforms for rotation instead of spec consts. While technically this
may have an adverse effect on platforms that never need pre-rotation,
the ability is retained for all vendors since pre-rotation is finding
its way into more platforms and would likely eventually be needed
everywhere anyway.
Bug: angleproject:42265878
Bug: angleproject:42262166
Change-Id: I4b64c04da46db08cfdd44b60789b66d93d8e8b17
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6459025
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: mohan maiya <m.maiya@samsung.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
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>
|
|
02ae054c
|
2025-04-07T13:48:29
|
|
Translator: Fix init of inactive output variables
Bug: chromium:398401939
Change-Id: I0df494b945b8d0e805a62cf7645d06bf233f36ca
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6438495
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
362161fa
|
2025-03-28T11:22:46
|
|
Translator: Use unsized int for swizzle components
Bug: angleproject:349994211
Change-Id: Ibee2c664f159960cf9bf860496038bbb32ae355a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6408391
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Roman Lavrov <romanl@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
03de46ef
|
2025-02-20T00:00:00
|
|
Metal: Remove divMatrixScalar polyfills
MSL 2.3+ natively supports
matrix by scalar division.
Bug: angleproject:372169468
Change-Id: I2055ab8cfff01d8a52ddc0de4d5c3bc115271aed
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6289047
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
0cfea380
|
2025-01-15T10:46:54
|
|
Rename sh::TSpan as general purpose angle::Span
Span abstraction is useful for making buffer manipulation more
consistent. The commit makes the Span available to all code until
std::span can be used.
Bug: angleproject:389951202
Change-Id: Id0c6b54bb6e75d3cc4e85af854d9e61b66906752
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6170997
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
239ef680
|
2024-11-21T00:00:00
|
|
Metal: Support ANGLE_texture_multisample
* Added explicit multisample texture creation support
* Added support for SAMPLE_MASK frontend state
* Adjusted Metal backend caps
Fixed: angleproject:380475003
Change-Id: I90250e14da52869cb954b5a61d9c670e958a526c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6048958
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
bfa03a84
|
2024-11-19T13:32:31
|
|
Metal: Fix vec swizzles to bvecs on AMD
Constructing bvecs explicitly from swizzles would produce double
swizzles, and this would fail validation at validateNoSwizzleOfSwizzle.
Fix by folding the expression passed to coersion bvec constructor.
Cannot test more in isolation for now, since AddExplicitTypeCasts uses
Metal specific SymbolEnv.
Bug: angleproject:379758210
Change-Id: I175941747ef1c7acb8c88683c1188843a154aa8a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6034935
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
|
|
8e9dc1a6
|
2024-11-19T11:08:31
|
|
Validate anonymous struct names with namespace
Consider GLSL:
struct { vec4 e; } g;
struct sbbf { vec4 f; };
The struct name validation would fail if user chosen struct name would
clash with a symbol name that ANGLE internally gave to an anonymous
struct.
Fix by importing Name abstraction from MSL backend. A symbol name is
a pair (namespace, string).
Move operator<<(std::ostream &os, const ImmutableString &str)
to sh namespace because that is more natural for operator overloading
name resolution. MSVC works with this.
Bug: angleproject:379758201
Change-Id: Icc9b02aa8cb532e1d925e2fba4c45468f01b9144
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6035029
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
|
|
c4533e0a
|
2024-11-20T16:21:40
|
|
Translator: Remove the `double` base type
This is a desktop GL type, whose removal was left out of b16d105fc6.
Bug: angleproject:37093746
Change-Id: I185beef71099aafc3e350efc3dad019e2a72c0e6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6039436
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
eccfec93
|
2024-11-01T11:49:11
|
|
Metal: gl_ClipDistance fails validation
Failure is "Found child with two parents".
Result from reusing gl_ClipDistance in:
float gl_ClipDistance[8];
ClipDistance_0 = gl_ClipDistance[0];
...
Fix by creating new node for each symbol access.
Bug: angleproject:376718272
Change-Id: I7a866a10e389cc25d0cff4e6f18ae9c70ab376e0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5979781
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
|
|
bf29a047
|
2024-10-28T11:07:57
|
|
Metal: Remove uniform struct decl separation code
Remove uniform specific struct declaration separation and anonymous
struct naming code.
This is already done by SeparateDeclarations.
Removes code for NameEmbeddedUniformStructsMetal.
Does not remove SeparateStructFromUniformDeclarations code as it is
used for SPIRV.
Bug: angleproject:375937551
Change-Id: I943d96897d97b23fd0f54155dc215a4490f63937
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5972994
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
|
|
2156cd6e
|
2024-10-31T14:22:31
|
|
Metal: Fix rewritten array variables clashes
It was possible to generate MSL name clashes by declaring arrays,
such as in:
mat3 a[1]
mat2 a_0;
Complex GLSL outputs need to be linearized into primitive MSL types.
This would happen for struct outputs, arrays and matrices. For
these new MSL variables, the translator needs to invent new names
that match, generated from both VS and FS.
The clashes were due to the encoding scheme:
For arrays, the MSL vertex output variable was named with _0 suffix for
the array and _0 for the matrix row 0. In the example above, this
would create a clash since also non-array mat would be linearized
row-wise.
For structs, field `a.b` would be encoded as `a_b`. By selecting
different a and b, clashes could be generated trivially.
It is redundant to encode named semantics in the out variable names. The
only needed element is the discriminator which associates VS variables
to FS variables. Currently this is done by using the user-provided
root field name.
Fix by encoding only the root variable name to the MSL variable name.
The rest of the field discriminators are just a running number.
Each GLSL name `a` is unique. MSL names get fixed suffix form `a_X`,
and thus all of them are unique too.
This is a continuation of following fixes that turned out to be
incomplete:
6fe8a399dd Metal: Fix rewritten out variables with underscores
27423bffff Metal: Generate names for rewritten inputs
Bug: angleproject:376417347
Change-Id: I407db373d201b3e321c6d8414bafdbecfd82cf19
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5979774
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
|
|
0624b4fb
|
2024-10-31T20:59:20
|
|
Metal: Make ToposortStructs compile on c++17
Use .find() != .end() instead of .contains()
for std::unordered_map.
Bug: angleproject:375352601
Change-Id: I2e550354e1df3b390b74fdea29427fd3a0326fe8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5979775
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
b8d546b2
|
2024-10-30T15:40:58
|
|
Fix immutable string concats with ints
`BuildConcatenatedImmutableString("a", 10, "b")`
would construct "a\nb" because the implementation lacked int overloads
and ints would be promoted to chars implicitly.
Fix by implementing simpler way to calculate digits for numbers
and then add useful overloads. Remove
ImmutableStringBuilder::appendDecimal() since the code is already
expecting << for all other types, and the bug was due to this
expectation.
Bug: angleproject:376417347
Change-Id: Iea5e14a6e2fede068b704754b9203db794dd5bf0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5972641
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
|
|
4397ff2f
|
2024-10-25T16:55:30
|
|
Metal: SeparateCompoundStructDeclarations fails validation
Consider GLSL:
struct S { int i; } s;
s=s;
SeparateCompoundStructDeclarations would rewrite this to:
struct S { int i; };
S s';
s=s;
The interm rewrite would rewrite the specification and declaration of s,
but not the use sites. The use sites would use the old type, and thus
something that was not in the tree anymore. This would fail the
validation.
This kind of bug was previously fixed for SeparateDeclarations
in commit 18fa02bebf901dd8501de3176f6052ae4ce984be.
Fix by adding the logic to SeparateDeclarations, as it is already
doing almost the exact task, separating `struct S { ..} a, b`.
The separation is tested in GLSLTests.StructInShader and various
other draw tests. These pass with MSL, but these would also fail
validation if that was enabled.
Bug: angleproject:375523825
Change-Id: I1697103d0ba47616dbd3159f36f9e71cb2831c4b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5964899
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
898a1c12
|
2024-10-24T13:09:36
|
|
Metal: Fix ToposortStructs validation == failures
ToposortStructs would convert mat, vec, struct == to ANGLE_equals()
calls. However, the functions called were not in AST. This would cause
"Found node calling previously undeclared function
<validateFunctionCall>" validation error and ASSERT.
Mat, vec equality calls would use prelude ANGLE_equals implementations.
The MSL emit already does the conversion from == to ANGLE_equals for
these builtins.
For user-defined structs the logic would be:
- collect struct decls, structs, create equality functions
- toposort
- for each sorted struct:
- insert struct decl
- insert equality function
Move the equality function creation after the toposort:
- collect struct decls, structs
- toposort
- for each sorted struct:
- insert struct decl
- create equality function
- insert equality function
This way the sort ensures that nested struct equality functions can
refer to previously introduced equality functions.
Bug: angleproject:375352601
Change-Id: I59efed98bca6d99b198abc2b5c7577cf5d1d5d83
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5961281
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
|
|
4aa12e9e
|
2024-10-07T00:00:00
|
|
Metal: Remove macOS 11.0 availability checks
Chromium now requires at least macOS 11.0.
This also implies MSL 2.3 support.
Bug: angleproject:371829506
Change-Id: I6aaf4d9775bfe58747df28173d3931aa11fa8d25
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5912903
Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
af33337a
|
2024-10-07T00:00:00
|
|
Metal: Remove unused MSL helpers
These helpers are never emitted.
Bug: angleproject:372169468
Change-Id: I306164aaf4db1b7070e3e4a0599f0f02a1e29c7d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5912762
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
0f7371ae
|
2024-10-07T00:00:00
|
|
Metal: Remove ANGLE_tensor macro
Its replacement is never used.
Fixed: angleproject:372053408
Change-Id: I1d54efcc1a1ecac1d0c6dae5ff7524b501297fe0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5912904
Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
cd10ad46
|
2024-09-30T00:00:00
|
|
Metal: Rework allowSamplerCompareGradient feature
* AMD drivers may fail when a sample_compare function is
used with explicit derivatives. To avoid such failures,
the effective level is computed from the texture size,
passed derivatives, and texture coordinates, if needed.
The level value is then used for sample_compare instead
of the explicit derivatives.
* Apple2 GPUs do not support setting texture sampler compare state
via Metal API. As a result, all sample_compare functions including
those without LOD options do not work on Apple2 GPUs. This feature
was attempting to incorrectly emulate a subset of sample_compare
functions with a hard-coded compare state.
There are no plans to support shadow samplers on Apple2 GPUs,
as it would require non-trivial emulation, so this feature is
no longer relevant for that platform.
* Metal on macOS 10.15 only supports constant zero as
the level parameter for sample_compare functions.
Ignoring the passed derivatives and using zero LOD on old OS
versions is a better fallback than dropping the derivatives
altogether because many applications use the derivatives to
set the level to zero anyway.
Bug: angleproject:365066518
Bug: angleproject:368059227
Change-Id: I4028421b785ae49328b72658e0a9783275461779
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5903970
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
a921694b
|
2024-09-30T00:00:00
|
|
Metal: Support EXT_texture_shadow_lod
Bug: angleproject:365108862
Change-Id: Ieb0b53253c5d9091e0c74baccf808622d9578d5f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5907407
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
d550d96f
|
2024-09-30T00:00:00
|
|
Metal: Remove allowSamplerCompareLod feature
* Apple2 GPUs do not support setting texture sampler compare state
via Metal API. As a result, all sample_compare functions including
those without LOD options do not work on Apple2 GPUs. This feature
was attempting to incorrectly emulate a subset of sample_compare
functions with a hard-coded compare state.
There are no plans to support shadow samplers on Apple2 GPUs, as it
would require non-trivial emulation, so this feature is not needed.
* Metal on macOS 10.15 only supports constant zero as
the level parameter for sample_compare functions.
Ignoring the requested level and using zero on old OS versions is a
better fallback than dropping the parameter altogether because many
applications set the level to zero anyway.
Bug: angleproject:365066518
Bug: angleproject:368059227
Change-Id: I2cdc0bda5842842d62ad5663427da7f1f37bddda
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5907619
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
b16d105f
|
2024-10-03T10:25:32
|
|
Remove Desktop GL front-end support
For Desktop GL applications, please use Zink!
Bug: angleproject:370937467
Change-Id: Ie734634bb62a2e98c80e1b32d8b3d34624da3c04
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5905428
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
7ff7775b
|
2024-09-19T00:00:00
|
|
Metal: Align internal texture wrapper names
Used consistent internal names for
all ESSL 3.00 texture wrappers.
Bug: angleproject:368059227
Change-Id: I69c162d7b1557bb9a92cba902f4fdd5b4c30ee2d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5890621
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
371ab6d8
|
2024-09-19T00:00:00
|
|
Metal: Refactor texture wrappers
* Removed variadic macros.
* Removed invalid overloads.
* Added MSL compile guards to not fail shader
compilation on macOS 10.15.
Bug: angleproject:368059227
Change-Id: I5376b410670a50cf700f1c33823f43c89c10b876
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5893780
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
86872374
|
2024-09-19T00:00:00
|
|
Metal: Refactor textureGrad wrappers
* Removed variadic macros.
* Removed an invalid overload.
* Updated emitter to not output unused variants.
* Added MSL compile guards to not fail shader
compilation on macOS 10.15.
Bug: angleproject:368059227
Change-Id: I816b8b96b264d0ca943bca566987755460b3a72f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5893778
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
39b5f5fc
|
2024-09-19T00:00:00
|
|
Metal: Refactor textureLod wrappers
* Removed variadic macros.
* Removed an invalid overload.
* Updated emitter to not output unused variants.
* Added MSL compile guards to not fail shader
compilation on macOS 10.15.
Bug: angleproject:368059227
Change-Id: If15fcb0cb772e3ee2e2e1669f894fb8de4e76578
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5896390
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
80e5e611
|
2024-09-19T00:00:00
|
|
Metal: Refactor textureGradOffset wrappers
* Removed variadic macros.
* Removed invalid overloads.
* Updated emitter to not output unused variants.
* Added MSL compile guards to not fail shader
compilation on macOS 10.15.
Bug: angleproject:368059227
Change-Id: I47e0c04176bd9f4b6e6abcd266ae4c673135c93b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5893503
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
baf0c6b2
|
2024-09-19T00:00:00
|
|
Metal: Refactor texture[Lod]Offset wrappers
* Removed variadic macros.
* Removed invalid textureLodOffset overload.
* Split bias variants into separate wrappers.
* Updated emitter to not output unused variants.
Bug: angleproject:368059227
Change-Id: I983d84685479e5154f2ecfb15b525c1acbb9e280
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5890517
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
bc9c772d
|
2024-09-19T00:00:00
|
|
Metal: Refactor textureProj[Offset] wrappers
* Removed variadic macros.
* Split bias variants into separate wrappers.
* Updated emitter to not output unused variants.
Bug: angleproject:368059227
Change-Id: I6e08e92dfbc2378bfc4ccd7760dbe28f6bc64f27
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5893163
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
b4ec5850
|
2024-09-19T00:00:00
|
|
Metal: Refactor textureProj(Grad|Lod)[Offset] wrappers
* Removed variadic macros.
* Updated emitter to not output unused variants.
* Added MSL compile guards to not fail shader
compilation on macOS 10.15.
Bug: angleproject:368059227
Change-Id: If9d9479c056da6a76cff78c7c5b42101a0fcce1e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5893255
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
fe8c0390
|
2024-09-25T19:00:34
|
|
WGSL: Run SeparateCompoundStructDeclarations to name structs
Borrow SeparateCompoundStructDeclarations from the Metal backend to
separate struct definitions and name nameless structs.
Refactor id generation into a callback.
Bug: angleproject:42267100
Change-Id: I8ed6f13113a5d5e450d30ce187ce1df52e572000
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5889089
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Matthew Denton <mpdenton@chromium.org>
|
|
c2051a2d
|
2024-09-19T00:00:00
|
|
Metal: Refactor texelFetch[Offset] and textureSize wrappers
* Removed variadic macros from texelFetch[Offset]
and textureSize function wrappers.
* Updated emitter to not output unused variants.
* Aligned parameter types with GLSL and MSL specs.
Bug: angleproject:368059227
Change-Id: I7cbd6f60e70e0357aa5ca12d6adbe1064eed94fe
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5876034
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
95664631
|
2024-09-19T00:00:00
|
|
Metal: Fix OES_texture_3D texture function wrappers
* Removed redundant variadic macros and templates for
GL_OES_texture_3D functions.
* Added missing texture3D function variants.
* Emit texture3DProj variant with bias only when
the GLSL function call has that parameter.
Fixed all failures in KHR-GLES2.texture_3d.* tests.
Bug: angleproject:368059227
Change-Id: I9c0b209988563710824c38d0535997e351bbd6bd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5875725
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
5eb71dc1
|
2024-09-19T00:00:00
|
|
Metal: Simplify ESSL 1.00 texture function wrappers
* Removed redundant variadic macros and templates for
ESSL 1.00 and GL_EXT_shader_texture_lod functions.
* Emit texture2D, texture2DProj, and textureCube
variants with bias only when the GLSL function
call has that parameter.
Bug: angleproject:368059227
Change-Id: I1b60d0b874a08dcdd0a92585b2642336134236e3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5872916
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
e6c22c93
|
2024-09-19T00:00:00
|
|
Metal: Remove invalid ESSL 1.00 texture functions
* 1D textures are not supported in GLSL ES
* 2D textures do not support sampling with
3-component coordinates
* Metal backend does not support rectangle
texture type
* Cubemap textures do not support sampling
with projection
Bug: angleproject:368059227
Change-Id: Iec33f4293d995b9f244274338d444604ffd23249
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5872915
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
e13cc7df
|
2024-08-30T00:00:00
|
|
Metal: Add shadow sampler overloads for textureProj[Offset]
Added compile guards because sample_compare with
bias is not defined for older MSL versions.
Fixed: angleproject:354101888
Change-Id: I3972fabc9ebe7b7475343438272e57dcfed007f4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5828944
Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
7691cea7
|
2024-07-22T13:46:14
|
|
Vulkan: Remove seamful cubemap emulation
Practically, the Vulkan backend is never expected to run on ES2
hardware. It _may_ for WebGL, but seamful cubemap emulation was
disabled for webgl anyway.
Bug: angleproject:354729454
Change-Id: Iafa20fbdbe232c4df4c777b12e7698ef7a87cf24
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5730143
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
b7d4c5d1
|
2024-07-04T00:00:00
|
|
Metal: Disable fast math if isinf or isnan are used
Fixed: angleproject:42266714
Fixed: angleproject:42267063
Change-Id: Ibf6508ffc7d458a6b91b9218b2b488b6aa5b1001
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5678416
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
d193d51b
|
2024-06-17T22:46:08
|
|
Replace issue ids post migration to new issue tracker
This change replaces anglebug.com/NNNN links.
Bug: None
Change-Id: I8ac3aec8d2a8a844b3d7b99fc0a6b2be8da31761
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5637912
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
44d98861
|
2024-05-17T23:55:13
|
|
Assertion under IdGen::createNewName.
Remove code that tries to workaround double underscores symbols name
that would be introduced if user defined symbols contain underscore
prefix or suffix. To avoid unexpected clashes case like '_Data' and
'Data'.
Bug: b/341206126
Change-Id: I59e72e59bf483c84f5e33a21f7737f82c31c6896
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5545479
Auto-Submit: Erica Li <lerica@apple.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
6fe8a399
|
2024-04-22T18:11:30
|
|
Metal: Fix rewritten out variables with underscores
Fix compilation in case of output variables start with underscores.
Make name emission always emit MSL name ANGLE_{name}, so that GLSL `_e`
and `e` cannot clash. This regressed in angleproject:8558.
Bug: chromium:335744344
Change-Id: Ibae4dba4a24888acc1461582e69d48218ba11176
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5473412
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com>
|
|
3b650ffa
|
2024-03-19T09:53:06
|
|
Metal: Assert while using gl_VertexID as ivec
Metal [vertex_id] is uint while gl_VertexID is int. Replacing
gl_VertexID with gl_VertexIDMetal without rewrites of the expressions
would cause invalid expressions.
Fix by casting uint kgl_VertexIDMetal to int kgl_VertexID instead
of replacing variable during compile.
Bug: angleproject:8597
Change-Id: I76acdb2a0ab5982aa05181175925b3359068e901
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5376498
Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com>
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
0197826b
|
2024-03-22T14:42:34
|
|
Revert "Add conversion operator from ImmutableString to std::string"
This reverts commit 8c0dae388bccb00f11cd94d641d719cc68325826.
Reason for revert:
Breaks Android rolls:
external/angle/src/compiler/translator/ImmutableString.h:103:15: error: constexpr function's return type 'std::string' (aka 'basic_string<char, char_traits<char>, allocator<char>>') is not a literal type
103 | constexpr operator std::string() const { return std::string(data(), length()); }
| ^
external/libcxx/include/string:4332:64: note: 'basic_string<char>' is not literal because it is not an aggregate and has no constexpr constructors other than copy or move constructors
4332 | _LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_string<char>)
Original change's description:
> Add conversion operator from ImmutableString to std::string
>
> Also use the operator in a couple of places. Sometimes saves a strlen.
>
> Bug: angleproject:8614
> Change-Id: I429f3ac02af04b568ac7d1adf22ab65e5007fbda
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5372728
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
> Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
> Commit-Queue: Geoff Lang <geofflang@chromium.org>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Bug: angleproject:8614
Change-Id: I46963686f9506f7029e164250b1bf81f8ab2c519
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5388255
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Roman Lavrov <romanl@google.com>
|
|
8c0dae38
|
2024-03-15T16:09:04
|
|
Add conversion operator from ImmutableString to std::string
Also use the operator in a couple of places. Sometimes saves a strlen.
Bug: angleproject:8614
Change-Id: I429f3ac02af04b568ac7d1adf22ab65e5007fbda
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5372728
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
490ff869
|
2024-03-14T00:00:00
|
|
Always redeclare clip/cull distance built-ins
When clip or cull distance built-in arrays are implicitly
sized, various pruning passes may produce an inconsistent
AST state thus causing translation or linking failures.
Adjusted the dedicated validation pass to inject
an explicit declaration thus bypassing the issue.
Additional updates:
* Ensured that API clip distance state emulation is
applied when a variable is declared but not assigned
* Reverted previous clip/cull distance related changes to
TIntermBinary::hasSideEffects as they are redundant now
* Fixed failing AST validation for MSL varying emulation
* Aligned linking error messages with the specifications
* Updated tests and cleaned-up obsolete code
Fixed: angleproject:8591
Change-Id: Ic8cfaf37778b8532bbab32ab998d5350b85d67ef
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5372714
Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
18fa02be
|
2024-03-12T10:23:55
|
|
Rewrite exprs using separated decl variables
Rewrite expressions that use the rewritten struct declaration variables.
Declaration that specfies a struct and defines multiple variables will
get its variable declarations separated. The type of the variable
changes when a struct specifier is removed for the second and rest of
the variable declarations. The type of the variable changes also when a
anonymous struct is named.
The expressions that used the separated variables used the old struct as
their types.
Fix by using TIntermRebuild. Upon creating a new symbol node referencing
the new type, the rebuilder will instantiate also all the needed
intermediate nodes, which then get the correct struct type.
For consistency, fix the case of anonymous struct -> named struct
transform naming the variables similar to named struct separation.
Consider base case:
struct S { .. } a, b; -> struct S { .. } a; S b;
Compare against case:
struct { .. } a, b;
Before, inconsistency:
struct s1 { .. }; s1 a; s1 b;
After, fixed:
struct s1 { .. } a; s1 b;
Bug: angleproject:8590
Change-Id: Iffb0ef4441d6021e076b04485b808b26a7fa4dcb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5365201
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
f7de39b6
|
2024-03-09T10:27:47
|
|
Make IntermRebuild available for all backends
Move IntermRebuild from MSL to general translator
code.
Bug: angleproject:8590
Change-Id: Ie14651d09fbc320b27b94e48eb12d4ca8c79c68c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5358815
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
|
|
4e9fbb36
|
2024-03-06T15:06:07
|
|
Metal: Remove AccessField(.., ImmutableString)
The variant is incorrect, as ImmutableString does not describe the field
name completely. Names belong to different namespaces denoted by
SymbolType.
Bug: angleproject:8558
Change-Id: I8332f574dfa8439d02af119fd858a6f5acdec73d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5349698
Commit-Queue: Kenneth Russell <kbr@chromium.org>
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
27423bff
|
2024-03-05T17:57:24
|
|
Metal: Generate names for rewritten inputs
When expanding multi-component fields to multiple single-component
fields, use AngleInternal namespace for the new names. The names are
generated with form "someField_0" where _0 is the component index.
If these are not created in AngleInternal, caller is able to create
a name clash by introducing single-component field "someField_0".
Fixes an assert where the vec4(a_) + vec4(a) would assert on size
mismatch because the variable lookup for "a_" would find a rewritten
variable for the expanded matrix row of "a".
Bug: angleproject:8558
Change-Id: I64b7a755d7d534543fdb0f4c43008dd5c63f4aad
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5323060
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Kyle Piddington <kpiddington@apple.com>
|
|
197beb4d
|
2024-02-13T15:47:32
|
|
Metal: Crash if for loop body is optimized away
Loops might have their bodies optimized away.
For case like `for(;;) if(false);` the constant pruning happens at
parse phase. The else branch (e.e. no else branch, nullptr) would be
selected as the body.
Some code treated the body as optional, some code treated it as
required. Define it as required, and remove all conditional code
related to the loop body.
Bug: angleproject:8532
Change-Id: Ic35f1bf78e63ceb2cee7b96ba99e788efc282e6f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5291554
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
cb7d3cc2
|
2024-02-09T00:00:00
|
|
Treat clip/cull distance built-ins as having side effects
The sizes of these built-in arrays may be affected by
indexing them with constant integral expressions so
such operations should not be optimized out.
Fixed related failures during MSL and HLSL translation.
Fixed: angleproject:8525
Change-Id: I8460aa03b997ebc4142ee2d9f81eeefe13661336
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5285436
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
9318a143
|
2024-01-11T15:58:44
|
|
Add __asm__("") statements to loop bodies in MSL.
This prevents erasure of infinite loops during optimization passes.
Bug: chromium:1513738
Change-Id: I84a305b5e7fd824531d9e3ebae5496ddec030bac
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5191166
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
02aa605a
|
2024-01-25T00:00:00
|
|
Metal: Include only the <metal_stdlib> header
Removed the logic for generating individual include
macros as <metal_stdlib> provides all functions.
Fixed: angleproject:8504
Change-Id: I8c83ca8cc2443a4b64e4e022a3a694c7643be569
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5237274
Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
7d30cf9f
|
2024-01-22T00:00:00
|
|
Metal: Simplify sign function translation
Check whether a float or an integer variant
is needed and emit only what is necessary.
Fixed: angleproject:8502
Change-Id: I7061a5faa7cf09519b30e64ff90c42bbe392908a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5234350
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
600a1a80
|
2024-01-22T00:00:00
|
|
Metal: Clamp vector element index references
Ensured that vector elements passed by reference
are within the number of vector components.
Fixed: angleproject:8492
Change-Id: I2defbd8dfd418256ddb87f8ce1a74ac09a8a1b7b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5229957
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
2431d4df
|
2024-01-18T00:00:00
|
|
Metal: Skip array index clamp for constant values
Do not wrap constant array indices with
ANGLE_int_clamp when their values could
be statically validated.
Fixed: angleproject:8488
Change-Id: I3ad183475e1847cb7db1a07df3598c7d39767d7e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5220233
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
fc742305
|
2024-01-18T00:00:00
|
|
Metal: Simplify geometry functions translation
Check whether a vector or a scalar variant
is needed and emit only what is necessary.
Reduced the generated MSL for:
- atan/atan2
- length
- distance
- dot
- normalize
- faceforward
- reflect
- refract
Fixed: angleproject:8487
Fixed: angleproject:8489
Change-Id: I3be39e55997062136aae2782269a65c0c738d6cf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5217532
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
473dd389
|
2024-01-04T00:00:00
|
|
Metal: Fix out/inout parameter aliasing
Ensured that MSL-internal structs are included
in the parameter aliasing checks.
Fixed the following tests:
dEQP-GLES2.functional.shaders.function
.global_variable_aliasing_fragment
.global_variable_aliasing_vertex
dEQP-GLES3.functional.shaders.function
.global_variable_aliasing_fragment
.global_variable_aliasing_vertex
Fixed: angleproject:7145
Change-Id: Ia1e40e72a69e2f91b480ef5fbb75ff0f0a1a772a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5176988
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
a6b9a744
|
2023-12-21T00:00:00
|
|
Metal: Implement vertex attribute aliasing
When vertex attribute aliasing is supported, the
external vertex input struct is filled post-link
to account for potentially aliased attributes.
Fixed the following tests:
dEQP-GLES2.functional.attribute_location.bind_aliasing
.cond_float
.cond_vec2
.cond_vec3
.cond_vec4
.cond_mat2
.cond_mat2_offset_1
.cond_mat3
.cond_mat3_offset_1
.cond_mat4
.cond_mat4_offset_1
dEQP-GLES3.functional.attribute_location.bind_aliasing
.cond_float
.cond_vec2
.cond_vec3
.cond_vec4
.cond_mat2
.cond_mat2_offset_1
.cond_mat3
.cond_mat3_offset_1
.cond_mat4
.cond_mat4_offset_1
.max_cond_float
.max_cond_vec2
.max_cond_vec3
.max_cond_vec4
.max_cond_mat2
.max_cond_mat3
.max_cond_mat4
Fixed: angleproject:6297
Change-Id: Ifa6b82e0d7d4e12115ec19e342cfb82ab4389f5a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5148210
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
e172c104
|
2023-12-07T00:00:00
|
|
Metal: Fix temporary array initialization
Ensure that temporary array declarations have
literal initializers to bypass Metal compiler
issues.
Fixed the following tests on Apple silicon:
dEQP-GLES2.functional.shaders.indexing.tmp_array
.float_const_write_dynamic_loop_read_fragment
.float_const_write_dynamic_loop_read_vertex
.float_const_write_dynamic_read_fragment
.float_const_write_dynamic_read_vertex
Fixed: angleproject:7058
Change-Id: Id4a360b0a5a15da43ce4626c6dfe03556cc9d0f0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5115898
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
6d9f0aee
|
2023-11-30T00:00:00
|
|
Metal: Ensure helper invocations when derivatives are used
Set sample coverage mask to ensure that
fragment shader helper invocations are
performed when derivatives are used.
Fixed the following tests on Apple silicon:
dEQP-GLES2.functional.texture.mipmap
.2d.projected.nearest_linear_repeat
.2d.projected.linear_linear_repeat
.cube.projected.linear_nearest
.cube.projected.linear_linear
dEQP-GLES3.functional.texture.mipmap
.2d.projected.nearest_nearest_mirror
.2d.projected.linear_nearest_clamp
.2d.projected.linear_nearest_repeat
.2d.projected.linear_nearest_mirror
.2d.projected.nearest_linear_repeat
.2d.projected.linear_linear_clamp
.2d.projected.linear_linear_repeat
.3d.projected.nearest_nearest_mirror
.3d.projected.linear_nearest_clamp
.3d.projected.linear_nearest_repeat
.3d.projected.nearest_linear_clamp
.3d.projected.nearest_linear_mirror
.3d.projected.linear_linear_clamp
.3d.projected.linear_linear_repeat
Fixed: angleproject:8443
Fixed: angleproject:7023
Change-Id: I13fc52532b94de098dcf3e9f5f02d48a6c8913c7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5089131
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
5d70a41c
|
2023-11-30T00:00:00
|
|
Metal: Use a separate struct for last fragment data
Used a separate MSL struct type for reading from
framebuffer attachments to not fetch unnecessary
draw buffers and to be able to set a sample mask.
Removed TranslatorMSL::isSampleMaskAllowed()
Ensured that the lastFragmentOut variable is not
added when PLS does not use framebuffer fetch.
Fixed: angleproject:8442
Change-Id: Ia3320fc6063277479b5aa9b7fea34457465add75
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5079450
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
edcfab40
|
2023-11-23T00:00:00
|
|
Metal: Implement textureCubeGrad transformation for AGX
Wrapped all affected built-in function calls
with helpers that transform derivative values.
Fixed all *.texturegrad.* dEQP failures on Apple silicon.
Fixed: angleproject:7021
Fixed: angleproject:8433
Change-Id: I16b023840ad267ab72d31fde3cb0fa7048e5310c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5071254
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
d696b40f
|
2023-11-23T00:00:00
|
|
Metal: Use precise tanh for highp result types
When fast math is enabled, default tanh does not pass
dEQP precision tests. Explicitly request precise tanh
when the result type has high precision.
Bug: angleproject:8287
Change-Id: I07c8c2638b5f0a51feacbeadb78382152a95b03c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5057298
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
f441e3ee
|
2023-11-01T15:22:55
|
|
Metal: Fix missing mix(float,float,bool) overload
ANGLE has an ANGLE_mix_bool overload when the last parameter is a bool
but it is not needed when the other parameters are scalar.
Bug: chromium:1493243
Change-Id: I6ea904ed63055b49cf3eaded475eafa607ca5976
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4995278
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
59f7467a
|
2023-11-01T14:53:42
|
|
Metal: Add missing ScalarMatrix ops
Translations for the following built-ins were missing:
scalar - matrix
scalar + matrix
scalar / matrix
Bug: angleproject:7525
Change-Id: I5da85781829c195906cc689ffee55cb681f0337c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4995668
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
777a46bf
|
2023-09-29T00:00:00
|
|
Metal: Fix power function translation
GLSL definition of pow(x, y) excludes negative x, so
it must be translated to metal::powr, not metal::pow.
Fixed: angleproject:8366
Change-Id: Idaa66da73a149119e2a74beddc9a49e187d3e7af
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4901995
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
280e79e1
|
2023-08-10T14:08:00
|
|
Rescope globals only used in one function to function-local.
We can demote global variables when they are only used in one function.
This has performance implications on Metal.
Bug: angleproject:8311
Change-Id: Id666e6b167be771c14768cd73efa61fdacd897d4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4771215
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
8ba04f1c
|
2023-08-05T00:48:35
|
|
Metal: disable fastmath less often.
Stop disabling fastmath if atan is used in the shader. Application
developers will surely prefer the significant performance improvement
of the fastmath optimizations over corner-case differences in
precision.
Make disabling fastmath more precise: only if it's forcibly disabled
as a driver bug workaround, or if the shader uses invariance and
preserveInvariance is not available.
Suppress the test:
dEQP-GLES[23].functional.shaders.invariance.lowp.loop_2
which fails when fastmath is enabled for shaders using atan and
invariance.
Fixed: chromium:1320111
Change-Id: I6e33b14b1d05faedc15373f24af3e22a4074a35b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4754018
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Auto-Submit: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Geoff Lang <geofflang@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>
|