|
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>
|
|
e4859ae5
|
2020-01-27T15:21:58
|
|
Fix re-enabling ARB_texture_rectangle
My earlier change https://crrev.com/c/1991969 had a bug. If
ARB_texture_rectangle is disabled once, it can't be re-enabled because
the extension behavior entry is deleted. ResetExtensionBehavior needs
to restore it.
Bug: angleproject:3770
Change-Id: Icf96acece8ea8d17287c8d09fb4849b61c9c2a36
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2023398
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: James Darpinian <jdarpinian@chromium.org>
|
|
eca11cc8
|
2020-01-28T14:18:40
|
|
SH_CLAMP_INDIRECT_ARRAY_BOUNDS logic update
Remain the old hardware requirement for turning on clampArrayAccess. But
also turns it on universally for WebGL context. So that we won't suffer
from clampArrayAccess not handled properly on some compute shader deqp
tests.
Bug: chromium:1042252, angleproject:4361
Change-Id: Ib11affd6df27ce7d2100980d2b8decdee36876e8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2026029
Reviewed-by: James Darpinian <jdarpinian@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shrek Shao <shrekshao@google.com>
|
|
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>
|
|
5ca050d1
|
2020-01-20T14:59:41
|
|
Vulkan: Set fragment output locations in SPIR-V
The shader translator outputs arbitrary location indices for fragment
outputs. Once compiled by glslang, the SPIR-V transformer modifies
these decorations.
Bug: angleproject:3394
Change-Id: Ib9d8336bccc392e789e4d93031fdcce9c466b7a6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2011214
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
bef8ca7d
|
2020-01-20T14:19:05
|
|
Vulkan: Set vertex attribute locations in SPIR-V
The shader translator outputs arbitrary location indices for vertex
attributes. Once compiled by glslang, the SPIR-V transformer modifies
these decorations.
Bug: angleproject:3394
Change-Id: I88453b44e3a8770f51e79228148233ff308f1885
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2011212
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
71e6afb1
|
2020-01-14T14:12:31
|
|
Vulkan: Set set/binding in SPIR-V
This change introduces a SPIR-V transformer that modifies shader
interface variable decorations directly in SPIR-V instead of
manipulating the input GLSL. Currently, descriptor set and binding
indices are set by the transformer.
The shader translator outputs arbitrary set and binding indices. Once
compiled by glslang, the SPIR-V transformer modifies these decorations.
The ultimate goal is to be able to modify the SPIR-V again when program
pipeline objects decide a different set/binding is necessary.
Bug: angleproject:3394
Change-Id: If358265a72bf1fe9f5676562b39a632cb2e05dc4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2001477
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@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>
|
|
571ceb5f
|
2020-01-24T13:11:54
|
|
Turn on clampArrayAccess globally but off for compute shaders
out-of-bounds-uniform-array-access.html could fail on Linux Nvidia
OpenGL even if GL_KHR_robust_buffer_access_behavior is available.
Turning clampArrayAccess on globally but turn it off for Compute Shader,
which is not used by WebGL so should be okay.
FYI: The failures when turning this on globally are all in compute shaders.
One could be fixed by using int cast instead of float for the clamp
modifier. The other is due to array.length() couldn't return correct
result for array in SSBO.
Bug: chromium:1042252
Change-Id: Ic6f7adae4600d35207646881b18990a0c25a889a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2020463
Commit-Queue: Shrek Shao <shrekshao@google.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
086aded3
|
2020-01-26T13:40:02
|
|
Return the correct location count for matrices in structs
GetLocationCount() returned secondary size for fields of a struct. For
matrices however, the correct value would be the primary size.
This is a similar fix to 6423b7fc7ded02a702d24feb0730731ab9f6c061.
Bug: angleproject:4200
Change-Id: I2c69b9454729993010766fcde0cabec986b7429d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2021738
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
2d1d9d35
|
2020-01-27T12:09:41
|
|
Fix atomicAdd validation w.r.t to swizzles
Bug: angleproject:4150
Change-Id: I22c0c0382a2b208dd983fa1981ffc75f1b1945e9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2022359
Reviewed-by: Ian Elliott <ianelliott@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
e93a438b
|
2020-01-10T01:48:24
|
|
GL_OVR_multiview shouldn't be defined for WebGL spec'ed shaders
According to the latest change in WebGL's OVR_multiview2 spec, the GL_OVR_multiview should NOT be defined. Refer to https://www.khronos.org/registry/webgl/extensions/OVR_multiview2/
I.e. this shader should NOT fail compilation:
#version 300 es
#extension GL_OVR_multiview2 : require
#ifdef GL_OVR_multiview
#error legacy GL_OVR_multiview support must be forbidden
#endif
....
Bug: angleproject:4279
Change-Id: Ic94cba6785ea3a1fa14d5131dc0960214aa574be
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1994830
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Rafael Cintron <rafael.cintron@microsoft.com>
|
|
453926f5
|
2020-01-19T14:49:32
|
|
Vulkan: Remove inactive shader inputs in the translator
Inactive vertex attributes are harmless to remove. Between two
consecutive stages, the input varyings must be a subset of the previous
stage's output varyings. This means removing inactive input varyings is
also harmless.
Removing inactive output varyings is not possible though. GLSL allows a
varying to not be written by the previous stage even if it's used in the
current stage (values will be undefined, but it's not an error). This
means that an inactive output varying may still need to exist as part of
the shader interface in case the following stage has that varying as
input (and is active).
Bug: angleproject:3394
Change-Id: I7302973d2b8356d9f54a66f8259c32f245a99904
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2009986
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
f3b4e6c3
|
2020-01-13T17:07:13
|
|
Vulkan: No inactive samplers left to cleanup in glslang wrapper
Loose inactive samplers are already removed in
RemoveInactiveInterfaceVariables. In-struct samplers are always marked
active by CollectVariables if the uniform is active. If the uniform is
inactive, it is removed entirely by the translator. Thus no inactive
samplers are left for glslang wrapper to clean up.
Bug: angleproject:3394
Change-Id: Ic0fef052afa992bd612fd22ffa1e5b9aa72a17bc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1999488
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
8dfe472c
|
2020-01-13T15:20:51
|
|
Vulkan: Output qualifiers in the translator
With the exception of varyings, every other qualifier can be directly
output by the translator. This simplifies and optimizes glslang
wrapper.
Varyings' in/out qualifiers are still placed in @@ QUALIFIER macros so
glslang wrapper can remove them, if inactive, not by commenting them
out, but by turning them into global variables.
Bug: angleproject:3394
Change-Id: I9a3d18df2cfd36a38308bf8f71ac12f1e1513ece
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1998839
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
135f8fcb
|
2020-01-13T16:18:41
|
|
Vulkan: Remove inactive uniforms in the translator
By removing inactive uniforms in the translator, glslang wrapper doesn't
need to comment them out. Additionally, inactive uniforms don't find
their way in the default uniform block, reducing its size if there's a
mix of active and inactive uniforms.
As collateral, it also fixes a bug where inactive uniforms of struct
type were not correctly removed by glslang wrapper.
Bug: angleproject:3394
Bug: angleproject:4211
Bug: angleproject:4248
Change-Id: I874747070e875fe24bf59d39d1322e319e280a16
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1999278
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
b36e46ab
|
2020-01-08T15:49:18
|
|
Vulkan: Line raster emulation through specialization constant
In preparation for compiling shaders early at link time, this change
reworks line raster emulation such that it uses specialization constants
instead of a preprocessor condition. This means drawing both triangles
and lines with this program will still result in a one-time shader
compilation.
The compilation is still done at draw time in this change.
Bug: angleproject:3394
Change-Id: I0bf91398868d7f7147456533b728906b505192b2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1992365
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
230e14dd
|
2020-01-21T23:32:06
|
|
Add support for layout(early_fragment_tests) in;
Bug: angleproject:4314
Change-Id: I37b228f37201cc4188834e68459cd7294727c3ac
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2014240
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
5a7356ae
|
2020-01-16T23:22:31
|
|
Add support for non-float mix
The non-float variations of the mix builtin were conditioned to desktop
GLSL, but they are present in ESSL 3.1+. This change also implements
constant folding of these builtins as exercised by dEQP.
Bug: angleproject:4300
Change-Id: Iec34de4cf370e00d67fd605148cd7848f9e122f8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2006809
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
ffdd58f5
|
2019-12-28T15:34:41
|
|
Fixing OVR_multiview and OVR_multiview2 issues
Found two issues when native OVR_multiview and OVR_multiview2 extensions are generated.
1. OVR_multiview got replaced by the OVR_multiview2 in the translated shader (ESSL & GLSL)
2. Duplicate #extension OVR_multiview2 (for Fragment & Vertex) and 'layout (num_views=x)' (for Vertex) got generated into the translated shader.
Bug: angleproject:4247
Change-Id: I9a550883eeb326d95af4557578f8202a9493f4ec
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1983802
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Rafael Cintron <rafael.cintron@microsoft.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@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>
|
|
27db2458
|
2019-10-03T13:46:28
|
|
Optimize disabling ARB_texture_rectangle
In https://crrev.com/c/1838418 I added the ability to disable
ARB_texture_rectangle so that we can use it in the WebGL implementation
but disable it when compiling user shaders. Unfortunately disabling
and re-enabling the extension causes the shader translator to be
reinitialized which turns out to be more expensive than the actual
work of shader translation, at least for small shaders. It's slow enough
to cause timeouts in WebKit's WebGL conformance test runs.
This introduces an alternate method of disabling ARB_texture_rectangle
in the translator which is much faster because it avoids reinitializing
the translator.
Bug: angleproject:3956
Change-Id: I5d31b683ff19a59bdfd289cfd3c609f64ef5e25b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1991969
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: James Darpinian <jdarpinian@chromium.org>
|
|
0721cc8b
|
2020-01-03T23:26:08
|
|
Vulkan: No line raster emulation code if extension
A flag is added to the translator to disable generation of Bresenham
line raster emulation code when the Bresenham line raster Vulkan
extension is present. This is primarily for the sake of conversion of
line raster emulation condition to specialization constant:
- Avoid dead SPIR-V code in every shader
- Avoid ANGLEUniforms being active in every shader stage even if it's
not used anywhere but in line raster emulation.
- Optimize SPIR-V transformations by both having fewer instructions to
iterate through, and to avoid generating line raster patches.
- Reduce the severity of anglebug.com/4251 where the location assignment
of ANGLEPosition can incorrectly overlap a varying array or struct, by
making only platforms without Bresenham extension afflicted by the
bug.
Bug: angleproject:3394
Change-Id: Ic0ae6ce0392b4eae0cc79cb94bbcd0805b276a31
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1986379
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
a35aa03a
|
2019-12-20T16:15:53
|
|
Vulkan: EXT_gpu_shader5: textureGatherOffsets
The validation of the offsets parameter is added in this change.
Bug: angleproject:3569
Change-Id: Ide2ea4b9e88b28ca5ef34d5f3f5203f6e48d5f74
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1979133
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Jiajia Qin <jiajia.qin@intel.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
beb33691
|
2019-12-20T16:15:20
|
|
Vulkan: EXT_gpu_shader5: Fix textureGatherOffsets builtin
This function is the only builtin with arrays as parameter. A new
constexpr constructor is added to TType to support this, and
gen_builtin_symbols is changed to emit the correct type for offsets
parameter of this function.
Bug: angleproject:3569
Change-Id: I55af58b43f24cd605c622ee685b359535e11ef85
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1975431
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
86d9c93a
|
2019-12-16T16:07:04
|
|
Use TSpan for TType's array sizes
Until C++20, std::vector doesn't have a constexpr constructor, which
means TType cannot use a `TVector` for `mArraySizes` if an arrayed type
needs to be created constexpr. This is needed for the upcoming
textureGatherOffsets implementation.
A new TSpan class is introduced, based on std::span (from C++20) that
holds the pointer/size allocated from a TVector without owning it.
Since TVector's allocation are made from a pool, the allocated memory
will live beyond the vector's destruction. `TType::mArraySizes` is
changed to this type.
This change will allow a new constexpr constructor to be added to TType
that takes a TSpan as array directly, a value which is constexpr
initialized from a static array (instead of TVector).
Bug: angleproject:3569
Change-Id: I78793b0f4c64519e0ebe30cf6e0de995ba70035d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1968260
Reviewed-by: Jiajia Qin <jiajia.qin@intel.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
c713abfd
|
2019-12-23T12:03:02
|
|
Vulkan:Transform/feedback instanced draw support
These fixes allow dEQP 3.1 KHR-GLES31.core.vertex_attrib_binding.basic-input*
test cases to pass.
This fixes a bug in instanced drawing with transform feedback buffers
where we were overwriting the initial transform feedback output as new
instances were drawn. To fix this, the vertices in each draw are passed
into a uniform value and the output is offset based on the current instance
and the number of vertices in the draw.
It also fixes a validation error where transform feedback descriptor
was sometimes setting a buffer range of 0. This is not allowed, so in
the 0 case we pull the actual buffer size from the bufferHelper object.
Bug: angleproject:4236
Change-Id: Ib72898a0e6caab96c446c1e996a6124d2c001193
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1979600
Commit-Queue: Tobin Ehlis <tobine@google.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Tobin Ehlis <tobine@google.com>
|
|
07f0f019
|
2019-12-19T14:47:46
|
|
Translator: Memory qualifiers on SSBO fields
These were not output prior to this CL. Of these qualifiers, readonly
and writeonly are unnecessary as ANGLE already does the appropriate
validation, but the rest (coherent, volatile, restrict) are necessary,
even though the tests pass on the bots by coincidence of driver
behavior/test simplicity.
Bug: angleproject:3602
Change-Id: Ie75fee0f004944b50ef21124ba25c4315e082b85
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1976499
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
80943776
|
2019-12-17T16:58:06
|
|
Refactor TType's constructors
Instead of duplicating the initialization of every field, use one of the
constructors to initialize the other ones.
Bug: angleproject:3569
Change-Id: Ie342111218235ecb4124deb2f0147f97cdbed51a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1972889
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
0af8b596
|
2019-09-03T16:24:45
|
|
D3D11: Translate uniform blocks to StructuredBuffer when necessary
fxc exhibits slow compile performance with dynamic cbuffer indexing.
So when a uniform block contains only one large array member, which is
an array of structures, translate this uniform block to
a StructuredBuffer instead.
Bug: angleproject:3682
TEST=angle_end2end_tests.UniformBufferTest.*
Change-Id: Ife80dba8aae65b761737e095895e00a570230f88
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1782046
Commit-Queue: Xinghua Cao <xinghua.cao@intel.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
fe2ed33a
|
2019-12-19T14:43:25
|
|
Translator: Output memory qualifiers in OutputTree
Bug: angleproject:3602
Change-Id: I673d8080be874bea0a73a89f7499b652549c2f3d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1976498
Reviewed-by: Tobin Ehlis <tobine@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
4b80fbc8
|
2019-12-18T23:40:15
|
|
Fix textureGatherOffsets classification
sampler2DRect was placed under ESSL while sampler2DArrayShadow was
placed under desktop GLSL. They are swapped.
Bug: angleproject:3569
Change-Id: Ibf39868d4cd702d9d1da7fc286171bb70b80d6df
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1975430
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
6423b7fc
|
2019-12-04T18:45:24
|
|
Return the correct location count for Matrices
GetLocationCount() is currently returning the number of rows in the
matrix, rather than the columns, which leads to shader validation
errors (and test failures). This fix returns the number of columns
in a matrix.
Bug: angleproject:4200
Test: dEQP-GLES31.functional.separate_shader.random.63
Change-Id: I8d25eb3733c2ddbe53ff54794f480c1d43e22a88
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1952173
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Commit-Queue: Tim Van Patten <timvp@google.com>
|
|
17b3c2f3
|
2019-10-14T14:13:59
|
|
Implement SamplerVideoWEBGL for WEBGL_video_texture extension on desktop
WEBGL_video_texture is an extension that will improve uploading video frame to WebGL performance.
(https://www.khronos.org/registry/webgl/extensions/proposals/WEBGL_video_texture/)
This extension introduced a new texture type TEXTURE_VIDEO_IMAGE_WEBGL and a new sampler type
samplerVideoWEBGL to sample it.
In chromium implementation, TEXTURE_VIDEO_IMAGE_WEBGL maps to different native texture type
based on platform. On desktop, it maps to GL_TEXTURE2D(Currently supported). On Android, it
should map to GL_TEXTURE_EXTERNAL(TODO). SamplerVideoWEBGL needs to be mapped to sampler2D or
samplerExternalOES according to TEXTURE_VIDEO_IMAGE_WEBGL implementation.
This patch implements samplerVideoWEBGL in Angle to support WEBGL_video_texture on desktop. In
this case, samplerVideoWEBGL should map to sampler2D.
Bug: chromium:776222, angleproject:3889
Change-Id: Idb0a5fcde37ca75ccc1181226b91f257212e7500
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1866274
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
d674e1e5
|
2019-12-12T14:47:24
|
|
Vulkan: EXT_gpu_shader5: non-const offset in textureGatherOffset
This change includes preparatory work for textureGatherOffsets as well,
though that requires special handling which is addressed in a follow-up
change. This special handling is due to the fact that this family of
functions is the only built-in with an array parameter, and our built-in
table generation doesn't handle it correctly.
Bug: angleproject:3569
Change-Id: Ic1c8dd03878a184be00f578ab9fc42af8f6e47ea
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1965435
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Jiajia Qin <jiajia.qin@intel.com>
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>
|
|
19868b7e
|
2019-12-13T14:29:57
|
|
Restructure textureGatherOffset* builtin declarations
This is in preparation of textureGatherOffsets support.
Bug: angleproject:3569
Change-Id: I4ce5a1e102790181c8f843735961b9c249a69221
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1965720
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
b8e056dd
|
2019-12-11T15:02:43
|
|
Vulkan: Have the translator output in/out qualifiers
Currently, when assigning varying locations, we assign in/out qualifiers
based on whether the varying name is present between different shader
stages.
This is broken for separate shader objects as there is possibly no pair
of shaders to be able to tell which is input and which is output (by
trying to find the same varying in a stage before or after the shader).
Bug: angleproject:3571
Change-Id: Id928a3eaa16e917c81bae0b3414c41842eb2b664
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1961993
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
e181f2f7
|
2019-12-10T22:57:42
|
|
Validate that image array indices are constant
Also adds compiler tests for dynamic indexing of SSBOs and images.
Bug: angleproject:3569
Change-Id: I84b90813840ffad5a9a3cd8e7f12bd637a57b327
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1961095
Reviewed-by: Jiajia Qin <jiajia.qin@intel.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
e4eb75da
|
2019-12-06T11:10:47
|
|
Vulkan: EXT_gpu_shader5 support: dynamically uniform indexing
Bug: angleproject:3569
Change-Id: I5abb7f2889fa5173457497d4156a3dadbcf77640
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1954613
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
4ad8b55e
|
2019-12-03T10:07:41
|
|
Return valid qualifier after error
Using EvqLast for the variable causes us to hit an assert in
sh::getQualifierString when we try to print a later error message.
Just use the appropriate qualifier regardless that it's not valid
for a compute shader, we've output the error.
Bug: angleproject:4187
Change-Id: If6fa5dea07d7b6e0d3307485f41d59c5ea7f1c4c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1948525
Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
d6053daa
|
2019-12-05T17:46:23
|
|
Remove tabs from source files.
WebKit's Subversion repo refuses to commit source files that contain
tabs.
Bug: angleproject:3439
Change-Id: I0a804bcfa0375a98e19945e20297c90d31106827
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1954410
Commit-Queue: James Darpinian <jdarpinian@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
9af3e137
|
2019-12-05T15:35:33
|
|
Vulkan: EXT_gpu_shader5 support: fma
Add the fma() builtin function to ESSL.
Bug: angleproject:3569
Change-Id: Ic8419b4c117ecdd8b47aa733bf7aff9ee7579bbf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1954484
Reviewed-by: Jiajia Qin <jiajia.qin@intel.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
6e532b8c
|
2019-12-05T11:16:16
|
|
Fix compute shared memory size validation
When a struct was involved, the required size for each field was added
up, but also multiplied by its array size. However, when calculating
the field size, the array size was already multipled in.
This resulted in the calculated size to be larger than it actually is,
resulting in failures in KHR-GLES31.core.compute_shader.shared-max.
Bug: angleproject:4173
Change-Id: I900c17fa65decdeb20c3651c3342295fed2f7c61
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1953483
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
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>
|
|
33a00efd
|
2019-11-27T09:21:45
|
|
Add Compute Shared Memory Size Validation
Add tracking of shared memory declarations in compute shaders.
Test:
angle_deqp_gles31_tests --gtest_filter=dEQP.GLES31/functional_debug_negative_coverage_callbacks_compute_exceed_shared_memory_size_limit
Bug: 4173
Change-Id: If2a86d467a82f73fa5b2ee0ced752701acfe1872
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1934653
Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
249cb200
|
2019-12-03T11:10:06
|
|
Translator: Rename TIntermInvariantDeclaration to ..GlobalQualifier..
This is to support the upcoming `precise` keyword.
Bug: angleproject:3569
Change-Id: Idbcc8fd6f261757dbbf81b381e7a2dae938d8101
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1947451
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
a5045ac3
|
2019-12-03T11:02:17
|
|
glslang.l: refactor extension checks
Bug: angleproject:3569
Change-Id: I7cbbaa4d1cdd4dd4268f28e06c907958cff9b4e8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1947450
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
5efb36b9
|
2019-11-25T16:14:55
|
|
Automatically call flex/bison if necessary
ANGLE translator's parser code generation is changed to use the binaries
of flex/bison stored in the cloud. scripts/run_code_generation.py now
automatically runs these files if the input files change.
Bug: angleproject:3419
Change-Id: Icce4247f93b27baf8ee12dbb16112fa2cc98c111
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1940572
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
4cef8a49
|
2019-11-26T00:04:00
|
|
Metal: Support depthRange near > far
Metal doesn't natively support near > far depthRange, need to
emulate it via shader.
Bug: angleproject:2634
Change-Id: I1885cad3467478a0dcc4b25b7d41f980b9e03103
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1919282
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
|
|
c5c096aa
|
2019-11-15T15:36:16
|
|
Enable Compute Shader Program Input Queries
Compute shader inputs were not being tracked in the Shader or Program
states, causing program interface queries to fail. This change treats
compute shader inputs (all built-ins) as Attributes and pipes them
through from the Compiler to the Program to enable input queries. While
compute shader inputs are not technically attributes (or varyings),
the ANGLE code understands and handles attributes and a program
can never have both a vertex and compute shader, so there can't be any
conflicts.
The naming of these variable lists should probabaly be revisited at some
point to better handle these different use-cases.
Bug: angleproject:3596
Test: dEQP-GLES31.functional.program_interface_query.program_input.resource_list.compute.empty
Change-Id: Ie52cd59041868cfdb5d3d759bb4ec53c8d5b38d5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1919557
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Tim Van Patten <timvp@google.com>
|
|
240befe5
|
2019-11-15T14:40:31
|
|
Add support for gl_HelperInvocation
Added HelperInvocation to builtin_variables.json, regenerate the codegen
portions of compiler, and plumb support for HelperInvocation through the
rest of the compiler.
Skipping some fails on Android and Swiftshader for this initial change and
will debug/fix those issues in a follow-on.
Bug: angleproject:4110
Change-Id: I781a2782ace84200bc615a2cc26b908a62e2aa26
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1922061
Commit-Queue: Tobin Ehlis <tobine@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
db3e5183
|
2019-11-14T13:47:55
|
|
Vulkan: Fix col-major transformation of unsized arrays
If the row-major expression that was being transformed was in the form:
arr.length()
where `arr` is an SSBO unsized array, the translator transformation was
attempting to transpose the `arr` expression, which is both wrong and
impossible. Note that length() is removed through a prior
transformation except for this particular case.
This change recognizes this usage and supports it by keeping the
expression as is (as the length() would be identical pre or post
transformation).
Bug: angleproject:3443
Change-Id: I8efacb7b12d5e53047eb56ab5d86830d81952d86
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1917422
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
3f647b1b
|
2019-11-09T16:24:50
|
|
Vulkan: Improve Bresenham line emulation.
Clamps the vertex position to the subpixel grid before interpolation.
This will give more correct results on systems that have less than
8 bits of subpixel accuracy.
Also uses a more accurate formulation for the emulation filter in the
fragment shader using dfdx and dfdy.
Fixes line raster CTS tests on SwiftShader. Still does not produce spec
conformant lines. Updates the public docs to indicate this.
Bug: angleproject:2830
Change-Id: Ib9a268df3e7d986bd2b1348be664389fe8fc0ef2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1826598
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
a5a04ac0
|
2019-10-29T22:57:55
|
|
Metal backend pt3: shader translator
Implementation of GLSL to MSL translator
Bug: angleproject:2634
Change-Id: I66e2374b461548fac46163ea79790a488515e6b0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1887251
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
155947fc
|
2019-10-24T12:55:11
|
|
Enable "-Wconditional-uninitialized".
This is a final warning used by Skia.
Bug: angleproject:4046
Change-Id: I3970e30e4bd2aef07cddadd7322ef120ac857493
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1877481
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
16370a65
|
2019-10-24T12:55:11
|
|
Enable "-Winconsistent-missing-destructor-override".
This is purely a code style and consistency warning. Enabled to
support building in Skia.
Bug: angleproject:4046
Change-Id: Ibdcd06ded0195123e52c693851c43d0864e54ad1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1877480
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
68945f1c
|
2019-10-24T12:55:09
|
|
Enable "-Wredundant-parens".
This one is also required by Skia. It's purely for consistency and
code readability.
Bug: angleproject:4046
Change-Id: I9ed418a0bf6c7661f0970fef6da7088ca6ae6204
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1877478
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
859ca039
|
2019-10-24T12:55:08
|
|
Enable "-Wshadow-field".
This warning verifies we don't give variables names that shadow
fields. This is another good warning to enable that Skia requires.
This CL also fixes a small number of points in code that used this
bad pattern. We have to disable the warning for Glslang for now.
Bug: angleproject:4046
Change-Id: I072a686e3023b60cfafa778525fe712ce1fb5a50
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1877476
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
a48f95ab
|
2019-10-14T14:49:49
|
|
Move Vulkan GlslangWrapper code to a shared location.
Metal backend will reuse Vulkan's GlslangWrapper code.
The Metal backend will use this code to translate glsl to spirv then
cross compile to Metal Shading Language using spirv-cross.
So the source code of GlslangWrapper should be moved outside vulkan folder.
Bug: angleproject:2634
Change-Id: I208062daf0d77756c9d32cfdab925b7dfdf83e05
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1858042
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
b3070102
|
2019-10-18T16:01:34
|
|
Add SH_REMOVE_DYNAMIC_INDEXING_OF_SWIZZLED_VECTOR
This is a workaround for the webgl2 conformance test case
WebglConformance_conformance2_glsl3_vector_dynamic_indexing_swizzled_lvalue.
Dynamic indexing of swizzled lvalue like "v.zyx[i] = 0.0" is problematic on
various platforms. This removes the indexing by translating it this way:
void dyn_index_write_vec3(inout vec3 base, in int index, in float value){
switch (index) {
case (0):
(base[0] = value);
return ;
case (1):
(base[1] = value);
return ;
case (2):
(base[2] = value);
return ;
default:
break;
}
if ((index < 0))
{
(base[0] = value);
return ;
}
{
(base[2] = value);
}
}
...
dyn_index_write_vec3(v.zyx, i, 0.0);
...
Bug: chromium:709351
Change-Id: I971b38eb404209b56e6764af1063878c078a7e88
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1869109
Commit-Queue: Jie A Chen <jie.a.chen@intel.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
a2f89c00
|
2019-10-12T13:40:03
|
|
Add sampler array index validation for ESSL 3.00 onwards
In Section 12.30 of the ESSL 3.00 spec on p143-144:
Indexing of arrays of samplers by constant-index-expressions is
supported in GLSL ES 1.00. A constant-index-expression is an
expression formed from constant-expressions and certain loop indices,
defined for a subset of loop constructs. Should this functionality be
included in GLSL ES 3.00?
RESOLUTION: No. Arrays of samplers may only be indexed by constant-
integral-expressions.
Bug: chromium:985032
Change-Id: Iad9e4b8000b442a6631e1d2295c2670c4a79d486
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1849452
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
d200a77a
|
2019-10-10T00:44:01
|
|
Metal backend skeleton implementation.
Bug: angleproject:2634
Change-Id: I34be82f4a80a6851fecb53a51e069b134d82613a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1849079
Commit-Queue: Le Hoang Quyen <le.hoang.q@gmail.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
1d02157e
|
2019-09-24T10:54:40
|
|
Only enable shader array size restrictions for HLSL
Shader arrays are currently restricted to 64K entries for all translator
back ends. This is being changed to just HLSL, since the other back
ends appear to have support for larger sizes.
Bug: angleproject:3865
Test: dEQP-GLES31.functional.compute.basic.copy_image_to_ssbo_large
Test: dEQP-GLES31.functional.compute.basic.copy_ssbo_to_image_large
Test: ComputeShaderTest.VeryLargeArrayInsideFunction/*
Change-Id: I9a9d1322e24b3206debdea6a3fd517b4d6869ed9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1821943
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Tobin Ehlis <tobine@google.com>
|
|
a0159c03
|
2019-09-02T14:49:07
|
|
Vulkan: Implement basic geometry shader feature
Enable the default behavior of the geometry shader
Bug: angleproject:3571
Test: dEQP-GLES31.functional.geometry_shading.input.basic_primitive.points
dEQP-GLES31.functional.geometry_shading.input.basic_primitive.lines
dEQP-GLES31.functional.geometry_shading.input.basic_primitive.line_loop
dEQP-GLES31.functional.geometry_shading.input.basic_primitive.line_strip
dEQP-GLES31.functional.geometry_shading.input.basic_primitive.triangles
dEQP-GLES31.functional.geometry_shading.input.basic_primitive.triangle_strip
dEQP-GLES31.functional.geometry_shading.input.basic_primitive.triangle_fan
Change-Id: I65708d19bbfe6a0ad8ca392a1d6b3609b1410ef4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1793753
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
a905cbcd
|
2019-09-19T23:05:39
|
|
Compact built-in symbol table.
Should reduce the binary size bloat from the perfect hashing. Local
testing on Windows shows a significant size reduction.
Bug: chromium:998535
Change-Id: I411cc5a917036d2239d15353d760f44e40faa26c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1814725
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
c37d2370
|
2019-09-19T18:54:40
|
|
Reland "Refactor built-in symbol table."
This is a reland of 59d982c0dcad580ccbf4e29f32ffa3ea9a280122
Original change's description:
> Refactor built-in symbol table.
>
> In preparation for reducing binary size. Shortend a bunch of strings
> and symbol prefixes so the autogen file will be more compact.
>
> Bug: chromium:998535
> Change-Id: If1bedaaacc06dce9678d432055ffa0c9215a8dbd
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1814724
> Reviewed-by: Tim Van Patten <timvp@google.com>
> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Bug: chromium:998535
Change-Id: Iebc5b1b5e1a084257fba3c50026cc62df5a879b3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1817499
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Commit-Queue: Zhenyao Mo <zmo@chromium.org>
|
|
f585c2fb
|
2019-09-21T02:12:37
|
|
Revert "Refactor built-in symbol table."
This reverts commit 59d982c0dcad580ccbf4e29f32ffa3ea9a280122.
Reason for revert: crbug.com/1006501
Original change's description:
> Refactor built-in symbol table.
>
> In preparation for reducing binary size. Shortend a bunch of strings
> and symbol prefixes so the autogen file will be more compact.
>
> Bug: chromium:998535
> Change-Id: If1bedaaacc06dce9678d432055ffa0c9215a8dbd
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1814724
> Reviewed-by: Tim Van Patten <timvp@google.com>
> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
> Commit-Queue: Jamie Madill <jmadill@chromium.org>
TBR=timvp@google.com,jonahr@google.com,jmadill@chromium.org
Change-Id: Ie540da8ea4429e075a3284183e5a004cbcf1307b
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: chromium:998535,chromium:1006501
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1817497
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Commit-Queue: Zhenyao Mo <zmo@chromium.org>
|
|
59d982c0
|
2019-09-19T18:54:40
|
|
Refactor built-in symbol table.
In preparation for reducing binary size. Shortend a bunch of strings
and symbol prefixes so the autogen file will be more compact.
Bug: chromium:998535
Change-Id: If1bedaaacc06dce9678d432055ffa0c9215a8dbd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1814724
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
bf4268a3
|
2019-09-17T13:33:56
|
|
Fix misc VS2019 bool conversion warnings
BUG=angleproject:3921
Change-Id: I06de5131f98b27c2556ed60dd7228c9cfa154802
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1811858
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
d1c4a6d6
|
2019-09-07T09:33:57
|
|
Add final to class TIntermPreprocessorDirective
Suppresses this new warning in clang 10:
IntermNode.h:971:37: warning: class with destructor marked 'final' cannot be inherited from [-Wfinal-dtor-non-final-class]
~TIntermPreprocessorDirective() final;
BUG=angleproject:3903
Change-Id: I26a2fe1440653c83cf1b0498ee3bff0829a10145
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1789930
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
90a58622
|
2019-09-04T15:39:58
|
|
Refactor ShaderVariable to Remove Specializations
The following structs are being refactored and moved into the parent
struct ShaderVariable:
VariableWithLocation
Uniform
Attribute
OutputVariable
InterfaceBlockField
Varying
Bug: angleproject:3899
Test: CQ
Change-Id: I389eb3ab4ed44a360e09fca75ecc78d64a277f83
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1785877
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Commit-Queue: Tim Van Patten <timvp@google.com>
|
|
912e52d8
|
2019-08-23T00:25:09
|
|
Vulkan: Storage image support
Image bindings are placed after atomic counters in the "resources"
descriptor set.
There are two issues yet to be addressed:
- GL can create a 2D (array) view of a 3D image, but this is not allowed
in Vulkan. If this cannot be made possible, emulation needs to be
done.
https://github.com/KhronosGroup/Vulkan-Docs/issues/1033
- GL can create an image view of a texture with a different format and
have the data reinterpreted. This is not currently done.
Bug: angleproject:3563
Change-Id: I95c4d92c50bb033212a9a67f3f2d6f97c074c7bf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1767366
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
cd31f286
|
2019-06-25T14:22:41
|
|
Implement Draw base vertex and base instance functions
This patch implements functionality of glDrawArraysInstancedBaseInstanceANGLE,
glDrawElementsInstancedBaseVertexBaseInstanceANGLE,
glMultiDrawArraysInstancedBaseInstanceANGLE,
and glMultiDrawElementsInstancedBaseVertexBaseInstanceANGLE
Workaround for OpenGL driver on Mac:
gl_VertexID on Mac with AMD GPU doesn't include baseVertex value.
So replace gl_VertexID with (gl_VertexID + angle_BaseVertex) if any.
Workaround for Vulkan GLSL:
gl_InstanceIndex on Vulkan includes baseInstance. So replace
gl_InstanceIndex with (gl_InstanceIndex - angle_BaseInstance) when
angle_BaseInstance is declared.
Bug: chromium:891861, angleproject:3402
Change-Id: Ia1d94b5d4d7da7e635468c05c962c4f7eb1b1919
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1750126
Commit-Queue: Shrek Shao <shrekshao@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
83a369bb
|
2019-08-14T10:39:34
|
|
Vulkan: Improve cubemap emulation seam handling
Changes seamful cubemap emulation to always compute the derivative,
emulating the bias parameter by scaling the provided derivatives.
This results in more accurate mipmap levels for seams within primitives.
There are some artifacts as a result of how derivatives are calculated,
but this matches the native driver.
Bug: angleproject:3243
Bug: angleproject:3732
Change-Id: Icb976e2a7e14cb4210645571edc037d4e607bd0d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1754383
Commit-Queue: James Dong <dongja@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
d7d42540
|
2019-08-21T15:22:49
|
|
Don't build symbol table for GLSL built-ins if on Android
The GLSL + ESSL autogenerated symbol table is too large for
android, and android also doesn't need desktop GL functionality
If on android, compile the ESSL only symbol table
Bug: chromium:996286
Change-Id: I14dfc7748dae389e78c35f82a390c67962665356
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1757372
Commit-Queue: Clemen Deng <clemendeng@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
1d5aaa6c
|
2019-08-06T11:20:13
|
|
Vulkan: support dynamic indices in array of arrays
Expands existing struct-sampler rewrite to flatten arrays of arrays.
This allows us to support dynamically-uniform array indexing, which is
core in ES 3.2.
Samplers inside (possibly nested) structs are broken apart as before,
and then if the type resulting from merging the array sizes of the field
and its containing structs is an array of array, the array is flattened.
Also adds an offset parameter to functions taking in arrays to account
for this translation.
As a result of outer array sizes leaking into function signatures,
functions taking arrays of different sizes are duplicated according to
how the function is invoked.
Bug: angleproject:3604
Change-Id: Ic9373fd12a38f19bd811eac92e281055a63c1901
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1744177
Commit-Queue: James Dong <dongja@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
d6c7fec1
|
2019-08-12T16:46:57
|
|
Vulkan: Support mixed column/row-major buffer fields
Adds comprehensive tests for mixed column/row-major interface blocks,
which flush out various bugs in different OpenGL drivers too.
Bug: angleproject:3443
Change-Id: Ie88cca743373891bbb49d9f564f30407475e07fb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1749334
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
472c74c6
|
2019-08-19T16:32:13
|
|
Translator: Allow tree validation in children of TCompiler
This is to be able to perform validation inside TranslatorVulkan, even
if it's through ASSERTs.
Additionally, every transformation is changed such that they do their
validation themselves. TIntermTraverser::updateTree() performs the
validation, which indirectly validates many of three tree
transformations. Some of the more ancient transformations that don't
use this function directly call TCompiler::validateAST.
Bug: angleproject:2733
Change-Id: Ie4af029d34e053c5ad1dc8c2c2568eecd625d344
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1761149
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
17f26865
|
2019-08-22T22:11:39
|
|
Vulkan: Fix missing deepCopy() from dFdy transform
Bug: angleproject:2733
Change-Id: Id1375618e6d91eb1d577abf2f8c707a63ab17b57
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1767364
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
1fe8622d
|
2019-08-22T13:53:50
|
|
Vulkan: Fix missing deepCopy()s in FlipBuiltinVariable
Bug: angleproject:2733
Change-Id: Ica4a3d4f53dc1f0b5beb33cfa8f996acbaa496d3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1765890
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
56db3789
|
2019-08-01T17:09:53
|
|
Use flat arrays instead of switches for function lookups
Current implementation of built in function lookup uses
autogenerated switch statements. Instead, use the perfect
hash mapping to have the lookup use arrays instead. This
will improve runtime performance.
Bug: angleproject:3805
Change-Id: I6d0ba62d79abd53a7fe818fe675282800781f256
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1756883
Commit-Queue: Clemen Deng <clemendeng@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
05744c23
|
2019-08-21T16:21:30
|
|
Change gl_DrawID from level = ESSL1+ESSL3 to COMMON
Built in variable gl_DrawID is exposed to ESSL1 with
a suffix, when the variable is the exact same. No need
to do this.
Bug: angleproject:3805
Change-Id: I63c71791bb6a0e8aa7b644171a3f5a81099eddc0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1762359
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Clemen Deng <clemendeng@google.com>
|
|
396527c9
|
2019-08-20T13:48:38
|
|
Autogenerated kFunction* variables detected as mutable constants
The android binary size is increased incorrectly because the autogen
kFunction* variables are detected as mutable constants. Rename them to
function* to workaround this.
Bug: angleproject:3823
Change-Id: Ia335d1ae97ce5276a0ff8b9e432b53181cc36680
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1762494
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
|
|
213ad6bd
|
2019-08-16T16:31:32
|
|
Get rid of gl_ViewID_OVR for ESSL1
Only use UInt gl_ViewID_OVR from ESSL3
OVR multiview should not be exposed in ESSL1
Bug: angleproject:3822
Change-Id: Ia9d6247e3a717b06db26f1d436e2b33336b12a7d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1759143
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Clemen Deng <clemendeng@google.com>
|
|
6aca71d7
|
2019-08-12T13:02:34
|
|
Vulkan: Full support for program interface queries
When an interface block's field is determined to be active, it's
possible that the field is a struct so each of that field's fields need
to be marked active as well.
Bug: angleproject:3596
Test: dEQP-GLES31.functional.program_interface_query.*
Test: end2end ProgramInterfaceTestES31
Change-Id: I0bf550046a7a1d3c92cc08773138a40400e5e73b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1749332
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Tim Van Patten <timvp@google.com>
|
|
ca8ea0a4
|
2019-07-26T10:49:23
|
|
Get Desktop GL games running on desktop frontend
Games:
SkyEngine: Open source on github
The Deep Deep: Geoff's game
Bug: angleproject:3620
Change-Id: I5feee91a94648b385708cafe8d7412e86704ecd0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1721189
Commit-Queue: Clemen Deng <clemendeng@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
bcae3828
|
2019-08-19T09:37:18
|
|
Auto-generated variables detected as mutable constants
Need to rename kVar* variables to just var
Bug: angleproject:3823
Change-Id: I34b9f4eec4ee7829d47dcac2f06f1acc6b35f867
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1758601
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Clemen Deng <clemendeng@google.com>
|
|
153f3c22
|
2019-08-16T15:24:30
|
|
Miscellaneous build fixes for WebKit
Add a USE_SYSTEM_EGL define to allow compilation on Unix systems
without X11.
Feature detect __popcnt using Microsoft-specific _MSC_VER rather than
_M_X64/_M_IX86, which can be set by the Dinkumware stdlib on
non-Microsoft systems.
Apple's clang is too old to have -Wextra-semi-stmt
Ran generate_parser.sh using Cygwin64 bison 3.0.4, flex 2.6.4
Bug: 3439
Change-Id: Ie0d01a112a17f70ef60c120063a958b8f1a094f4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1759135
Commit-Queue: James Darpinian <jdarpinian@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
486f381f
|
2019-07-18T15:47:31
|
|
Add desktop GL built-in functions to symbol table
Added GL built-in functions to symbol table autogeneration
Built-in lookup now checks against spec and returns GL
symbols when appropriate.
Bug: angleproject:3719
Change-Id: I74786150f6063b40e13aebcb2eb9ea35e4ecaa53
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1731550
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Clemen Deng <clemendeng@google.com>
|
|
1d742ce8
|
2019-08-13T10:33:36
|
|
Deleted unnecessary built-in conditions
A few built-in variables are checking against overly complicated
extension conditions, deleting these will make the array lookup
easier to implement.
Also changed functionality to always enable GL_OVR_multiview
when GL_OVR_multiview2 is enabled
Bug: angleproject:3805
Change-Id: I10fc7db0fa8b496fbba8b2c27a7311ac3c24dbe4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1752082
Commit-Queue: Clemen Deng <clemendeng@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
9d737966
|
2019-08-14T12:25:12
|
|
Standardize copyright notices to project style
For all "ANGLE Project" copyrights, standardize to the format specified
by the style guide. Changes:
- "Copyright (c)" and "Copyright(c)" changed to just "Copyright".
- Removed the second half of date ranges ("Y1Y1-Y2Y2"->"Y1Y1").
- Fixed a small number of files that had no copyright date using the
initial commit year from the version control history.
- Fixed one instance of copyright being "The ANGLE Project" rather than
"The ANGLE Project Authors"
These changes are applied both to the copyright of source file, and
where applicable to copyright statements that are generated by
templates.
BUG=angleproject:3811
Change-Id: I973dd65e4ef9deeba232d5be74c768256a0eb2e5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1754397
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
5a2553a7
|
2019-08-07T14:44:12
|
|
Vulkan: Emulate subgroup ops in seamful cubemap emulation
Where subgroup ops are not available, they are emulated as such:
Code with subgroup ops:
float lH = subgroupQuadSwapHorizontal(layer);
float lV = subgroupQuadSwapVertical(layer);
float lD = subgroupQuadSwapDiagonal(layer);
bool isHelperH = subgroupQuadSwapHorizontal(gl_HelperInvocation);
bool isHelperV = subgroupQuadSwapVertical(gl_HelperInvocation);
if (gl_HelperInvocation)
{
layer = !isHelperH ? lH : !isHelperV ? lV : lD;
}
Emulated code:
float nonHelperLayer = gl_HelperInvocation ? 0.0 : layer;
float lH = abs(dFdxFine(nonHelperLayer));
float lV = abs(dFdyFine(nonHelperLayer));
float lD = abs(dFdxFine(lV));
float isHelperDiffH = abs(dFdxFine(float(gl_HelperInvocation)));
bool isNonHelperH = isHelperDiffH > 0.5;
float isHelperDiffV = abs(dFdyFine(float(gl_HelperInvocation)));
bool isNonHelperV = isHelperDiffV > 0.5;
if (gl_HelperInvocation)
{
layer = isNonHelperH ? lH : isNonHelperV ? lV : lD;
}
Both paths are supported as on nvidia devices the emulated code
misbehaves. This change therefore effectively only enables seamful cube
map emulation on Android where subgroup operations are not supported.
Bug: angleproject:3243
Bug: angleproject:3732
Change-Id: I9664d9760756758748183eb121c626f176789f3a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1742222
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
7e48c9eb
|
2019-08-06T17:17:19
|
|
Add explicit integer casts
WebKit uses the -Wshorten-64-to-32 flag which warns on these cases.
Bug: 3439
Change-Id: I8c1de60da0f173ca2036e2120e79b857f5f2775f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1740866
Commit-Queue: James Darpinian <jdarpinian@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
efa898ac
|
2019-08-07T17:05:35
|
|
Enable some compiler warnings used by WebKit.
This will make it easier to roll ANGLE in WebKit.
Bug: angleproject:3439
Change-Id: Icd4a5a2d5dcabb6cf13d4b46a7547f49610fa4b3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1743057
Commit-Queue: James Darpinian <jdarpinian@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
c9ba782a
|
2019-08-05T16:14:22
|
|
Vulkan: Support atomic counter array of arrays
Previously, it was assumed that a function argument is either AC or
AC[i], and it was converted to AC or AC+i respectively. The code is
changed to support any number of dimensions and subscripts, using
array size information from AC's type. If AC is an array of array
(atomic_uint AC[N][M][R]), the following index calculations are done.
AC -> AC.arrayIndex
AC[i] -> AC.arrayIndex + i*M*R
AC[i][j] -> AC.arrayIndex + i*M*R + j*R
AC[i][j][k] -> AC.arrayIndex + i*M*R + j*R + k
A test is added to exercise these various forms of indexing:
AtomicCounterBufferTest31.AtomicCounterArrayOfArray
Bug: angleproject:3566
Change-Id: I1e181a7363463d1d0ee4916f35006ed7c58e0f7c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1739488
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
e7970c3e
|
2019-08-07T14:43:17
|
|
BasicMangledName class
Need a class for basic mangled names since
with the addition of GLSL types the number
of basic types is > 52 (a-z, A-Z), so we need
more than one character to represent a type
Bug: angleproject:3719
Change-Id: I98beee9d42a016cb0c017f56ab82538c89212e33
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1742221
Commit-Queue: Clemen Deng <clemendeng@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
e86a8560
|
2019-08-07T11:55:01
|
|
Vulkan: Fewer subgroup ops in seamful cubemap emulation
Two values were retrieved from quad neighbors; layer and ma. The value
of ma was retrieved as the helper invocations would otherwise have a
different value as the major axis.
This change makes the helpers rechoose ma based on the layer, which
removes a number of subgroup operations. This is also more precise as
the major axis value could be slightly different from the neighbor.
Bug: angleproject:3732
Change-Id: I3c8ca724e91c52ca2f7edc03bb0e5dca67610ff4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1742215
Reviewed-by: Tobin Ehlis <tobine@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
93560ef5
|
2019-07-25T16:13:02
|
|
Vulkan: Seamful cube map emulation
In GLSL, a cube texture is sampled with one of textureCube* functions.
This function takes a 3D coordinate which is a vector from the center of
the cube and identifies a direction to sample from. GLES2.0 has the
following table that translates this 3D coordinate (Rx, Ry, Rz) to a
face and ST coordinates within that face. This table can be found in
Section 3.7.5 (Cube Map Texture Selection).
A compiler pass is implemented in ANGLE that replaces samplerCube
declarations with a sampler2DArray. The textureCube* functions are
replaced with the corresponding texture* functions with the translated
coordinates according to that table.
Gradients provided to textureCubeGrad are translated using the same
formulae, which is not precise but the spec specifies this projection to
be implementation dependent.
Helper invocations enabled through WQM (whole quad mode) cause a
nuisance in that the extrapolated varyings used as coordinates in a
textureCube call could have a different major axis (and therefore face)
from the non-helper invocations that lie within the geometry.
subgroupQuadSwap* operations are used in conjunction with
gl_HelperInvocation to make sure the helper threads calculate texture
UVs in the same face as the non-helper invocations.
Bug: angleproject:3300
Bug: angleproject:3240
Bug: angleproject:3243
Bug: angleproject:3732
Change-Id: I0cb6a9b1f2e1e6a392b5baca1c7118ed1c502ccf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1715977
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
44f518b5
|
2019-08-06T13:31:01
|
|
Have run_code_generation only call vpython when needed
gen_builtin_symbols.py uses a vpython module to generate
a perfect hash function
Also seeded the perfect hash function to make it deterministic
Bug: angleproject:3747
Change-Id: I660fe71bd6b2213be9d4ccc2f68641637a49a047
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1738747
Commit-Queue: Clemen Deng <clemendeng@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|