|
ab6dd5b2
|
2024-03-07T14:19:58
|
|
Avoid asserts when const folding binary ops on void variables
Fix asserts for example with / and % during constant folding when
the operands might be voids.
Bug: angleproject:8592
Change-Id: I22275642dbcdf9066940d3a94114e8daa5cbbe41
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5416376
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com>
|
|
a0fa06f6
|
2024-03-25T14:46:56
|
|
Translator: Disallow samplers in structs in interface blocks
As disallowed by the spec:
> Types and declarators are the same as for other uniform variable
> declarations outside blocks, with these exceptions:
>
> * opaque types are not allowed
Bug: chromium:328859176
Change-Id: Ib94977860102329e520e635c3757827c93ca2163
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5391986
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
e996d187
|
2024-03-19T13:29:24
|
|
Use TIntermRebuild for SeparateStructFromFunctionDeclarations
This now handles the case of nested function calls to functions that
define a struct in the return type all resolving to the correct
re-written function.
Bug: chromium:329271490
Change-Id: I43904e09ec9c284c1b51c09b2caaab253f7b29b9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5376613
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
96f44329
|
2024-03-25T14:16:10
|
|
Revert "Remove few redundant ImmutableString to std::string conversions"
This reverts commit ebb94b807f184f2d36cb0843c429667cd80e0675.
Reason for revert: Needs a different implementation of
std::string::size() to pass C++17 compilers.
Original change's description:
> Remove few redundant ImmutableString to std::string conversions
>
> Maybe removes few strlen calls.
>
> Bug: angleproject:8614
> Change-Id: I4fbb5f6abb8e8d21ff44a34975bab379127a0a11
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5372715
> Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
> Commit-Queue: Geoff Lang <geofflang@chromium.org>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Bug: angleproject:8614
Change-Id: I1a635b74674a2e1b635972bb4372c43340527a2f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5391900
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@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>
|
|
ebb94b80
|
2024-03-16T09:11:51
|
|
Remove few redundant ImmutableString to std::string conversions
Maybe removes few strlen calls.
Bug: angleproject:8614
Change-Id: I4fbb5f6abb8e8d21ff44a34975bab379127a0a11
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5372715
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@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>
|
|
c5f7bbeb
|
2024-03-15T19:03:24
|
|
Make ImmutableString::beginsWith constexpr
Maybe reduces strlen calls.
Bug: angleproject:8614
Change-Id: Ic63d019c185db7acde2c2645c499b5408ec23b78
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5372122
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
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>
|
|
11a2d27f
|
2024-03-08T14:26:56
|
|
Check array index against unsigned array size
Fix an assert during GLSL parsing when a very
large array (~1U) type is indexed.
Bug: angleproject:8596
Change-Id: I219ac5c8f3fa58aa4c7d679eade6f32b59eb1103
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5352653
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
|
|
90ae6cbe
|
2024-03-07T15:51:41
|
|
Avoid assert at main prototype when monomorphizing
Use the same condition as for main function definition.
Bug: angleproject:8594
Change-Id: I66e4af61015607660437745042976fdc577308ca
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5352247
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
|
|
0f110098
|
2024-03-08T12:40:09
|
|
Avoid assert with multiple memory qualifiers
Add missing qualifier strings.
Bug: angleproject:8593
Change-Id: I484571c33effd85d52712b4876f6a3a5c73d8fde
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5352255
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
39f29f65
|
2024-03-05T21:42:32
|
|
Ensure unary math op parse to an node on error
Return the error node for ops like radians().
The math op parse can fail in multiple ways.
Fixed: angleproject:8583
Change-Id: Ief7e150dffefe711f567d95c62d1023fc7fa1c91
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5344716
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
|
|
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>
|
|
51702d79
|
2024-03-06T14:05:45
|
|
Make 2024-03-05 changes compile with clang 15
WebKit compiles with this. Constructing with function style cast
constructor is not supported when the type does not have a constructor.
Use initializer list construction with explicit name instead. For
MacroExpander declare a constructor.
Fixed: angleproject:8585
Change-Id: I17747a277ceba62f300fcdc88cd058e04b3c3938
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5349697
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
47cd0529
|
2024-03-04T15:19:30
|
|
Fix assert invoking #line during macro invocation
Fix an assert with preprocessor content of form:
f
#line f()
(x
If the #line macro function invocation forms an invalid line number, the
line directive parsing will stop and unwind the macro context stack.
However, it did not do the state management related to unwinding the
context: it left the f function marked as "disabled".
Fix by managing the state in the unwind scenario.
Also make MacroContext be allocated from the context stack vector
instead of heap.
Also fix all the define tests to expect a version directive call.
Fixed: angleproject:8578
Change-Id: I31dbeb911b07779eebe28bf58f13cec8876aa982
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5342495
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@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>
|
|
0ad73958
|
2024-03-04T11:17:36
|
|
Deduplicate and fix ConstStrLen implementations
Move multiple implementations to one angle::ConstStrLen. Some of the
implementations were partially incorrect, too.
Fixed: angleproject:8569
Change-Id: I760c173a5b75932f4ae2fabcc4916329247d3cb5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5332384
Commit-Queue: Kenneth Russell <kbr@chromium.org>
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
3fa8d578
|
2024-03-04T10:06:57
|
|
Make appendDecimal use the last char of the buffer
ImmutableStringBuilder(1) means 1 char usable payload and \0.
This this should fit appendDecimal(1) but did not. Fix the off by one
error calling snprintf.
Also:
* removes const & from uint32_t argument
* removes const & from operator<<, to stay consistent
* Removes a redundant static_cast
* Implements operator<< const char* with potentially better
operator<<(const ImmutableString&) (may get compile time strlen)
Fixed: angleproject:8567
Change-Id: Ibfff59f6846add0498d06e963266e50ec19baf80
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5332381
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
|
|
871a309c
|
2024-03-04T14:43:10
|
|
Fix layout(index=) parse assert on es 100 shaders
Remove invalid assert about layout index qualifier being present only if
EXT_blend_func_extended is present.
The layout qualifier gets parsed to support EXT_shader_framebuffer_fetch
in ES 100 shaders to support
"layout(incoherent) mediump vec4 gl_FragData[gl_MaxDrawBuffers]"
Fixed: angleproject:8570
Change-Id: I0d0d99bcc882a0befd97c2510dec4a8ccf1690bd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5340249
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
|
|
5a4bfd61
|
2024-01-12T17:15:39
|
|
Metal: Separate struct definition from function return
The EmitMetal pass in shader translator does not handle writing the
defintion of a structure that is declared in the return type of a
function, such as:
struct Foo { float val; } foo() {
...
}
This change adds a new pass, SeparateStructFromFunctionDeclarations, to
separate the definition and declaration of struct variables in function
prototypes into two statements, such as:
struct Foo { float val; } foo();
struct Bar { int val; } bar() { ... }
void main() { ... }
Foo foo() { ... }
into:
struct Foo { float val; };
Foo foo();
struct Bar { int val; };
Bar bar() { ... }
void main() { ... }
Foo foo() { ... }
Fixed: angleproject:8302
Change-Id: Id8b6ba256d3c8375dd889facd70e4715261c1ca3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5191644
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
2b1ef00a
|
2024-02-20T15:45:34
|
|
Metal: Fix validation for anonymous struct arrays
Fix validation failure for accessing an element of
array of anonymous struct.
SeparateCompoundStructDeclarations would create
new Structures to name unnamed structures.
The Structure instance of the array index accessor
node was incorrect, it was the old Structure.
Use same pattern as in
SeparateStructFromUniformDeclarations.
Bug: angleproject:8551
Change-Id: I04684e5ad99cc2b9038a0cc21c7eefcc6cf247df
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5310074
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
|
|
9d453e57
|
2024-02-16T22:28:18
|
|
Fix ASSERT in non-global precise var decls
Precise was treated as invariant. Precise can be
declared for non-global variables.
Bug: angleproject:8550
Change-Id: Ia0d00d67d0d1504b78294ee2256785fe3da3e399
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5300976
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
40dfb3a8
|
2024-02-12T00:00:00
|
|
Fix length() translation for clip/cull distance arrays
* Fixed a failing assertion when
the arrays are resized.
* Added a compile error for length()
when the arrays are unsized.
Fixed: angleproject:8527
Change-Id: I6379336c546b008095f0875e5b5b4e8e0e5ba3e6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5293914
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
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>
|
|
9d344b5c
|
2024-02-13T17:54:12
|
|
Uniform block reference in constuctors crash
Passing uniform block instance name to a built-in constructor would
cause type confusion. Block this by failing to parse.
Bug: angleproject:8533
Change-Id: I5a676b41e2f3d766ece4ed472debc1c874753293
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5290897
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
|
|
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>
|
|
ab71d751
|
2024-02-07T14:25:32
|
|
Fix an assert on multidim array constructors
Fail early instead of asserting when trying to parse a
multidimensional array constructor call with unsized
argument array argument.
int A[];
int B[int[][](A)];
Bug: angleproject:8519
Change-Id: Iee2c70318eebd2def57ffab8db709d1076692922
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5272434
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
3fdf576a
|
2024-01-26T14:37:42
|
|
Vulkan: Workaround Nvidia driver bug with OpSelect
Bug: angleproject:8503
Change-Id: I4bd2580056df3d970a1316d0dbeaaad7590aa947
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5237873
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
|
|
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>
|
|
c6fbf93d
|
2024-01-19T09:57:12
|
|
Vulkan: Fix input attachments leaking into uniform list
To communicate the existence of input attachments added to the shader,
the translator was adding `ShaderVariable`s for each to the list of
uniforms exported from the shader. This was incorrect, as this list is
visible to the application through `glGetActiveUniform`. Additionally,
this was unnecessarily causing these uniforms to go through program
link.
Reserving SPIR-V ids for these uniforms, all that is needed from the
translator is the mere existence of these input attachments. This
change removes the addition of uniforms, and instead exports a bitset.
Elsewhere, that bitset is consulted and reserved SPIR-V ids are used.
Bug: b/320563594
Bug: angleproject:5792
Change-Id: Id93846cbc3996248f391fd2d5a65af1e48d6d46e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5215089
Reviewed-by: mohan maiya <m.maiya@samsung.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: 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>
|
|
175514c6
|
2024-01-12T14:43:33
|
|
Translator: Bundle metadata flags coming out of the translator
In preparation for a follow up change that adds more such metadata.
Bundling them together makes it convenient to retrieve, save and load
all those flags.
Bug: b/320563594
Change-Id: I4f95b32acfb0842cc5d9e72c1788a827bee2c760
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5209450
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
950d054a
|
2024-01-11T00:00:00
|
|
Metal: Do not defer global const initializers
Since MSL supports constant global variables, they should
not be included in the DeferGlobalInitializers operation.
This reduces temporary register usage and thus makes shaders
that use large const arrays more compatible with Apple GPUs.
Fixed: angleproject:8479
Change-Id: If1cd17a0a194173e60e6b5152297054fc384c0b2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5189165
Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Geoff Lang <geofflang@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>
|
|
3c8501b3
|
2023-12-21T00:00:00
|
|
Metal: Handle embedded uniform struct arrays
Preserve arrayness type information
when replacing uniform declarations.
Fixed: angleproject:6525
Change-Id: I09ea79ffa5bf74e06503985d4f90ccbe0bf25570
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5150729
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>
|
|
f8fae1ff
|
2023-12-08T13:20:36
|
|
Validate Uniform variable limits with each iteration
VariablePacker would loop over all variables and sum up the total
row counts before validating. Each variable can take hundreds of rows
so it is possible to overflow the counters before validating them.
Validate the limits with each iteration and early-out when the limits
are exceeded.
https://bugzilla.mozilla.org/show_bug.cgi?id=1864587
Bug: chromium:1864587
Change-Id: Ic235ada1516a0d5a9948d82b22f6316a037c09ca
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5106408
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
dc4b1acd
|
2023-11-30T15:42:32
|
|
Translator: Limit private variable size to 64KB
This is indirectly fixing an issue where passing large arrays in SPIR-V
such that an internal cast is needed (such as array inside interface
block copied to local varaible) causes an overflow of the instruction
length limit (in the absence of OpCopyLogical).
By limiting the size of private variables to 32KB, this limitation is
indirectly enforced. It was observed that all the test shaders added in
this CL fail on the Nvidia OpenGL drivers, so such a limit seems to be
reasonble.
Bug: chromium:1505009
Change-Id: Ia36134b2bf8501a5b875814db3566be28b183e0f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5077408
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Geoff Lang <geofflang@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>
|
|
a1cd2198
|
2023-12-04T11:42:13
|
|
Fix yuv_2_rgb and rgb_2_yuv GLSL function emulation
The color conversions themselves were already correct, but Y was
assumed to be full range, and u,v assumed to be centered on zero.
This change folds the range expansion and chroma bias into the
transforms. In order to accomplish the bias the matrices are extended to
be mat4x3, and the provided color value is extended to a vec4 with w=1.
Various other methods are possible (and potentially more efficient if
the standard is not a constant) but just folding everything into the
matrices is the most straightforward.
Test: atest CtsNativeHardwareTestCases
Bug: b/308437613
Change-Id: I33f797450c9ad9e758100eb8530d86548939f4ed
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5082558
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
90767546
|
2023-12-01T12:27:15
|
|
Vulkan: Add test for __samplerExternal2DY2YEXT then swizzle
Added a correctness test
SourceYUVTextureTargetExternalRGBSampleYUVSampleWithSwizzle for applying
swizzle after sampler.
Also removed some bug workaround for VVL and drivers since they are
fixed now.
Bug: b/309480316
Change-Id: If82b2251745a96335b535c67b6e0c0847268b25b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5080497
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: mohan maiya <m.maiya@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
caa5e4ea
|
2023-11-30T14:12:42
|
|
Translator: Fail compilation if too many struct fields
If there are too many struct fields, SPIR-V cannot be produced (as it
has a hard limit of 16383 fields). The Nvidia GL driver has also been
observed to fail when there are too many fields.
Bug: chromium:1505009
Change-Id: If9b01716c1cab35a6e537da64421e29fe0eda91e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5074629
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Roman Lavrov <romanl@google.com>
|
|
6df603ed
|
2023-11-30T13:53:00
|
|
Translator: Optimize field-name-collision check
As each field of the struct was encountered, its name was linearly
checked against previously added fields. That's O(n^2).
The name collision check is now moved to when the struct is completely
defined, and is done with an unordered_map.
Bug: chromium:1505009
Change-Id: If28d738254a541450912eba4ed168424dad9d8be
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5077407
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Roman Lavrov <romanl@google.com>
|
|
75e13e68
|
2023-11-29T22:19:46
|
|
Metal should not inline non-const global initialisers
Bug: angleproject:8403
Change-Id: Iaa6126d7043931a16104ea84c5f7e737017dabc3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5076256
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Sergey Kataev <sergeyka@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
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>
|
|
e8923a62
|
2023-11-14T00:00:00
|
|
Clamp gl_PointSize to both bounds
Ensure that point size values smaller than
ALIASED_POINT_SIZE_RANGE[0] are clamped as
the spec requires.
Fixed: angleproject:8416
Change-Id: I3cfd2b1d3c1f34788d062ff4ca4b809ce3b5aaa9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5033198
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
4c500944
|
2023-11-08T16:16:23
|
|
Translator: Mark most builtins as not having side effect
This helps the translator eliminate stray uses of these builtins.
Bug: angleproject:6061
Change-Id: Ic0e72bddad5730fb1f906a4c8e53191ab3318d29
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5012988
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
6eeb11bd
|
2023-11-08T15:54:13
|
|
Translator: Unmark dFdx, dFdx and fwidth as having side effect
These were marked as having a side effect in
https://chromium-review.googlesource.com/c/angle/angle/+/924155, but
it's unknown why. This change separately unmarks them as having a side
effect, so if they are there to prevent a driver bug or such things, it
can be isolated to this change.
Bug: angleproject:6061
Change-Id: I8694ffdbb0142d330c8e2d73562f8004158023b3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5012986
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
aea43399
|
2022-08-29T10:44:41
|
|
Mark texture2D() functions as not having side effects.
This should allow the shader translator to remove unused variables
and cut out sampling instructions in apps like T-Rex.
Bug: angleproject:6061
Change-Id: If543c9c737cdbcfdea1433876cd425e7335e5297
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3862383
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
32f209b8
|
2023-11-03T09:57:00
|
|
Vulkan: Fix __samplerExternal2DY2YEXTtnd combined with swizzle
Pixel camera app is hitting assertion due to swizzle applied to swizzle.
This CL adds ReswizzleYUVOpsTraverser::visitSwizzle() method and detects
there is a swizzle on YUV sampler and apply YUV swizzle first and then
original swizzle and then fold two swizzle into one.
This CL added a test to reproduce the bug.
This CL also makes ShCompileOptions in ShaderExtensionTest class a class
member instead of local variable so that subclass can modify for testing
or debugging purpose.
Bug: b/309480316
Change-Id: I72353fbad8dcacd77ca17a9f44e84485f4656a34
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5001614
Reviewed-by: Chris Forbes <chrisforbes@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
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>
|
|
acb0ae09
|
2023-10-27T13:38:09
|
|
Vulkan: Swizzle YUV output from GL component order to vulkan
Since OpenGL and vulkan has different YUV component ordering, we need to
swizzle the component form GL to vulkan when we write YUV data to output
variable. The computation in shader will still carry out in OpenGL
order. This CL swizzles component for the YUV output variable.
Bug: b/223456677
Change-Id: Ie34bbc723bf3723ac65f7931aeab086c92610271
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4985622
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Chris Forbes <chrisforbes@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
3b555e8d
|
2023-10-26T00:00:00
|
|
GL: Add emulateClipOrigin workaround
Older Adreno drivers apply GL_CLIP_ORIGIN_EXT
to the framebuffer instead of the clip space,
thus causing various side-effects.
Used a uniform to emulate the correct behavior.
Drive-by:
* Fixed a typo in ClipControlTest.OriginFrontFacing
Fixed: angleproject:8392
Change-Id: I2f7145977ab0e11dc88e8dbfec2cd32c4c31f830
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4987326
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
9e5f5188
|
2023-10-24T18:43:12
|
|
Reswizzle results of YUV sampling operations
Change-Id: Id6eee9e0d9e2b80d48c80f27bc8e670a5621d263
Test: ImageTestES3.* 24 -> 15 failures
Bug: b/223456677
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4970337
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
3892ac14
|
2023-10-12T13:35:33
|
|
Do not flush normal float constants to zero.
It's ok to flush denormalized constants to zero.
It's not ok to flush perfectly valid normal float constants >= FLT_MIN
to zero.
Two problems:
1) Values when parsed as doubles with a value less than FLT_MIN are
being flushed to zero. This is incorrect when the comparison is done
in double, since some values below FLT_MIN in double are equal to
FLT_MIN when cast to float. The fix is to perform the comparison in
float.
2) Values with a decimal exponent less than FLT_MIN_10_EXP are being
flushed to zero. FLT_MIN_10_EXP is -37 but FLT_MIN is 1.1754943E-38.
10^-37 may be the "minimum negative integer such that 10 raised to
that power is a normalized float", but being constrained to powers of
ten it's above FLT_MIN (which is 2^-126). Since this comparison is
done before #1 above, it's only present (AFAIK) to ensure that the
exponent will not make the pow() function overflow. Comparing against
-38 (FLT_MIN_10_EXP - 1) instead will do the trick.
Bug: angleproject:8373, dawn:2077
Change-Id: I1ddf410c2caa9f0d1ba3529ace693dcd326a2cb3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4936714
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Stephen White <senorblanco@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>
|
|
1cab871c
|
2023-09-27T22:11:25
|
|
GL: Fix ScalarizeVecAndMatConstructorArgs vs precision
If the constructor being expanded has no precision (such as if it's
entirely made up of constants and bools), the workaround didn't produce
a precision for the helper function, leading to GLES compilation errors.
Bug: chromium:1420130
Bug: angleproject:8361
Change-Id: I0de312dfd1bfbf45317db4fb88d685a843052817
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4898697
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
49c4d87a
|
2023-08-21T00:00:00
|
|
Apply fragment color broadcasting to secondary outputs
When GL_EXT_draw_buffers is enabled,
gl_FragColor is replaced with gl_FragData.
Apply the same transformation to gl_SecondaryFragColorEXT
if it is statically used to avoid compiler failures.
Bug: angleproject:1085
Change-Id: If154cd20a8e14a92da520847a9c4508971a45fef
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4900641
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
f5842350
|
2023-08-21T00:00:00
|
|
Vulkan: Flatten secondary fragment output arrays
Added a SPIR-V transformation that makes them private
and copies their values into regular fragment outputs.
Fixed: angleproject:8336
Change-Id: Ide62dd183426e0de70fd4ac6d2b8c6a4b4b33994
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4875327
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
0510fb49
|
2023-09-11T18:11:50
|
|
[code health] Use more standard enumerator names
Use more standard enumerator names in ANGLE
https://google.github.io/styleguide/cppguide.html#Enumerator_Names
There are still some non-standard enumerator names in the //cc
directory, which will be modified in subsequent patches.
Bug: chromium:1480233
Change-Id: I96d534f0eb74a8583237c754f6ef867bd1b33d4a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4853030
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Ho Cheung <uioptt24@gmail.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
57761d85
|
2023-09-08T10:02:48
|
|
Attempt to fix the MSan failure on chromium bots
struct BlockMemberInfo was not tightly packed. This CL makes it packed.
Bug: b/296433003
Change-Id: I38da3e463cf304028236e651b6b4e334ce9220e2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4851063
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
9666d4d5
|
2023-09-01T00:00:00
|
|
Disallow dynamic indexing of SecondaryFragData in WebGL 2.0
WebGL 2.0 disallows dynamic indexing
of gl_FragData in ESSL 1.00 shaders.
By extension, this rule should also
apply to gl_SecondaryFragDataEXT.
Bug: angleproject:1085
Change-Id: I5859356f72d25c4ffd1db92466dffc6eeacb6a64
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4843628
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
9624db05
|
2023-08-21T00:00:00
|
|
Validate missing fragment outputs for dual-source blending
* A secondary fragment output must be declared when
dual-source blending is enabled in WebGL contexts.
* Omitting locations for multiple fragment
outputs is not allowed in WebGL contexts.
Bug: angleproject:1085
Change-Id: I57febdc02c9ccc571971a81b6671869f19b0aa96
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4834672
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
33472e77
|
2023-08-30T09:45:43
|
|
D3D11: Fix the compilation of vertex shader with storage image
This patch adds the missing declaration of storage images in vertex
shader. With this patch the vertex shaders with storage image
declarations can be correctly compiled on D3D11 backends.
Bug: angleproject:7121
Change-Id: I32b8c632df83a64a34318e9668e9aa8d376cca56
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4819792
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
1ab5d01d
|
2023-08-29T13:31:07
|
|
Metal: Fix dropped out arguments from functions with many args.
RewriteOutArgs has an early-exit if it spots a potentially aliased
arg. It's also responsible for marking out args as references,
which caused an issue in Google Earth.
Removing the early-exit fixes both issues.
Bug: chromium:1474736
Change-Id: Ib68dd3f3e2e0a1e773e4e09edcdfa3a4bdfc1ef2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4823006
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
558df6f1
|
2023-08-21T00:00:00
|
|
Fix fragment output variables validation
* Reject fragment shaders that assign
out-of-range fragment locations
* Reject fragment shaders that assign
output variables of different types
to the same location
* Apply similar validation for fragment
outputs bound via API calls
* Ensure that masks for active output
variables and draw buffer types are
set after processing all fragment
output bindings
Bug: angleproject:1085
Change-Id: If29cbb58be1981279fc97c67739fe4136b0cdc98
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4813656
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
711db275
|
2023-08-23T11:06:42
|
|
Translator: remove usage of contains()
It's not available pre-C++20
Bug: angleproject:8311
Change-Id: I41940b5f8e6a90bc0224852aefe54643f2be9cb5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4806924
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@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>
|
|
59f158c1
|
2023-08-10T00:00:00
|
|
GL: Add explicitFragmentLocations workaround
Some drivers produce incorrect results when
a fragment output has an implicit location
and gl_SampleMask[] is written to.
Fixed: angleproject:8308
Change-Id: I615952ef61b1cb611984ec7defb189d89ab3281c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4777702
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
4a195ce0
|
2023-08-10T11:28:31
|
|
Vulkan: Fix SPIR-V id assignment to user-defined webgl_* names
The code was incorrectly assuming that webgl_* names are only from ANGLE
variables. An explicit check that the symbols are AngleInternal was
missing.
Bug: b/287166117
Change-Id: Ib8140cfabd74000492d12c11163f318a9ec3b98f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4770236
Commit-Queue: Solti Ho <solti@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Solti Ho <solti@google.com>
|
|
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>
|
|
335c6b86
|
2023-08-02T00:00:00
|
|
D3D11: Do not specialize HLSL for multisampled rendering
Pass the required state as a driver uniform instead of
triggering fragment shader recompilation at draw calls.
Bug: angleproject:8097
Bug: angleproject:8131
Fixed: chromium:1468993
Change-Id: I15825c0522b29d48eb2c3b341ba96f139ef26460
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4742579
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
bebb83d9
|
2023-07-14T12:30:15
|
|
Translator: Limit variable sizes vs uint overflow
Bug: chromium:1464680
Change-Id: I90e204db1ce57c87ed5fe19912e4c157cee18a90
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4685236
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
05ea1147
|
2023-07-14T16:49:24
|
|
Vulkan: Bugfix in gl_FragData array redeclaration
Both OpenGL ES and Vulkan spec allows implementations to limit
the number of output attachments when dual-source blending is enabled.
Account for this limit when setting gl_FragData array length by
re-declaring the gl_FragData array size to match
maxFragmentDualSrcAttachments value.
Bug: angleproject:5537
Test: EXTBlendFuncExtendedDrawTest.FragData/ES2_Vulkan
Change-Id: I5a462344f4c4faf850f56e9c5d4c392370d3d010
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4688396
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
|
|
5032f08b
|
2023-07-13T15:23:49
|
|
Translator: Unconditionally limit variable sizes
... instead of just for WebGL. This is to avoid hitting driver bugs
that were prevented with this check for WebGL on a compromised renderer
that can create non-WebGL contexts.
Bug: chromium:1464682
Change-Id: I47a9d9690bd1ca9d701391fb7d70932f2dbe7334
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4685307
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: 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>
|
|
f0653461
|
2023-07-11T10:13:09
|
|
Translator: Fix metal-only build
Bug: angleproject:6306
Change-Id: I068dc93528b7583ddc84836ac73b52adcde890f3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4677722
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
f5ad056b
|
2023-07-10T22:13:34
|
|
GL: Fix ScalarizeVecAndMatConstructorArgs and move to gl/
This transformation was buggy and was disabled. Originally, it was
intended to be used everywhere. It is now needed for a GL driver
workaround.
This change reimplements this transformation and uses it as a GL
workaround.
Bug: chromium:1420130
Change-Id: I42d63fa5844bcf683ac41e61925aa637e033ca2e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4676634
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
0312c76f
|
2023-07-10T15:12:52
|
|
Translator: Move metal-only transformation to its own dir
Bug: angleproject:6306
Change-Id: I5ff453f03cccd1c4bcec59e21a18fc6049598383
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4675654
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
b57d5638
|
2023-06-29T00:00:00
|
|
Reland "Cleanup multiview support"
This is a reland of commit 9a7c0b88ba68e328d3f5f7991a6df0ab5de92311
Original change's description:
> Cleanup multiview support
>
> * Removed remaining mentions of ANGLE_multiview
>
> * Removed AST transformations used only in
> the side-by-side multiview implementation
>
> * Changed the type of the internal ViewID_OVR
> variable to use the dedicated qualifier
>
> * Removed side-by-side multiview support
> from the D3D11 renderer
>
> * Removed an unused helper for side-by-side
> multiview support from the OpenGL renderer
>
> * Removed obsoleted test suppressions
Fixed: angleproject:3341
Change-Id: I3ce9304c79c0873462c73e8cf02b85f7a1aaf874
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4669604
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
f0deadab
|
2023-07-06T15:19:03
|
|
Revert "Cleanup multiview support"
This reverts commit 9a7c0b88ba68e328d3f5f7991a6df0ab5de92311.
Reason for revert: Suspected cause of crash on Canary
Original change's description:
> Cleanup multiview support
>
> * Removed remaining mentions of ANGLE_multiview
>
> * Removed AST transformations used only in
> the side-by-side multiview implementation
>
> * Changed the type of the internal ViewID_OVR
> variable to use the dedicated qualifier
>
> * Removed side-by-side multiview support
> from the D3D11 renderer
>
> * Removed an unused helper for side-by-side
> multiview support from the OpenGL renderer
>
> * Removed obsoleted test suppressions
>
> Fixed: angleproject:3341
> Change-Id: I5e0706cbf26ea820b51400124ddbf2624b738f17
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4660046
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Bug: chromium:1462504
Bug: chromium:1462505
Bug: chromium:1462506
Bug: chromium:1462478
Bug: chromium:1462531
Change-Id: Ie0e76b1c6823db19f68bb67fdfc8abc00cc62f88
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4666209
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
|
|
67994c6f
|
2023-07-05T16:18:44
|
|
Workaround app bug with using ESSL 100 extension in ESSL 310
An app has been found that uses GL_OES_EGL_image_external and
GL_OES_texture_3D which are ESSL-100-only extensions in an ESSL 310
shader.
Workaround this app bug by allowing these extensions to be used in all
versions.
Bug: b/285871779
Change-Id: I82262fc407db48d1fdd66967681c8102029cd0b6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4666351
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
9a7c0b88
|
2023-06-29T00:00:00
|
|
Cleanup multiview support
* Removed remaining mentions of ANGLE_multiview
* Removed AST transformations used only in
the side-by-side multiview implementation
* Changed the type of the internal ViewID_OVR
variable to use the dedicated qualifier
* Removed side-by-side multiview support
from the D3D11 renderer
* Removed an unused helper for side-by-side
multiview support from the OpenGL renderer
* Removed obsoleted test suppressions
Fixed: angleproject:3341
Change-Id: I5e0706cbf26ea820b51400124ddbf2624b738f17
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4660046
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
c23029d2
|
2023-06-21T14:19:00
|
|
[apple] Fix build with newer libc++
Using `return mPtr` without a `*` works too, but it looks lie these
methods are unused, so just remove them.
Bug: chromium:1454568
Change-Id: Ie4441ac611787765e354480561e6a0e25aefa159
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4631841
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Nico Weber <thakis@chromium.org>
|
|
84379a52
|
2023-06-16T14:12:54
|
|
Vulkan: Mark the location of vertex output in the compiler
So the SPIR-V transformer doesn't have to discover it.
Bug: angleproject:7220
Change-Id: I13a4c7a205e664195a9631169a207c248497143a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4621789
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Roman Lavrov <romanl@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
803c3b10
|
2023-06-16T13:53:25
|
|
Vulkan: Mark the location of xfb emulation in the compiler
So the SPIR-V transformer doesn't have to discover it.
Bug: angleproject:7220
Change-Id: I5c74e5f3cbd8fe0c03ee2c445fddb7a0ef36fb91
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4621788
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Roman Lavrov <romanl@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
ad13d41f
|
2023-06-16T13:28:58
|
|
Vulkan: Mark the beginning of the shader in the compiler
So the SPIR-V transformer doesn't have to discover it.
Bug: angleproject:7220
Change-Id: I2a41656cc224d1fc02e656da15d9781705a6e785
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4621787
Reviewed-by: Roman Lavrov <romanl@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
|
|
b37df0c7
|
2023-06-16T12:05:03
|
|
Vulkan: Don't output SPIR-V debug info in release
Now that the SPIR-V transformer no longer relies on names, we can avoid
generating them in the compiler in the first place.
This both removes the need for stripping them out and makes the shaders
(which are cached) a bit smaller.
Bug: angleproject:7220
Change-Id: Ie636ac0ee62cf2730a409872041d22c066fc22ff
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4615238
Reviewed-by: Roman Lavrov <romanl@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
04f609d7
|
2023-06-09T16:03:28
|
|
Vulkan: Use user names directly in SPIR-V
... instead of prefixing them with _u. The transformer no longer relies
on debug info, which means SPIR-V names can be completely arbitrary.
There is no risk of collision with ANGLE internal names because it
doesn't matter for SPIR-V, and SPIR-V Cross is able to handle duplicate
names.
This change makes the output of SPIR-V Cross on generated shaders more
readable as it's not cluttered with _u before every name.
Bug: angleproject:7220
Change-Id: If46f7c82f908b0d65f8be49e297384ab659369e8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4615237
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Roman Lavrov <romanl@google.com>
Commit-Queue: Roman Lavrov <romanl@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
|