|
b9f2d9cc
|
2021-12-16T13:08:22
|
|
Use text expectations to skip a test
This instead of exiting the test in C++.
Bug: angleproject:6826
Change-Id: I1e91f38f0f581821178b3b54ba809e59570b440a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3345615
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Gregg Tavares <gman@chromium.org>
|
|
a0924015
|
2021-11-22T19:44:05
|
|
Metal:Fix GLSLTest_ES3.GLVertexIDIntegerTextureDrawElements Metal
The test was failing if the "first" argument to glDrawElements
was odd. When odd the offset was not a multiple of 2 bytes
and the code was going down a different path than when the
offset was event.
The fix for that just removes a check for alignment to 4 bytes.
Checking with UNSIGNED_BYTE indices though and it still
failed. That was because it was encoding the index conversion
path on one command buffer and the provoking index prep
on another and so they were happening out of order.
Putting both on the same command buffer fixes that.
Bug: angleproject:6688
Change-Id: I89b68ba965d073e0fa70b6d5b444dc743b5e34a7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3296631
Commit-Queue: Gregg Tavares <gman@chromium.org>
Reviewed-by: Kyle Piddington <kpiddington@apple.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
edc2cfe5
|
2021-11-19T14:57:16
|
|
Fix signed integer overflow in angle_end2end_tests.
The test math was causing an signed overflow in the most extreme
case.
Test: GLSLTest_ES3.GLVertexIDIntegerTextureDrawArrays/ES3_Vulkan_SwiftShader
Bug: angleproject:5795
Change-Id: Id6b845577cb6ce585ec67251dcb6111d5773012f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3289942
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
d87d10cd
|
2021-11-12T11:02:01
|
|
Fix ASAN issue with GLVertexIDIntegerTextureDrawElements
Was
GLint clearData[] = {42};
glClearBufferiv(GL_COLOR, 0, clearData);
Now
GLint clearData[4] = {42};
glClearBufferiv(GL_COLOR, 0, clearData);
Bug: angleproject:6688
Change-Id: Ia8fa0c7d406626046a32e613fda3a165a06941b6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3278489
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
c6d86da2
|
2021-11-11T15:30:41
|
|
Add test for gl_VertexID and DrawElements
This fails on the WebGL CTS conformance2/rendering/vertex-id.html.
Repoing here to make it easier to debug/find/fix.
Bug: angleproject:6688
Change-Id: I0a4bafc5700c77e0b6c44b067167fc4a60e63c22
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3276708
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Gregg Tavares <gman@chromium.org>
|
|
5a5996aa
|
2021-11-09T21:42:43
|
|
Vulkan: Handle missing decorations in SPIR-V precision fixer
Bug: angleproject:6674
Change-Id: Ibfc72f14b9eeb17d7c70cf6d2384d970b2e66650
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3271551
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
52d6e363
|
2021-11-03T12:46:10
|
|
Translator: Fix zero-init of nameless I/O blocks
Bug: angleproject:6609
Change-Id: I680fec85d53709f9abd3680a9dc5794ecfae6588
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3260326
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
e10768f0
|
2021-11-03T12:23:11
|
|
Translator: Fix zero-init of I/O block arrays
Bug: angleproject:6609
Change-Id: I8245e868fe6bc4798e74088916e1d8cdd0727b6b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3260325
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
5c914b57
|
2021-10-28T13:27:04
|
|
Vulkan: SPIR-V Gen: Fix float+matrix
Found by a fuzzer, float+matrix was not handled correctly by the SPIR-V
output.
Bug: chromium:1264212
Change-Id: I09b13c3e48374621228f5fab4de68c33973ddfd4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3251585
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
066fb91b
|
2021-10-18T15:31:27
|
|
Vulkan: SPIR-V Gen: Handle scalar(const) produced by index clamp
Normally scalar(const) is folded into a constant. The index clamp
transformation may produce such a code where the index looks dynamic at
first (for example `false ? uniform_value : constant`), but becomes
constant after folding.
This change makes SPIR-V generation robust in that case. A potential
future change could avoid the clamp entirely by making FoldExpressions
adjust the op of the EOpIndexIndirect node whose index is being replaced
with a constant with EOpIndexDirect (and apply the clamp on the
argument).
Bug: chromium:1260651
Change-Id: I552b7527d821d1cb52e0e53212cc481285674861
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3226311
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
ef237faf
|
2021-10-18T16:22:40
|
|
Translator: Validate precision for function args
In fragment shaders, float does not have a default precision. Any
declaration of this type must therefore specify the precision if a
default one is not provided.
This was not validated for function arguments.
Bug: chromium:1255089
Change-Id: I0d17e226ec88610692ec7dd18793cf4d471f12e7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3226314
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
7f87a326
|
2021-10-18T13:06:29
|
|
Vulkan: SPIR-V Gen: Fix crash in array of struct constant
Bug: chromium:1260690
Change-Id: I51fe85a2ebc23c3fcaa3c961c4ebf84688bbed31
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3226309
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
f3d5dac3
|
2021-08-23T17:25:15
|
|
Vulkan: SPIR-V Gen: Drop dependency to glslang
The SPIR-V gen path is now made default. Compilation through glslang is
still supported for debugging, and is enabled on the GLSL* end2end tests
for smoke testing. On release builds, glslang is not supported.
To test with glslang, add the following gn arg (only necessary if dcheck
is disabled):
angle_enable_spirv_gen_through_glslang = true
Then enable the generateSPIRVThroughGlslang feature. This can be done
by setting an environment variable:
ANGLE_FEATURE_OVERRIDES_ENABLED=generateSPIRVThroughGlslang ./angle_deqp_gles2_tests
Binary size saving:
- 1.3MB on Linux (SPIR-V gen itself: 240KB)
- 730KB on Android (SPIR-V gen itself: 140KB)
Perf tests:
- LinkProgramBenchmark.Run/vulkan_compile_single_thread
* Through glslang:
truncated mean: 1287033.36
* Direct SPIR-V Gen:
truncated mean: 244495.91 (~80% reduction)
- LinkProgramBenchmark.Run/vulkan_compile_multi_thread
* Through glslang:
truncated mean: 4565894.83
* Direct SPIR-V Gen:
truncated mean: 1158164.10 (~75% reduction)
Bug: angleproject:4889
Bug: angleproject:6210
Change-Id: I486342702977c8114e90073b97183aba115a8b2d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3115140
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
44bef8ae
|
2021-10-08T15:01:37
|
|
Remove traces of Feature Level 9_3 support from tests.
Bug: angleproject:1284
Bug: angleproject:3042
Change-Id: Ic2f77d315e98c3b15c5fc8b0359168bce00867d4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3213294
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
0f66c861
|
2021-10-07T09:32:35
|
|
Add test that covers HLSL compiler bug.
Bug: angleproject:2445
Change-Id: I820b2dba3748bd10ca516ef47f226ff537b78849
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3212328
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
212f4592
|
2021-09-22T12:02:47
|
|
Enable direct-to-metal backend by default
We are switching over to Apple's direct-to-metal backend instead
of generating SPIRV in the metal backend. This CL enables the
direct-to-metal generation by default, but the SPIRV backend is
still accessible by overriding the feature directMetalGeneration.
This CL comes with a change in test expectations to catch new
failures and clean up newly passing tests.
Bug: angleproject:6080
Change-Id: I4b10ad93c641b88857079a08fb45d3dc575d71f1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3175664
Reviewed-by: Gregg Tavares <gman@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
|
|
daaaba0a
|
2021-10-04T22:28:56
|
|
Translator: Fix uniform/struct separation for anonymous arrays
When a uniform array of anonymous structs was separated into a struct
declaration and uniform array, the uniform symbol was being replaced,
but not the intermediate nodes that index it. This caused an AST
validation error.
Bug: angleproject:4740
Change-Id: Ib9d0115bd01c39d1a007f644e46b5e35c12c9304
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3204590
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
dde409be
|
2021-10-04T22:05:47
|
|
Translator: Produce error on func(void, int)
If void is specified, another parameter cannot follow. This change
ensures that this produces an error.
Bug: angleproject:6338
Change-Id: I18602ea4b52c96e498f4f2dc627d4ba2210d6fa7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3203795
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
234ebd58
|
2021-10-05T08:34:12
|
|
Lift old AMD/Win/GL expectations.
No longer tested on the bots.
Bug: angleproject:1643
Change-Id: I5e1ca8b9c2f673ebcb44c67879829f9fd346edf0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3205795
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
696f8533
|
2021-09-28T15:21:51
|
|
fix GLSLTest_ES3.GLVertexIDIntegerTextureDrawArrays
The test was using a gl_PointSize of 1000.0 but GL_POINTS
are only required to support a max size of 1.0
Bug: angleproject:6463
Change-Id: I8a44607085583cbc7cef06f21b118121cc1fef24
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3192177
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Gregg Tavares <gman@chromium.org>
|
|
bc8fe7dd
|
2021-09-24T22:50:32
|
|
Translator: Fix removing inactive output vs SH_INIT_OUTPUT_VARIABLES
The code that SH_INIT_OUTPUT_VARIABLES adds for inactive outputs is also
removed with this change.
Bug: chromium:1253016
Change-Id: I3caeb628487354de943f7b53f7462f58baa3eca8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3183107
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
d71dc819
|
2021-09-22T16:01:06
|
|
Fixes for RowMajor test failures
row_major matrices get translated to column major matrices
and the expressions rewritten. To do this temporary variables
that contain the column and row index expressions are moved
to separte statements before the matrix expression itself.
When this happens it breaks side effects and short circuits
in the expression.
The solution is to call SeparateCompoundExpressions before
calling RewriteRowMajorMatrices.
Bug: angleproject:6386
Change-Id: I4d819ade959e2a875495f62733e11d86560d3fab
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3177337
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Gregg Tavares <gman@chromium.org>
|
|
e1a9af6a
|
2021-09-20T10:42:03
|
|
Translator: Fix HLSL vs for loop's init not having initializer
The handleExcessiveLoop code expected that if a for loop has an init
expression that it must necessarily have an initializer as well. That
is not true in (fuzzer-produced) code such as following:
for (int i; ...; ...)
Bug: chromium:1238182
Change-Id: Id761e937a34a6b2feac1266e22207350a3bd616c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3170114
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
46149c0e
|
2021-09-17T15:38:47
|
|
Translator: Fix pruning functions that declare a struct
When pruning unused functions, the entire declaration of the function is
removed. If the function declares a struct as part of its return value,
the declaration of that struct was lost. This change makes sure that
declaration survives the pruning. For example:
struct S { vec4 v; } unused_func() { ... }
is now replaced with:
struct S { vec4 v; };
This change also makes struct usage validation more stringent.
Bug: chromium:1248753
Change-Id: Idd9a87fd2e785135775cfea62995fd33adaf3c09
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3169691
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
085ab6e8
|
2021-09-09T10:22:04
|
|
Turn on Direct Metal tests
Bug: angleproject:5505
Change-Id: I8de95f28698785e5467dd82d04cbc7636d6df042
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3152156
Commit-Queue: Gregg Tavares <gman@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
3ae1f336
|
2021-09-03T09:34:10
|
|
WebGL: Make unsuccessful links fail subsequent draw calls.
This protects against incomplete state updates during a failed
link call that can interfere with draw calls.
Bug: angleproject:6358
Bug: chromium:1241123
Change-Id: Ie892654c3a58c69d6e35ba3c41758ab6269d8193
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3140496
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
ab187c35
|
2021-09-02T14:46:29
|
|
Handle comparing arrays of scalars/vectors/matrices
Fixes:
UniformBlockWithOneLargeArrayMemberTest.MemberArrayOperations/ES3_Metal
Bug: angleproject:5505
Change-Id: Ife35db2146ac8ce8c0880cdb98df57dc75cb35cb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3140712
Commit-Queue: Gregg Tavares <gman@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
b6e99bb3
|
2021-09-02T13:47:34
|
|
Rename and expand shader variable init feature.
This feature now forces both output and unitialized locals to be
initialized by the shader translator. This feature is needed by the
trace validator to ensure we get deterministic behaviour in traces
that exhibit some undefined results.
Bug: angleproject:5133
Change-Id: Id1242cd077a57e891eed217f7671976ce1631a58
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3140216
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
9d0e2851
|
2021-09-01T00:42:58
|
|
Fix SeparateDeclarations vs struct specifiers
Bug: chromium:1237696
Change-Id: I3b00f3797800e814ca83226a8e4f25b2a43cc641
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3133824
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
a29b07d8
|
2021-08-26T13:11:29
|
|
InitializeVariables: Init shader IO block outputs.
These variables were not handled in the pass because we had no prior
test coverage of them. Some frame capture testing uncovered this gap.
The variables must be initialized field-by-field, since there seems
to be no defined way to initialize an entire block at once.
Bug: angleproject:6326
Change-Id: Ib7aecfb76b97b4236d786b44b3dfb706c573e221
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3123228
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
800e82c6
|
2021-08-23T11:05:23
|
|
Translator: Validate precisions
When declaring a variable, a struct field, function parameter etc,
there's a precision necessarily applied to the entity being declared.
AST Validation is added to enforce this. Intermediate nodes derive
their precision from these entities automatically.
Consistency of intermediate nodes is not validated. This is because AST
transformations replace a node with a transformed one, and that may not
have the same precision. Take the following code:
mediump float x = ...;
mediump float y = ...;
... x + y ...
and assume is transformed as such:
highp float driver_uniform;
... (x * driver_uniform) + y ...
The addition was originally done in mediump, but would seemingly need to
be done in highp after transformation. There are a number of options
here:
- Make sure that when nodes are replaced, the precision is unaffected.
This can be intrusive, requiring temp variables.
- Bubble up the new precision
- Accept the discrepancy
ANGLE opts for the last option, which actually respects the original
shader's intended precision for operations, even if some transformation
needs to temporarily evaluate an expression at a higher precision.
Bug: angleproject:4889
Bug: angleproject:6132
Change-Id: Ibcde3a230de159157783b1c6d5ef1cd63ceb4d8f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3114027
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
a141cb52
|
2021-08-23T13:52:57
|
|
Test vector and matrix scalarization does not affect output
Vector and matrix scalarization was turned off because
it affects the rendering output. We need to turn it
back on in some form for Metal. This test is added to
check that rendering output is not affected.
Test adapted from WebGL CTS test
https://github.com/KhronosGroup/WebGL/pull/3214
Bug: angleproject:6306
Change-Id: Ic1db18920064726761d6168f9dd5111772028598
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3115013
Commit-Queue: Gregg Tavares <gman@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
8ffb4602
|
2021-08-18T16:55:56
|
|
Turn on the first few direct-to-Metal tests by default.
All of the subtests of these previously-asserting tests are passing
with --bot-mode:
ProgramBinaryES3Test
UniformTest
WebGLGLSLTest
so start running them on ANGLE's CQ.
Bug: angleproject:5505
Change-Id: Ibdaa814cec846379e2c073117efa816fc871be33
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3105442
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
d20afde4
|
2021-08-05T23:06:44
|
|
Vulkan: Retain precision of uniform variables
When gathering in a uniform block, the precision of default uniforms was
dropped.
Bug: angleproject:4889
Bug: angleproject:6132
Change-Id: Ie6a8e2e7cef7cd3808cee08d20f886fc4e762cd5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3076124
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
63248e7f
|
2021-08-05T23:49:23
|
|
Translator: Fix dead-code-elimination corner case
The DCE code had a corner case bug where a switch case containing
multiple DCE'ed `break`s followed by another case would cause some of
the DCE'ed statements in the first case to be doubly pruned, failing on
an assertion.
This was due to the fact that visitBlock() was asking traversal to
continue if a new case was visited while pruning nodes, but the
traversal does not take into account that some statements need to be
skipped and so would also visit the pruned statements. If the pruned
statements contain a branch instruction, they get re-pruned.
The visitBlock() function that does the pruning is reworked so that it
more clearly traverses the statements.
Bug: chromium:1237200
Change-Id: Ib078c2ea73ade756c7d7ef5a5c489fa53c39f352
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3077659
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
09d5047b
|
2021-08-03T01:31:03
|
|
GL: Remove the rewriteVectorScalarArithmetic workaround
This workaround was implemented for a bug in Nvidia driver 387 which is
end-of-life. More recent driver branches (390 and 4XX) are fixed, and
so this workaround is no longer required. The implementation of the
workaround itself could introduce bugs.
Bug: chromium:772651
Bug: chromium:1201084
Change-Id: I3db179eb90d9124235bdad2daacc712302906d8e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3067952
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
aca9f2e2
|
2021-07-29T17:49:26
|
|
Vulkan: SPIR-V Gen: Fix constructors with uniform parameters
When the constructor contains parameters from interface blocks, they may
have SPIR-V type specializations that was not previously accounted for.
The code is made more robust by retrieving the column/component types
when generating constructors through TTypes instead of modifying
SpirvTypes directly.
Bug was caught by the WebGL CTS.
Bug: angleproject:4889
Change-Id: I6c9df17a97fac8622dea55ed67c7bae1ce16d1bd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3061640
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
a83c9108
|
2021-07-29T17:13:41
|
|
Vulkan: SPIR-V Gen: Fix nested ternary operators
The OpPhi instruction used to implement ternaries referenced to the
blocks pregenerated for the true and false cases. However, if there
were other code nested inside that could generate blocks (other
ternary expressions or short-circuits), that would be wrong.
Instead, the last block id is taken every time the true or false case is
entirely visited (similar to how it's done in the short-circuit
implementation).
Bug was caught by the WebGL CTS.
Bug: angleproject:4899
Change-Id: I71be86989dfe9596a13940ce657a7e67849e86bf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3061639
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
2b23aae4
|
2021-07-29T16:39:28
|
|
Vulkan: SPIR-V Gen: Support vec(..., mat)
Matrices specified in vector constructor arguments were not correctly
handled w.r.t to casting (caught by the WebGL CTS).
Bug: angleproject:4889
Change-Id: I70253f049a651fc5f439b56d1e4d8f785813b605
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3061638
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
aec5e65c
|
2021-07-28T00:36:12
|
|
Get direct-to-Metal backend to run angle_end2end_tests.
Cherry-pick nameless struct fix from Apple in
https://bugs.webkit.org/show_bug.cgi?id=227482 .
Fix SeparateCompoundStructDeclarations pass to stop generating
multiple declarations; thanks syoussefi@ for advice.
Incorporate additional passes from TranslatorVulkan
(MonomorphizeUnsupportedFunctionsInVulkanGLSL,
RewriteArrayOfArrayOfOpaqueUniforms,
SeparateStructFromUniformDeclarations) needed by RewriteStructSamplers
pass in TranslatorMetalDirect. Fixes many assertion failures in GLSL
tests. Moved these passes out of tree_ops/vulkan. Thanks again to
syoussefi@ for advice and help.
Disable a validation check related to the RewritePipelines pass. Skip
two tests that were failing for other reasons.
With these changes, angle_end2end_tests runs to completion when the
direct-to-Metal backend is turned on. There are still ~1300 failures
of the ~4000 tests which will be investigated next.
Bug: angleproject:5505
Change-Id: Ibca77822543e8e8e8d2a8c862e92cdf74bfa3545
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3058524
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
|
|
8bf2e5ec
|
2021-07-23T16:54:16
|
|
Vulkan: SPIR-V Gen: Fix switch with default at the end
A minor bug was making a switch with default at the end to jump to the
merge block instead of the default block.
Bug: angleproject:4889
Change-Id: Ied434fab949b10d45a0db1242c1b8535a5f4f773
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3048321
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
d0c03ff4
|
2021-07-22T14:55:51
|
|
Vulkan: SPIR-V Gen: Fix lvalues passed to in/inout parameters
In GLSL, these values are semantically copied when passed to a function
as an in or inout parameter. For example in:
bool f(inout vec4 a, inout vec4 b)
{
a = vec4(0);
return all(equal(a, b));
}
var = vec4(1);
bool result = f(var, var);
result is expected to be false. In SPIR-V, every parameter is
semantically passed by "reference".
glslang conservatively uses temporaries to pass to functions. An
optimization in ANGLE didn't create temporaries for unindexed lvalues,
which did not take into account the above fact. This optimization is
limited to out parameters now.
Bug: angleproject:4889
Change-Id: Ie1b4b1cecba847ba63d5810d01d0856823b89ddc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3046103
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
9d23ae62
|
2021-07-22T12:32:44
|
|
Vulkan: SPIR-V Gen: Fix conditionals with pruned blocks
Rewored the visitIfElse function to simplify the logic and correctly
handle if-else constructs where the true block is pruned.
Bug: angleproject:4889
Change-Id: Ib968a2fe65f4b6463158fd76e7d67757115ee832
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3046101
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
951b04bb
|
2021-07-21T12:20:13
|
|
Vulkan: SPIR-V Gen: Support scalar constructors
In GLSL, the scalar constructor can be given a vector and matrix, in
which case the first element is selected. This case was not previously
handled.
Bug: angleproject:4889
Change-Id: Ibf276883fc7396b750981a4e469ff9b152c6e700
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3042554
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
6e261453
|
2021-07-20T22:34:33
|
|
Vulkan: SPIR-V Gen: Fix I/O block arrays
Since the qualifier on intermediate nodes are EvqTemporary, the code
that autodeduced the block storage of I/O blocks was incorrectly
assigning them std140 when an indexed I/O block array was encountered.
This resulted in duplicate types in the SPIR-V. This is generally
benign (other than creating an unnecessary type) except for gl_PerVertex
as it adds BuiltIn decorations. gl_PerVertex may be an array in
geometry and tessellation shaders.
Bug: angleproject:4889
Change-Id: Iaa8e414ae01a4be127dc52df0e9406546b23d24c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3041621
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
a8807cbf
|
2021-07-17T00:00:27
|
|
Vulkan: SPIR-V Gen: Support interpolateAt*
The interpolateAt* builtins take their first argument as a pointer, so
only the OpAccessChain result should be given to the corresponding
SPIR-V instruction.
A test is written in this change to handle interpolateAt* when given a
swizzled lvalue, which is not representable in SPIR-V. This can be
supported by having the AST transform:
interpolateAtX(value.zy)
to:
interpolateAtX(value).zy
which can be done right when the function is parsed and the AST node for
it is created (by taking the swizzle out of the parameter and applying
it to the node). However, swizzled lvalues as parameter to
interpolateAt* is only allowed in desktop GLSL, and so the test is
disabled. From the GLSL ES3.2 spec:
> Component selection operators (e.g. .xy) may not be used when
> specifying interpolant.
Bug: angleproject:4889
Change-Id: I043969f22011e6171c7ae225ded3a5013e8cfa4e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3035588
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
32196d8f
|
2021-07-16T14:49:08
|
|
Vulkan: SPIR-V Gen: Support built-ins with out parameters
Some built-ins have out parameters; modf, frexp, uaddCarry, usubBorrow,
umulExtended and imulExtended. In SPIR-V, they are translated as such:
- modf and frexp: Returns the same result as GLSL, with a pointer to
store the output parameter. Since SPIR-V cannot create pointers to
swizzles, a temp variable is used in that case.
- uaddCarry, usubBorrow, umulExtended and imulExtended: These return a
struct in SPIR-V, which contains the two output parameters; with lsb
in field 0 and msb in field 1.
Bug: angleproject:4889
Change-Id: Ic5114f74b9c1013093007e91939f78d5218f2a07
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3036088
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
f4ce6d00
|
2021-07-15T11:07:25
|
|
Vulkan: SPIR-V Gen: Support bool in interface blocks
SPIR-V doesn't allow bool in interface blocks. Another type
specialization is added for this purpose, turning those bools to uint.
Bug: angleproject:4889
Change-Id: I803bffcf5ea58c913d4df6e7aae3386c67901b25
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3032021
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
9c6fb52c
|
2021-07-13T14:10:41
|
|
Vulkan: SPIR-V Gen: Assignment between mismatching SPIR-V types
In general, GLSL qualifiers translate to SPIR-V decorations on SPIR-V
variables. In the case of blocks (struct or interface block),
OpMemberDecorate is used, which due to its specification in SPIR-V, can
only apply decorations to direct members of a block. This makes it
impossible for example to decorate a nested member of a block through
its variable id.
As such, some decorations such as RowMajor and Invariant apply to
members of a block given its _type_ id. Unfortunately SPIR-V requires
ArrayStride to also be applied to a type directly, rather than a member
of a block. This implies that some types, such as structs used in
uniform/buffer interface block, or decorated with invariant or
row_major, as well as arrays (of any type) used inside and outside
interface blocks to produce different SPIR-V types from the same GLSL
type. The SpirvTypeSpec data previously introduced specialize these
types.
It's necessary to "cast" between these types when needed. The
translator handles casts at load/store boundary:
- Upon load, the value is cast to the type with the default
SpirvTypeSpec.
- Upon store, the value is cast from the default to the store target
SpirvTypeSpec.
- All intermediate results use the default SpirvTypeSpec.
Bug: angleproject:4889
Change-Id: I6fa28e518ec6b517ff163f44b6892859eb4b10fd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3026145
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
07c39616
|
2021-07-08T17:01:31
|
|
Vulkan: SPIR-V Gen: Enable GLSLTest*
This change includes an assortment of small fixes to enable most of
GLSLTest* end2end tests.
- User-defined std140 storage buffers were mistakenly turned to std430.
- External and WEBGL samplers were redundantly redeclaring the sampler2D
type.
- `invariant` specified on a field of struct type didn't apply it to
said struct's members.
- Arrays of struct as a member of an interface block didn't have their
size aligned, producing incorrect stride
- Interpolation and auxiliary qualifiers are now generated
- Arrays of opaque uniforms are now correctly passed to functions when
indexed.
- atan(x, y)'s built-in Op is fixed
- early_fragment_tests is now generated
Additionally, the SPIR-V transformer didn't handle the Invariant
decoration applied to gl_PerVertex built-ins, which is possible as a
result of:
#pragma STDGL invariant(all)
This bug existed in the transformer due to two bugs:
- ANGLE didn't generate this line when generating GLSL to feed to
glslang. This is fixed by this change.
- glslang itself ignores this line:
https://github.com/KhronosGroup/glslang/issues/2689
Bug: angleproject:4889
Change-Id: I15ad9fcc178abc1eae944e7a58f4e6153fa5dfd9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3016762
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
afdf378f
|
2021-07-01T21:55:58
|
|
Vulkan: SPIR-V Gen: Support == and != on complex types
In GLSL, == and != produce a bool. In SPIR-V, there are only
component-wise comparison operations. For ==, OpAll should be used to
reduce it to a single bool, and for !=, OpAny. For matrices, the
comparison is done column by column with a similar reduction for each
column, and one for the final result. For structs and arrays, the
comparison is similarly done field by field or element by element
respectively.
Bug: angleproject:4889
Change-Id: I8157c1931b7d1dedd74a3825967f5e212d346900
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3001905
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
3b0fcf6a
|
2021-06-30T15:14:48
|
|
Vulkan: SPIR-V Gen: Support type casts in constructors
GLSL basic, vector and matrix constructors can convert between types.
This was already done for constants used in constructors. This change
implements the cast for non-constant expressions.
Bug: angleproject:4889
Change-Id: I0a8c1a6e97ffced0d1652032a41fb87c70be16ca
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2999022
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
dc59772e
|
2021-06-22T22:37:26
|
|
Vulkan: SPIR-V Gen: Support switch
With the infrastructure to support this in place, switch is simply
implemented as a conditional with multiple blocks. Each block either
ends with a branch to the merge block or the next block, implementing
fallthrough.
Bug: angleproject:4889
Change-Id: I5831531d918ac06648cced7707d1d48ffeb6b1b0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2983559
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
a8c9cecf
|
2021-06-12T00:12:34
|
|
Vulkan: SPIR-V Gen: Support break and continue
This is simply done by issuing a branch to the merge or continue blocks
respectively.
Bug: angleproject:4889
Change-Id: I3e96a3b0f1a0533aa4eac519ab64a87600c0983b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2957810
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
153240b2
|
2021-06-11T16:36:32
|
|
Vulkan: SPIR-V Gen: Support loops
Loops are similar to if-else in that they generate a number of blocks
where the first block specifies divergence (OpLoopMerge) and the merge
block. Differently from if-else, there is a block where the condition
is evaluated and a block which `continue;` leads to (this last block is
the only one allowed to back-jump to the beginning of the loop).
Bug: angleproject:4889
Change-Id: Ic59f4bf3e05fbf93cb5af85acd3bc4b0da8412af
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2957809
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
7d023dac
|
2021-06-10T00:13:41
|
|
Vulkan: SPIR-V Gen: Basic support for fragment shaders
Fragment shader built-ins are implemented in this change and direct
SPIR-V generation for fragment shaders is enabled.
Bug: angleproject:4889
Change-Id: I6f92a5585f242122a81c97a9b1aa2763009161a0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2951625
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
3f9dcb00
|
2021-06-12T01:37:32
|
|
Translator: Prune trivial dead code
Code after discard, return, break and continue is discarded with this
change. This simplifies SPIR-V generation as no code is allowed after a
branch instruction and no special handling is necessary after this
change.
Bug: angleproject:4889
Change-Id: Ife9c8de8a6d0db9d682561daf44366aad9b1cf61
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2957811
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
d769742c
|
2021-06-03T19:43:58
|
|
Vulkan: SPIR-V Gen: Default uniforms
Default uniforms are gathered in a uniform block, so treat them like
other nameless uniform block fields.
Bug: angleproject:4889
Change-Id: If340040ab4c59f3243c40de7daba530b2289e147
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2939333
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
19209666
|
2021-06-09T07:55:04
|
|
Fix -Wc++11-narrowing in ANGLE.
This adds a few explicit casts where necessary and changes some double
constants to floats to avoid truncation.
Bug: chromium:1216696
Change-Id: Ie1a3ad94284185fb20a6feff75290cabb7ee09e8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2950320
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
ac2fc259
|
2021-06-03T17:11:14
|
|
Vulkan: SPIR-V Gen: Support function forward declaration
The generation of function-related ids is moved to
visitFunctionPrototype to support forward declarations. The
DeferGlobalInitializers AST transformation produces such code.
Bug: angleproject:4889
Change-Id: Iefee534575092ca25ff86e416e35703d7022bc07
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2939332
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
013613ea
|
2021-06-08T01:33:30
|
|
Translator: Allow invariant on I/O block members
The GLSL ES 3.2 spec says:
> Only variables output from a shader can be candidates for invariance.
And:
> All uses of invariant must be at global scope or on block members, and
> before any use of the variables being declared as invariant.
As a result, it's possible to specify `invariant` on a member of an
output I/O block.
Bug: angleproject:4889
Change-Id: I8822ed214813db8424d6a67dfef7f069a448b19d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2946115
Reviewed-by: Ian Elliott <ianelliott@google.com>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
0c26ff11
|
2021-06-03T17:09:22
|
|
Vulkan: SPIR-V Gen: Support initializers in declarations
If the initializer is a constant, it's specified directly in the
OpVariable instruction. Otherwise an OpStore is generated where the
declaration is visited.
Bug: angleproject:4889
Change-Id: I79291552ecc50c0878f921aff9f6d8618be34116
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2939331
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
052713da
|
2021-06-07T12:25:53
|
|
Lift OpenGL Win/Intel test expectation.
This was fixed in a prior patch.
Bug: angleproject:5444
Change-Id: I6df4b71b8dabd66eb151d94d757f89d88a864dab
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2939468
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
1b680b77
|
2021-06-02T22:04:45
|
|
Reland "Make SH_CLAMP_INDIRECT_ARRAY_BOUNDS do proper AST transformation"
This is a reland of a474fd7de769ae817db83490d410510cdbed75b2
The integer clamp used in this transformation is not available in es100
shaders, and float clamp is used instead.
Original change's description:
> Make SH_CLAMP_INDIRECT_ARRAY_BOUNDS do proper AST transformation
>
> This translator flag adds a clamp to non-literal indices to arrays. Two
> strategies were provisioned, using the clamp intrinsic or a hand-written
> function. The latter is ununsed in angle, chromium, firefox and
> webkit, so this change removes this option and uses the clamp intrinsic
> unconditionally.
>
> The clamp itself was added at output generation time with special flags
> set on the index node. This is changed such that a proper AST
> transformation is done and no-special handling would be necessary.
>
> Bug: angleproject:4361
> Bug: angleproject:4889
> Change-Id: Ieccfd2c1c347563fb5282e9fa66d39304e62f2ca
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2935041
> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Bug: angleproject:4361
Bug: angleproject:4889
Change-Id: I9397ec7e6bdfb706c2a891b33fd3b2b79e883ccc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2940902
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
|
|
aa2626f9
|
2021-05-21T15:24:55
|
|
Vulkan: SPIR-V Gen: Handle load/store access chain
This change implements a key instruction of SPIR-V, OpAccessChain.
Inspired by glslang's implementation, a class is added (AccessChain)
that tracks "indices" into a base value. These indices could select a
field of a block, an element of an array, a column of a matrix, or a
component of a vector. Nuances (such as multi-component swizzle as an
lvalue not representable in SPIR-V) and optimizations (such as
all-literal indices to an rvalue) that are implemented in glslang have
also been implemented in this change. As a result, this change
implements all manners of loads and stores (with the exception of this
gotcha: https://github.com/KhronosGroup/glslang/issues/2637).
The change uses this feature to translate the basic shader which does
`gl_Position = positionAttr;` (by implementing EOpAssign), and enables a
test that uses this shader.
Bug: angleproject:4889
Change-Id: I22dbe5b169ce499eaac657902164aca3b0ebc193
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2911880
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
39ee3640
|
2021-05-11T22:27:08
|
|
Translator: Fix struct/uniform separation w.r.t to arrays
When a uniform of struct type was redeclared, the arrayness information
was not transferred.
Bug: chromium:1204861
Change-Id: Ic3f461a4aa349a73bc48568ee14b5418f0556238
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2889599
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
c5e344b1
|
2021-05-11T22:13:38
|
|
Translator: Fix local var inits vs struct/uniform separation
The declarations outside the global scope were being skipped in this
transformation, but if the initializer of a declaration referenced a
uniform struct that's being replaced, it should have been visited too.
Bug: chromium:1204861
Change-Id: Ie2a743126c785eb7d6e3542ba80faa4defc3509f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2889598
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
daeac238
|
2021-05-08T22:09:38
|
|
Translator: Ensure structs and blocks are uniquely defined
A new AST validation is added to ensure that the same TStructure or
TInterfaceBlock is not redundantly defined. This helps with SPIR-V
generation by allowing the id to be used as key in a hash map that looks
up the corresponding SPIR-V type id.
A bug is fixed where the Vulkan driver uniform declaration created two
identical declarations for ANGLEDepthRangeParams.
A number of other bugs are also fixed in this change, where if a
variable declaration is eliminated (for example due to constant folding,
or inactive interface variable removal) and it contained a struct
specifier, the struct declaration was also removed. OutputGLSLBase had
a hack where structs were declared on first encounter, which was
incorrect as the scope of the declaration could change. Those bugs are
fixed and this hack is removed.
Bug: angleproject:2733
Bug: angleproject:4889
Bug: angleproject:5936
Change-Id: I8e13748c0bf552ae8b052249282769a1f0775603
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2881942
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
dd5705e7
|
2021-03-24T08:18:24
|
|
Add missing qualifier type handling in translator
Translator checks tessellation shader unsized array type qualifier.
sample in/sample out were missing in handling qualifier type.
Bug: angleproject:5557
Test: GLSLTest_ES31.VaryingTessellationSampleInAndOut*
Change-Id: I8a2f2c4c4fcc9cc88000d3b2d448ab51fb9e5d38
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2776263
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
|
|
c935ba5b
|
2021-03-09T08:40:22
|
|
Vulkan: Collect inactive varyings by block name for I/O blocks
ANGLE only collects inactive varyings by instance name. The SPIR-V
transformer expects I/O blocks to be identified by block name. If an I/O
block is inactive, an assertion would fire because the block name is not
in the shader variable info map.
Bug: angleproject:5676
Test: GLSLTest_ES31.VaryingIOBlockNotDeclaredIn*Shader*
Change-Id: I40e51c9770b03457e3896dcb2afa4e9525b098d8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2742658
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
|
|
a6b16d29
|
2021-03-02T19:04:57
|
|
Suppress UNINSTANTIATED_PARAMETERIZED_TEST failures on Ozone
We only support ES2 on Ozone, so tests that depend on ES3 or ES31
support are not instantiated there.
Bug: chromium:1183147
Change-Id: Id58bcd9b44a5b9a70b5ae8115e27c44f5dc81226
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2726550
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
ea71c6b6
|
2021-01-12T14:13:35
|
|
Vulkan: Emulate R32F images with R32UI
GL requires that imageAtomicExchange be supported for r32f formats.
However VK_FORMAT_FEATURE_STORAGE_*_ATOMIC_BIT is nearly unsupported
everywhere without some Vulkan extension that brings in unnecessary
support.
This GL feature is emulated by transforming the shader to use r32ui for
all images that originally specified r32f. floatToUintBits and
uintBitsToFloat is used to maintain correct usage of the image* builtin
functions.
Bug: angleproject:5535
Change-Id: Ie607089935d3283b3ffa054f4b4385b81fb8f53d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2635453
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
186fe990
|
2021-01-15T15:49:30
|
|
Vulkan: Redo RewriteAtomicCounters
With MonomorphizeUnsupportedFunctionsInVulkanGLSL and
RewriteArrayOfArrayOfOpaqueUniforms transformations run, it is no longer
possible to encounter array of array of atomic counters, or have any
passed to functions. As a result, RewriteAtomicCounters is greatly
simplified. Additionally, it is no longer necessary to pass
binding/offset information for atomic counters around and they can use
constants. This change removes dependency on the
shaderStorageBufferArrayDynamicIndexing Vulkan feature.
Bug: angleproject:3726
Bug: angleproject:3881
Change-Id: Ia43092a668f60d009eccbbceeed5deaf105a5895
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2633687
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
f45e625f
|
2021-01-18T21:56:46
|
|
Fix image bindings with an image after an image array of array
The logic to calculate the image binding offset for each element of an
array of array of images was incorrect, in that it used the arraySize
accumulated so far to offset the next image's binding.
Bug: angleproject:5535
Change-Id: I2dc3ce7bbf7b77302d1b56b4701bec2e990fdae1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2635452
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
60015ff6
|
2021-01-14T02:03:07
|
|
Vulkan: Redo RewriteStructSamplers
This transformation is split into two. The first transformation solely
takes out the samplers out of structs, and potentially generates array
of array of samplers. A second transformation is added that takes any
array of array of opaque uniforms and flattens it.
A follow up change will simplify RewriteAtomicCounters which also
handles array of arrays (which is no longer possible), and removes
dependency on shaderStorageBufferArrayDynamicIndexing.
Bug: angleproject:2703
Bug: angleproject:3881
Bug: angleproject:4071
Bug: angleproject:4211
Change-Id: I352bb2bbe65ac49f4d7d753c0ba3160fa3cc925a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2628138
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
dc99fc40
|
2021-01-13T00:21:41
|
|
Vulkan: Translator pass to monomorphize problematic functions
With array of array of samplers and images, we currently require the
shader*ArrayDynamicIndexing Vulkan features. With atomic counters, we
require the shaderStorageBufferArrayDynamicIndexing feature.
The above features are required to enable passing opaque uniforms to
functions. This change introduces a translator pass that monomorphizes
functions that receive atomic counters, or partially subscripted array
of array of samplers or images, etc by removing those arguments and
using the opaque uniform directly.
Follow up changes will include:
- Great simplification to RewriteStructSamplers, and removal of
RewriteStructSamplersOld. This will drop dependency to
shaderSampledImageArrayDynamicIndexing and
shaderStorageImageArrayDynamicIndexing.
- Great simplification to RewriteAtomicCounters. This will drop
dependency to shaderStorageBufferArrayDynamicIndexing.
- Emulation of imageAtomicExchange for r32f formats, but changing the
qualifier to r32ui.
Note that parts of RewriteStructSampler are obsolete with this change,
but will be refactored as a follow up.
Bug: angleproject:3881
Bug: angleproject:4071
Bug: angleproject:5535
Change-Id: Ifd1435b2a31ebf364815046886aeded60297da79
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2628127
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
6c79df68
|
2021-01-11T09:07:08
|
|
Allow attributes and uniforms to have the same name
It is valid for an attribute and a uniform to have the same name
as long as they are declared in different stages.
Prior to this patch, if any shader stage declares a uniform we
disallowed reusing that name for an attribute.
From GLSL ES Spec 3.00.6, section 4.3.5:
If a uniform variable name is declared in one stage (e.g., a vertex
shader) but not in another (e.g., a fragment shader), then that name
is still available in the other stage for a different use.
This change allows Egginc game to work with ANGLE
Bug: angleproject:5497
Tests: angle_end2end_tests -
*UniformVariableNameReuseAcrossStages*
*GlobalNamesConflict*
Change-Id: I8f5657d40a213600d6fb48f63e37e4cdbae120b2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2608865
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
|
|
e4b4ff7a
|
2021-01-12T13:48:20
|
|
Test Runner: Add a slow tests list.
Each slow test in the list will use a 3x longer timeout. The list is
implemented using the same filter wildcard we use in the test
expectations logic.
We can test this out using a slow D3D11 varying test.
Bug: angleproject:5076
Bug: angleproject:5496
Change-Id: I31cf45e6ee8a8bbd6e460d675ff8a0cf5f19a504
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2625172
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
ebf00703
|
2020-12-29T16:25:54
|
|
angle_end2end_tests passes on iOS!
Miscellaneous test skips and fixes for iOS.
Bug: angleproject:5417
Bug: angleproject:5491
Change-Id: Id0785e6243949fc756e4d7923dbbe77a411052f3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2606656
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: James Darpinian <jdarpinian@chromium.org>
|
|
973bd4ba
|
2020-12-21T13:45:36
|
|
Complete I/O block GLSL tests
The tests meant to perform a draw call and validate the correctness of
the shaders.
Bug: angleproject:3580
Change-Id: I3a008d204ae3d7dceb731ba7a815ab54f38c2920
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2599938
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
33fb6e38
|
2020-12-16T13:01:52
|
|
Vulkan: Unskip tests with passthrough GLSL function
The 2 end2end tests added by a62ee4d1 no longer fail with latest
Pixel ICDs. Enable those tests as regression checks.
Tests: angle_end2end_tests --gtest_filter=*SamplerPassthrough*Vulkan*
Bug: angleproject:5457
Change-Id: I53fb06fffa3fc76ef6f9a9e811ef5b833577ed67
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2595389
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
|
|
9bb06f37
|
2020-12-16T10:24:29
|
|
Unsuppress GLSLTest.PointCoordConsistency on Intel/Win/GL
The test can pass on 26.20.100.8141 now.
Bug: angleproject:2805
Change-Id: I8049c43ed7eca6c2001a8d8745aa6f9c2a2192a5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2594349
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
a62ee4d1
|
2020-12-11T14:28:42
|
|
Vulkan: Add test for Pixel bug with passthrough GLSL function
Passing in a sampler2D's values using texture2D through a
function generates unexpected results on a Pixel device
with the Vulkan backend.
1. SamplerPassthroughFailedLink - program fails to link.
2. SamplerPassthroughIncorrectColor - output color is incorrect.
These tests have no issues with SwiftShader ICD.
Tests: angle_end2end_tests --gtest_filter=*SamplerPassthrough*Vulkan*
Bug: angleproject:5457
Change-Id: I9c43062e98c7b3637bb8a2b00a957141da821f0a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2586059
Commit-Queue: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
282fb409
|
2020-12-11T16:09:10
|
|
Fix link validation of I/O block members
Location and struct name matching for fields was missing as they only
apply to I/O blocks and not varyings of struct type.
Bug: angleproject:3580
Change-Id: I69083f39088458da72828b418be3068187a30fcc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2587456
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
56330564
|
2020-12-10T00:46:04
|
|
Vulkan: Support layered framebuffers
This feature is introduced by geometry shaders, where all the layers of
a texture can be attached to a framebuffer. The geometry shader would
use gl_Layer to decide which layer the primitive should be rendered to.
Bug: angleproject:3571
Change-Id: Ib2ae8e227b226295f9e2f62f6b230839070bc95c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2582711
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
8326b26a
|
2020-12-11T13:59:40
|
|
Fix link validation with ambiguous instanceless interface blocks
The following interface blocks should fail link:
VS:
layout(binding=0) buffer BufferBlockNameA
{
mediump float variable;
};
FS:
layout(binding=1) buffer BufferBlockNameB
{
mediump float variable;
};
Because `variable` is ambiguous.
Bug: angleproject:3580
Change-Id: I29576a6f152780819af0e9fb63249dbee7d9f2fc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2587450
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
8789457d
|
2020-12-09T00:21:08
|
|
Fix varying packing of I/O block fields
The sorting algorithm didn't keep the fields in order, which made them
receive arbitrary locations. The SPIR-V transformer assigns the
location on the whole block instead of individual members, which was
incorrect in this situation.
The SPIR-V transformer could have been modified to decorate each field
of the I/O block with a location. This change instead sorts the fields
in such a way that I/O block fields are allocated contiguously, which
allows the SPIR-V transformer to function unchanged.
Bug: angleproject:3580
Change-Id: I27df9e8122dd4207835bad448ffb8015692a1635
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2581076
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
158089fd
|
2020-12-07T16:58:26
|
|
Fix location validation for I/O blocks
I/O blocks can specify location for each member of the block separately,
in arbitrary fashion. This change fixes up the code that validates
varying locations to take this into account.
Bug: angleproject:3580
Change-Id: If883347fc5db9f18722e41938d1b61fa64650d0c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2578047
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Mohan Maiya <m.maiya@samsung.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
a304f111
|
2020-11-22T18:47:39
|
|
Skip tests failing on Linux AMD RX 5500 XT
Crashes:
OpenGL:
MemoryObjectTest.MemoryObjectQueries
MemoryObjectTest.MemoryObjectShouldBeMemoryObject
MemoryObjectTest.ShouldFailValidationOnImportFdUnsupportedHandleType
UniformBufferTest.SizeOverMaxBlockSize
VulkanExternalImageTest.ShouldClearOpaqueFdWithSemaphores
VulkanExternalImageTest.ShouldDrawOpaqueFdWithSemaphores
VulkanExternalImageTest.WaitSemaphoresRetainsContentOpaqueFd
Vulkan:
MultisampledRenderToTextureTest.2DColorDepthMultisampleDrawTest
MultisampledRenderToTextureTest.DepthReadWriteToggleWithStartedRenderPass
MultisampledRenderToTextureES3Test.RenderbufferClearDrawCopyThenBlendWithDepthStencilSameProgram
MultisampledRenderToTextureES3Test.RenderbufferDepthStencilClearDrawCopyThenBlend
MultisampledRenderToTextureES3Test.RenderbufferDepthStencilDrawCopyClearThenBlend
MultisampledRenderToTextureES3Test.RenderbufferUnresolveColorAndDepthStencilThenTwoColors
MultisampledRenderToTextureES3Test.RenderbufferUnresolveColorAndDepthThenTwoColors
MultisampledRenderToTextureES3Test.RenderbufferUnresolveColorAndStencilThenTwoColors
SimpleStateChangeTest.RebindTranslatedAttribute
Failures:
OpenGL:
GLSLTest_ES31.MixedRowAndColumnMajorMatrices_WriteArrayOfArray
GLSLTest_ES31.MixedRowAndColumnMajorMatrices_WriteSideEffect
PixmapTest.BindTexImage
ReadPixelsPBONVTest.Basic
SimpleStateChangeTestES31.InvalidateThenStorageWriteThenBlend
StateChangeTestES3.DrawPausedXfbThenNonXfbLines
Bug: angleproject:5379, angleproject:5380, angleproject:5381
Bug: angleproject:5382, angleproject:5383, angleproject:5384
Bug: angleproject:5385, angleproject:5386, angleproject:5387
Bug: angleproject:5388, chromium:1004356
Change-Id: I73c6ba193ef230f576c804e8880f326ac5eabe0d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2552940
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
e0619360
|
2020-11-18T11:13:11
|
|
Skip tracking non-preprocessor tokens in disabled if-blocks
ESSL1 states that it is an error to have a non-preprocessor token
before an extension pragma but ANGLE would mark a non-preprocessor
token as seen even if it was in a disabled if-block.
Bug: b/161716126
Change-Id: I782224bee211bc7214a2d1d98d4829b4c94101bd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2547205
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
f98f18f6
|
2020-11-17T18:42:35
|
|
Remove Nexus 6P expectations
Bot decommissioned in crrev.com/c/2541579
Bug: chromium:1148989, angleproject:5280, angleproject:3726
Bug: angleproject:2641, angleproject:3264, angleproject:2114
Bug: angleproject:3464, angleproject:4991, angleproject:1415
Bug: angleproject:2407, angleproject:1427, angleproject:4215
Bug: angleproject:1429, angleproject:5069, chromium:998503
Change-Id: I1b268fdbcf6465aef447e90e470c1a011c7b3747
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2545892
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
bacb8dfc
|
2020-11-17T11:31:49
|
|
Add TODOs for Apple DTK skips; update bug urls
Bug: angleproject:5360
Change-Id: Ibad5be256f08c893caebd6fa268668b966556d13
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2544907
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
8a275449
|
2020-10-25T03:22:10
|
|
Metal: Add ES3_METAL to ANGLE_ALL_TEST_PLATFORMS_ES3
Bug: angleproject:2634
Change-Id: Iacc3aaf17565c7b16879897db4b9dac16826d829
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2494526
Commit-Queue: Le Hoang Quyen <le.hoang.q@gmail.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
9ff063e9
|
2020-10-25T03:08:25
|
|
Metal: fix max varyings, copyImage between mips, depth fmt
- GLSLTest_ES3.MaxVaryingWithFeedbackAndGLline failed before because
gl_Position takes up one slot from max varyings on Metal back-end.
FIXED
- Previously, copyImage() between mips of the same texture would fail.
Due to the read RenderTargetMtl is released before the copy happens.
FIXED
- GL_DEPTH_COMPONENT24 texture data upload didn't work due to the source
32 bit depth data wasn't handled properly. FIXED
- D24S8 format will be disabled on AMD for now, it will be converted to
D32S8 instead.
Bug: angleproject:2634
Bug: angleproject:5235
Bug: angleproject:5242
Change-Id: Ie7082f0545c0885ce5ec72df8a7ec4ee5d5de4b1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2494525
Commit-Queue: Le Hoang Quyen <le.hoang.q@gmail.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
f037cdc4
|
2020-10-23T17:12:21
|
|
Check for precision match of uniforms only if there is static use
There are legacy apps that have uniforms declared with
different precisions across shaders. There is some wiggle
room in the ESSL spec to accommodate such cases as long as
the uniforms are not statically used in shaders. We choose
this lenient interpretation since it allows for more apps
to be compatible with ANGLE.
This change allows BADLANDS to progress past a black screen.
Bug: angleproject:4971
Tests: angle_end2end_tests
--gtest_filter=GLSLTest_ES31.UniformPrecisionMatchValidation*
Change-Id: Icdd2056c8415803eb34f2840b0758e1acf53c23a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2495493
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
2f7fc0f3
|
2020-10-23T09:58:56
|
|
Tests: Remove standalone duplication.
Also cleans up some compiler warnings that crept in because of how
we structured the test sources in GN. We also no longer need special
handling for the test "main" files.
Must land after http://crrev.com/c/2495003 rolls into ANGLE.
Bug: angleproject:5124
Change-Id: I43ff91b5c8f00214886cd8ac2403702e5026a840
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2495281
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
1075b47a
|
2020-10-14T13:24:58
|
|
Disable more ARM-based Mac tests
Disables the following tests due to them failing on the ARM-based Mac
DTKs:
* GLSLTest_ES3.GLVertexIDIntegerTextureDrawArrays/ES3_OpenGL
* OcclusionQueriesTest.MultiQueries/ES2_Metal
* TransformFeedbackTest.TwoUnreferencedInFragShader/ES3_OpenGL
* WebGL2CompatibilityTest.CopyMip1ToMip0/ES3_OpenGL
Bug: chromium:1132295
Change-Id: I557e3c978d884e9beeafb4f43676271edcd36a87
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2472532
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Brian Sheedy <bsheedy@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
e0780931
|
2020-10-08T17:57:47
|
|
Suppress gl_test failures on Mac ARM64 (Apple DTK)
BuiltinVariableFragDepthClampingFloatRBOTest.Below1/ES3_OpenGL
CopyTexImageTest.DeleteAfterCopyingToTextures/ES2_OpenGL
GLSLTest.MaxVaryingVec2Arrays/ES2_Metal
GLSLTest.MaxVaryingVec3ArrayAndOneFloatArray/ES2_Metal
GLSLTest.MoreNestedCompoundStructsWithSamplersAsFunctionArg/ES2_OpenGL
GLSLTest.NestedCompoundStructsWithSamplersAsFunctionArg/ES2_OpenGL
GLSLTest.NestedStructsWithSamplersAsFunctionArg/ES2_OpenGL
GLSLTest.NestedStructsWithSamplersAsFunctionArg/ES3_OpenGL
MipmapTestES3.BaseLevelTextureBug/ES3_OpenGL
MipmapTestES3.GenerateMipmapBaseLevel/ES3_OpenGL
MipmapTestES3.GenerateMipmapCubeBaseLevel/ES3_OpenGL
MipmapTestES3.GenerateMipmapMaxLevel/ES3_OpenGL
MipmapTestES3.GenerateMipmapPreservesOutOfRangeMips/ES3_OpenGL
OcclusionQueriesTest.MultiQueries/ES2_Metal
Texture2DBaseMaxTestES3.GenerateMipmapAfterRedefineAndRebase/ES3_OpenGL
Texture2DFloatTestES2.TextureFloatLinearLegacyTest/ES2_Metal
Texture2DFloatTestES2.TextureFloatLinearLegacyTest/ES2_OpenGL
Texture2DFloatTestES2.TextureFloatLinearTest/ES2_Metal
Texture2DFloatTestES2.TextureFloatLinearTest/ES2_OpenGL
Texture2DFloatTestES3.TextureFloatLinearLegacyTest/ES3_OpenGL
Texture2DFloatTestES3.TextureFloatLinearTest/ES3_OpenGL
TimerQueriesTest.TimeElapsed/ES3_OpenGL
TimerQueriesTest.TimeElapsedMulticontextTest/ES3_OpenGL
WebGLCompatibilityTest.TextureCopyingFeedbackLoops/ES2_OpenGL
WebGLCompatibilityTest.TextureCopyingFeedbackLoops/ES3_OpenGL
Bug: chromium:1132295
Change-Id: If64dc67275063c8046dbc941d92de273fbc226e5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2461674
Commit-Queue: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
7a0faa82
|
2020-09-24T20:15:26
|
|
Revert "Pass #pragma optimize setting down to compilation."
This reverts commit 499173de1c91932ba272269cab6918bf7e8d7c11.
Reason for revert: Causes unexpected HLSL compiler errors in some
cases. See bug.
Bug: angleproject:5094
Original change's description:
> Pass #pragma optimize setting down to compilation.
>
> This will allow us to disable optimizations in the back-end. This can
> be useful both for developers and for ANGLE to disable very slow
> shader compilation on D3D11.
>
> Also apply this pragma to VerifyMaxVertexUniformVectorsWithSamplers.
> Reduces compilation time by half in local testing.
>
> Bug: angleproject:5076
> Change-Id: I64ad576e11b9cee5b41f8af0d3621570304d65c2
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2420749
> Commit-Queue: Jamie Madill <jmadill@chromium.org>
> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
TBR=geofflang@chromium.org,jonahr@google.com,jmadill@chromium.org
# Not skipping CQ checks because original CL landed > 1 day ago.
Bug: angleproject:5076
Change-Id: I733e788fe8e9421ae0af662c0eb51af1ed79dde3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2429517
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
ee7ae7ab
|
2020-09-22T19:36:57
|
|
Skip another slow test on Win/Intel/D3D11.
GLSLTest.VerifyMaxVertexUniformVectors/ES2_D3D11
Bug: angleproject:5076
Change-Id: I178ec224ca6b93f3290de6fb7e5cc3a4f348ba12
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2425323
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|