|
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>
|
|
9ff58ddd
|
2020-08-26T01:08:00
|
|
Metal: Support array of matrices varying.
MSL doesn't support array of matrices as varying variable.
This CL converts array of matrices varying to array of vectors.
This fixes WebGL test:
conformance/glsl/misc/shader-varying-packing-restrictions.html
Bug: angleproject:4846
Bug: angleproject:2634
Change-Id: I3cfc638dc01092ddf1add7df02c131d1a5c8ba1d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2392172
Commit-Queue: Le Hoang Quyen <le.hoang.q@gmail.com>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
499173de
|
2020-09-20T10:42:56
|
|
Pass #pragma optimize setting down to compilation.
This will allow us to disable optimizations in the back-end. This can
be useful both for developers and for ANGLE to disable very slow
shader compilation on D3D11.
Also apply this pragma to VerifyMaxVertexUniformVectorsWithSamplers.
Reduces compilation time by half in local testing.
Bug: angleproject:5076
Change-Id: I64ad576e11b9cee5b41f8af0d3621570304d65c2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2420749
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
a87964cd
|
2020-09-20T21:59:23
|
|
Suppress Linux GL Compute Tests on Intel.
ComputeShaderTest.AtomicFunctionsInNonInitializerSingleAssignment/ES3_1_OpenGL
ComputeShaderTest.AtomicFunctionsInitializerWithUnsigned/ES3_1_OpenGL
ComputeShaderTest.AtomicFunctionsNoReturnValue/ES3_1_OpenGL
ComputeShaderTest.AtomicFunctionsReturnWithMultipleTypes/ES3_1_OpenGL
ComputeShaderTest.AtomicFunctionsReturnWithUnsigned/ES3_1_OpenGL
ComputeShaderTest.DispatchDraw/ES3_1_OpenGL
ComputeShaderTest.DrawDispatchDispatchDraw/ES3_1_OpenGL
ComputeShaderTest.LoadImageThenStore/ES3_1_OpenGL
ComputeShaderTest.NonArraySharedVariable/ES3_1_OpenGL
ComputeShaderTest.NonStructArrayAsSharedVariable/ES3_1_OpenGL
ComputeShaderTest.StoreImageThenLoad/ES3_1_OpenGL
ComputeShaderTest.StructArrayAsSharedVariable/ES3_1_OpenGL
ComputeShaderTest.UniformDirty/ES3_1_OpenGL
ComputeShaderTest.groupMemoryBarrierAndBarrierTest/ES3_1_OpenGL
GLSLTest_ES31.ArraysOfArraysImage/ES3_1_OpenGL
GLSLTest_ES31.MixOfAllResources/ES3_1_OpenGL
LinkAndRelinkTestES31.RelinkProgramSucceedsFromRenderingToCompute/ES3_1_OpenGL
Bug: angleproject:5072
Change-Id: I506c931d7e8714e0393fb5a7b9671b2fc74caeee
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2420332
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
|
|
9f70b6b2
|
2020-09-20T13:28:37
|
|
Disable slow max uniform count test on D3D11/Intel.
Bug: angleproject:5076
Change-Id: I21fc0504513e092003e19fb845d6759eba0a3866
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2420750
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
|
|
0a8a3ea2
|
2020-09-14T11:12:43
|
|
Vulkan: Skip nested pow test on NVIDIA, Windows
Suspect possible NVIDIA driver issue as unable to repro on some NVIDIA,
Windows, NVIDIA configurations.
Test:
angle_end2end_tests --gtest_filter=GLSLTest.NestedPowStatements/ES3_Vulkan
Bug: chromium:1127866
Change-Id: Ic6a95915af72aab086753a0e0199ac1dee8bfb62
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2410560
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
377e7487
|
2020-08-27T17:11:35
|
|
Vulkan: Support array of array image type
Implement supporting the array of array of image
type in uniform. Add a new end2end test for it.
Bug: angleproject:3881
Change-Id: Idd757ae1d0ed34d585ae1ca5e0b6577459a0acb7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2379335
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
ae09e889
|
2020-09-10T17:00:13
|
|
Fix mismatch issue with precision qualifiers.
GLSL allows varyings passed from one stage to another to not match in
precision (e.g. float & half-float). Vulkan doesn't allow that so adjust
those mismatches to use the higher precision.
To fix we keep track of the precision of varyings and in the Vulkan
backend if we see they are different patch up the SPIR-V to make them
match.
Bug: angleproject:3078
Change-Id: I385d31e082da46ccdd4817b6612f5f9d9cbce17c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2337755
Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
add9b677
|
2020-08-17T15:50:20
|
|
Delete extra initialization in spirv shader.
Only webgl requires initialization of local variables,others don't.
Extra initialization in spirv shader may affect performance.
Bug: angleproject:4952
Change-Id: I004761779067748d43c1ea2630794491f1389492
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2359608
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tobin Ehlis <tobine@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
08b9ad57
|
2020-07-08T12:50:00
|
|
Metal: Prevent vertex shader's inactive varying from being removed
If vertex shader declares a varying but doesn't use it, and this varying
is being used in fragment shader, linking will fail because the varying
would be removed by spirv-cross.
Fix: initilize the unused varying with zero(s).
New test: GLSLTest.InactiveVaryingInVertexActiveInFragment.
Bug: angleproject:2634
Change-Id: Ia37acd8eea85d5da4ddbca6457d6cddb1b41662c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2281796
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
5e13757b
|
2020-05-11T00:50:00
|
|
Metal: Fix array of structs containing array of samplers bug.
Previously ProgramMtl could try to bind fixed slots to samplers based on
layout (set=..., binding=...). However, GLSL layout model is different
from Metal slots assignment. For example, The following is valid layout
in GLSL:
- array samplers A[2] is bound to index 0.
- array samplers B[2] is bound to index 1.
It is invalid to do so in Metal, since A occupies 2 slots, thus samplers
B[2] must be bound to slots starting from 2.
New binding method: let spirv-cross auto assigns the texture slots and
retrieve them after compilation.
Incomplete textures moved to ContextMtl using IncompleteTextureSet.
New test added: GLSLTest.ArrayOfStructContainingArrayOfSamplers.
Bug: angleproject:2634
Change-Id: Ib0edaaf8b20512e1272c37c1d4b16a88a5b35e75
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2193193
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
|
|
73bf99b7
|
2020-04-29T16:20:09
|
|
Fix clearing the program's validation-related cache too early
When attempting to link a new program, the program must be marked
as unlinked, but the validation-related caching should not be
cleared yet, since we can still use the previously linked program
if linking fails at this point.
Added an angle end2end test which fails without this fix and
passes with this fix.
Fixes the following WebGL 1.0.4 test with SwANGLE:
conformance/programs/program-test.html
Bug: angleproject:3557
Change-Id: Ib6722ba88803979e8f292c9b7b81f85cc0304662
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2173538
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexis Hétu <sugoi@chromium.org>
|
|
8aa20069
|
2020-03-18T17:55:06
|
|
Skip some tests on Mali because of a known issue
Type decorations may be ignored when using multiple OpAccessChains.
Bug: angleproject:4492
Change-Id: I2e51af600394a69cb5f7e02228ca7e4fd1c826e0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2105529
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
35785308
|
2020-02-24T17:37:55
|
|
Vulkan: reserve extra varyings
when basicGLLineRasterization or supportsTransformFeedbackExtension is enabled.
updated with MaxVaryingWithFeedbackAndGLline
adding test to validate pixel value (disabled for macos)
Bug: angleproject:4273
Change-Id: Ie3d3516fd3806c0d622fb402ba8223d302206f73
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2071237
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
4d2040a6
|
2020-02-27T09:59:11
|
|
Make GLSLTest_ES31.MixOfAllResources more lenient.
Lower precision in Vulkan caused off-by-one issues with this test.
BUG=angleproject:4438
Change-Id: I17111a06133ef403be1f0c99321f1dbf8ab6083c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2078791
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
1f5f7ea3
|
2020-02-14T23:39:11
|
|
Vulkan: Fix SPIR-V transformation name-info association
Prior to this commit, when "OpName %id name" was encountered, the info
corresponding to "name" was immediately associated with %id. This is
not necessarily correct because there could be multiple ids with the
same name. For example a sampler declaration and an unrelated function
argument could have the same name. In this case, the sampler
declaration and function argument name don't even need to be in the same
shader stage.
This change modifies the SPIR-V transformation such that the name-id
mapping is tracked until the OpVariable instruction that actually
declares the variable is visited. The mapping to variable info is only
done if the storage class specified in this instruction corresponds to a
shader interface variable.
Bug: angleproject:3394
Change-Id: I35a1f6f8278e4b1ad81c9955a55e1b72d6f2e4ea
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2057248
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
d5861a68
|
2020-02-13T15:46:49
|
|
Fix ASAN errors in end2end tests.
2 minor issues of reading from uninitialized memory in tests.
Removes the suppressions from the fixed tests.
Bug: chromium:1029378
Change-Id: I466ce231cfed1ce53a60732706c05b778b096805
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2055649
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
e5385ea9
|
2020-01-27T13:40:18
|
|
Vulkan: Compile shaders at link time
Since line raster emulation was changed to use specialization constants,
it has been possible to compile shaders at link time. However, program
pipeline objects would have required keeping the shader sources around
for recompilation. Now that all necessary decorations are modified
directly in SPIR-V, it's possible to compile the shaders at link time
and forget about their sources. Program pipeline objects then simply
"reconfigure" the generated SPIR-V.
A next step could be to also create the Vulkan pipeline object at link
time. A number of failures due to gaps in CTS testing prevent that work
currently. In particular, in some situations the generated SPIR-V is
not per spec, for example it may contain vertex attributes with aliasing
locations, or have transform feedback capture of array elements
misconfigured.
Bug: angleproject:3394
Bug: angleproject:4253
Change-Id: I54c0884cf056b511a4a306225cc6ed2cef84d257
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2023186
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
f764fc02
|
2020-02-03T10:33:58
|
|
Fix varying linking by location
This change breaks the assumption everywhere that varyings can be
identified uniquely by name throughout all stages of the pipeline.
It further implements linking of varyings by location, if specified.
Bug: angleproject:4355
Change-Id: Ie45e48879008c3f0c22d1da3d0d26f37c655e54e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2030026
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
e196bc85
|
2020-01-17T13:11:20
|
|
Add driver bug workaround for rewriting row major matrices.
Joint work with syoussefi@, who wrote the RewriteRowMajorMatrices
pass, and revised it for this CL to not rely on the
NameNamelessUniformBuffers pass - which was breaking it on the GL
backend.
Hook up previously written RewriteRowMajorMatrices transformation, and
enable on all GPU types on macOS. It is needed at least for AMD and
Intel GPUs.
Add a new test which verifies the behavior of dynamically-indexed
arrays of row-major matrices.
Bug: angleproject:2273
Bug: angleproject:3843
Change-Id: Id582f9cf6b9b1a59091aab1786539174f360b705
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2008717
Commit-Queue: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
f1f082e1
|
2020-01-17T14:53:38
|
|
Vulkan: Set varying location & xfb decorations in SPIR-V
The shader translator outputs arbitrary location indices. Once compiled
by glslang, the SPIR-V transformer modifies these decorations. If the
transform feedback extension is used, it will also add the relevant
decorations to the varyings that are captured.
Bug: angleproject:3394
Change-Id: I5ecafd0536408612a5d4b920dbabbfabe650657c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2008468
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
e28883de
|
2020-01-25T23:25:43
|
|
Vulkan: Fix handling of inactive fragment outputs
These were never assigned a location. They are now removed by the
translator similar to other inactive variables.
Bug: angleproject:4313
Change-Id: I3398d06e1dea3f43b84f206cca07cde5b44b21a8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2021734
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
7488a096
|
2020-01-27T22:17:59
|
|
Add a test to expose location'ed varying link bug
Bug: angleproject:4355
Change-Id: I2b914d3e6bf74ccf5d3f42d7bd010e44e45645ea
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2023921
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
24627fa4
|
2020-01-21T11:39:56
|
|
Row-major test: switch to compute
Based on Nvidia's recommendation that the following:
all(lessThan(gl_FragCoord.xy, vec2(1.0, 1.0)))
isn't necessarily true for only a single FS invocation, even when not
multisampling. The tests that do the above are changed to compute
instead.
Bug: angleproject:3831
Change-Id: I22d935f797c2e385218bc6af31e98a7f672a7707
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2012743
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
01e28144
|
2020-01-21T13:15:18
|
|
Row-major test: Clarify std140's stride calculation
Bug: angleproject:3830
Change-Id: I5fa213927b609ef33c729ded5d42add8f148dcb1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2012622
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
2e1beb40
|
2020-01-14T12:08:02
|
|
Add a test to expose translator bug w.r.t short circuiting
Bug: angleproject:3829
Change-Id: I872118f145886eecaed1680268e95419385b9d9e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2001237
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
feb3b6cc
|
2020-01-13T22:58:59
|
|
Vulkan: Remove row->col major shader transformation
This was done based on the incorrect assumption that Vulkan GLSL doesn't
allow layout qualifiers on interface block fields. This was due to
glslang compile failures in some shaders that included mixed row- and
column-major fields in interface blocks.
However, the failures were only in the case the interface block is
inactive, in which case glslang wrapper previously replaced the
layout/qualifier of the interface block with |struct|, which left the
shader with an unused struct definition with fields that have layout
qualifiers; an invalid shader.
The change introduced in
https://chromium-review.googlesource.com/c/angle/angle/+/1951523
removes inactive shader interface declarations. The above scenario thus
never occurs, rendering the row- to column-major transformation
unnecessary.
Bug: angleproject:3443
Change-Id: Ice34a0fc6e047b79a4d44f04b730ec59bdfafe33
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1961098
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
680a7d3b
|
2019-12-09T16:07:43
|
|
Vulkan: Add test that exposes sampler refactor bug
Bug: angleproject:4211
Change-Id: I9e9cdacd4f24131101029d17932625e2e3c7d7e0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1957836
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
|
|
f0be7c81
|
2019-12-02T15:42:33
|
|
Fix GLSLTest_ES3.MixedRowAndColumnMajorMatrices_ReadSideEffect
The test had two array sizes swapped, causing failure on vendors that
statically verified index-out-of-bound accesses.
Bug: angleproject:3831
Change-Id: I8ec32e9c11b38b69f03b1a22e60dfb6c6e82c2a4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1947123
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
a5dd3888
|
2019-12-04T14:31:57
|
|
Vulkan: fix handling of inactive atomic counters
The translator emulates atomic counters with a storage buffer array
during translation to Vulkan GLSL. Glslang wrapper then should assign
set/binding to this buffer. However, if the atomic counters are
actually unused in the shader, this assignment is never done.
This change adds a small tree transformation for Vulkan that removes any
uniform or interface block declaration that's not active. In
particular, this makes atomic counter emulation a no-op if no atomic
counters are used. It also has the benefit of not requiring glslang
wrapper to remove such inactive resources.
Bug: angleproject:4190
Change-Id: I286c199854ec2379558ad1ec48b4d2c4bf5544d0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1951523
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
d68bf3e2
|
2019-12-04T12:30:56
|
|
Fix image/sampler uniform range in presence of atomic counters
The change that introduced images to the front-end placed them at the
end of the uniforms list, so the loop that was calculating the image
range was starting from the end of that list.
The change that introduced atomic counters to the front-end placed them
at the end of the uniforms list too, but the image range loop was not
adjusted to take this fact into account (neither was the sampler range
loop for that matter).
If a shader used both images and atomic counter buffers, the image range
was calculated as empty. Similar issues would arise if the shader used
both samplers and atomic counters.
A test is added where a shader has a default uniform, a UBO, an SSBO, an
image and an atomic counter, to make sure any combination of these
resources doesn't result in a bug.
Bug: angleproject:4190
Change-Id: I7818ee5258dd964215a18acfd7c3d6515b61c595
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1950655
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
|
|
795a3559
|
2019-12-03T11:31:18
|
|
Vulkan: EXT_gpu_shader5 support: precise
The precise keyword is used in tessellation shaders but introduced in
this extension.
EXT_gpu_shader5 introduces a handful of features to shaders. This
change only implements the `precise` keyword.
Bug: angleproject:3569
Change-Id: I2252b79098eb8ba2d2faa040d7eaed7548b7051e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1939851
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
bc82fb14
|
2019-11-28T16:58:19
|
|
Suppress failing end2end tests for ASAN builds
GLSLTest_ES31.StructArraySample and
ComputeShaderTest.DispatchComputeIndirect both hit stack-buffer-overflow
errors with ASAN enabled, using the vulkan backend. Right now ASAN is
only tested on Mac, so these are only hit when Mac is using
swiftshader-vulkan.
Bug: 1029378
Change-Id: Ie590f73c29be44f683fd47fe4da139e1b5f96289
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1943408
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
|
|
6fcc0bb8
|
2019-11-21T01:19:40
|
|
Metal: Re-add end2end test configs (running test is still disabled)
angle_test_instantiate.cpp & angle_test_instantiate_apple.mm:
- Disabled metal platform selection on pre-10.13 mac devices for
Bug: angleproject:4153
Explicitly disabled tests on metal:
- DifferentStencilMasksTest.DrawWithDifferentMask
- PointSpritesTest.PointSizeAboveMaxIsClamped
- WebGL2ReadOutsideFramebufferTest.CopyTexSubImage3D
This requires the crash fix in http://crrev.com/c/1924101
Bug: angleproject:4153
Bug: angleproject:2634
Change-Id: I95046d731a8ba7414cf1a1f4b6f2940282725872
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1926389
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
|
|
c1776c61
|
2019-11-13T11:36:35
|
|
Vulkan:Add Swiftshader configs
Add Swiftshader configs to existing test instantiation macros for all ESX
variants. This causes Swiftshader to be used to run end2end tests.
Added detection code to know when tests are running on Swiftshader and skipping
a number of fails initially.
Note that when running ANGLE end2end tests within Chromium build on Win32 bots
there were crashes with Swiftshader config for tests that should have been skipped.
Due to this, just skipping Swiftshader configs on Win32 for now.
Bug: angleproject:4081
Bug: angleproject:4092
Change-Id: I32527a62304c5fad90f645b372edf9411ca2b212
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1914126
Commit-Queue: Tobin Ehlis <tobine@google.com>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
8392b118
|
2019-11-20T16:57:08
|
|
Revert "Metal: Enable end2end tests."
This reverts commit 0bb42e091b77f174632434a05789b2ce632bd902.
Reason for revert: https://bugs.chromium.org/p/chromium/issues/detail?id=1026633
Causing failures on Mac bots.
Original change's description:
> Metal: Enable end2end tests.
>
> Explicitly disabled tests:
> - DifferentStencilMasksTest.DrawWithDifferentMask
> - PointSpritesTest.PointSizeAboveMaxIsClamped
> - WebGL2ReadOutsideFramebufferTest.CopyTexSubImage3D
>
> Bug: angleproject:2634
> Change-Id: I76ab450c06d0e1be1e7469a8b9c6497684c3ca54
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1906607
> Commit-Queue: Jamie Madill <jmadill@chromium.org>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
TBR=geofflang@chromium.org,jonahr@google.com,jmadill@chromium.org,le.hoang.q@gmail.com
Change-Id: Iaa4264834170a49c274f186d3d74f57714c84b32
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: angleproject:2634
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1926378
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
|