Only changes the way we get auto_script inputs/outputs.
Before this CL, some of the scripts (depending on the shebang)
are run via vpython3 - which can take a few seconds. But the
inputs/outputs code generally doesn't require any unusual imports, so we
can just add little hacks to suppress those imports where needed when
an argument is given to the script.
Bug: angleproject:8184
Change-Id: Ib09a35b839318253fe7e913e24a756d2cb46dad1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4585820
Commit-Queue: Roman Lavrov <romanl@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
* Added support for sample qualifier
and shader interpolation functions
* Added MSL-specific AST transformations
* Adjusted minimum fragment interpolation offset state
query test so that accurate limits could be reported
* Drive-by: Y-flip gl_SamplePosition adjustment
* Renamed ANGLESampleMaskEnabled function constant to
ANGLEMultisampledRendering to correctly reflect its
usage
Bug: angleproject:8097
Bug: angleproject:8131
Change-Id: I25c9f36487e29f05bb9fe874e146d06378fef975
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4440827
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
New ESSL built-ins are mapped to their Metal
counterparts and tweaked to follow OpenGL ES
semantics when needed.
Fixed A2C interaction with sample coverage
by emulating the former on non-Apple GPUs.
Bug: angleproject:8097
Fixed: angleproject:5087
Change-Id: I5d28a941af5cbc14743a3930731529f11f55febd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4404896
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Kyle Piddington <kpiddington@apple.com>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Added an extension spec.
Trivially exposed it on GL, Vulkan, and D3D11.
Adjusted tests and validation to allow no cull
distance support for this extension string.
Removed extra built-in variable definitions.
Bug: angleproject:7904
Change-Id: Ic60772dfe28132c316eaa29aadc1afd66e3b0fa7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4114290
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Partial revert of
I458cad29c10b9d9193c5233e24bac53361ba104e
APPLE_clip_distance cannot be implemented on top of
EXT_clip_cull_distance because the former is defined both
for ES 2.0 and ES 3.0 while the latter is defined only for ES 3.0.
Although some ES 3.0+ drivers allow gl_ClipDistance built-in in
ESSL 1.00 shaders, this behavior is not specified so ANGLE should
not allow it.
Added independent ESSL 3.00 gl_ClipDistance and gl_MaxClipDistances
definitions.
Adjusted translator unit tests.
Bug: angleproject:4452
Change-Id: Ib582ce0ac7ccb65f0200ef1d17eaab0c83b228cf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3963745
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Implements ANGLE_shader_pixel_local_storage_coherent using fragment
shader synchronization extensions:
NV_fragment_shader_interlock
INTEL_fragment_shader_ordering
ARB_fragment_shader_interlock
With these extensions combined, we get coherency all 3 big desktop
vendors: NVIDIA, Intel, and AMD.
Bug: angleproject:7279
Change-Id: Ie20b251fb772898e89994b799640f1f2806581eb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3773990
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Specs out, implements, and thoroughly tests the GLSL additions for
ANGLE_shader_pixel_local_storage. Adds a simple transformation that
rewrites PLS directly into shader images. Updates the existing PLS tests
to use the newly built-in PLS features and ensures they continue
passing.
For now, applications call glBindImageTexture to configure their pixel
local storage. The OpenGL ES API side of this extension will follow
shortly.
Bug: angleproject:7279
Change-Id: I141183069b5cbfcca01cbb77b5b36d3e5f834bf5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3761876
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Chris Dalton <chris@rive.app>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Not directly specified by the spec on gl_Layer itself, but required
according to this more generic statement:
> Fragment shader inputs that are, or contain, integral types must be
> qualified with the interpolation qualifier flat.
Bug: angleproject:7332
Change-Id: Ieaa389e9b1318d3f13147cba7949cff6491c4b61
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3652746
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Brandon Schade <b.schade@samsung.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
A few fixes to framebuffer fetch:
- The built-in symbol for coherent and non-coherent are now the same for
gl_LastFragData, so extension check can choose one or the other.
- The temporary variable used in a transformation is renamed to not be
gl_LastFragData.
- inout usage is now validated correctly for shader type and version.
Bug: angleproject:6951
Bug: angleproject:6905
Bug: angleproject:6907
Change-Id: I9af341a3e8e01ed375a8230618184494813d3ece
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3427577
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
This change cleans up a confusion in EvqConst and EvqConstReadOnly,
where the former was frequently used instead of the latter for function
parameters.
The change makes the following renames to make the intent of the
relevant qualifiers clearer:
EvqIn -> EvqParamIn
EvqOut -> EvqParamOut
EvqInOut -> EvqParamInOut
EvqConstReadOnly -> EvqParamConst
Bug: angleproject:4889
Change-Id: Idedd32c08a91de069b91b1657d6b783dddece04a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3041622
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
subpassLoad is available to desktop GLSL, but not GLSL ES. With this
change, subpassLoad is made available internally to the AST so that
framebuffer fetch's use of this built-in can be simplified.
Additionally, this makes the tree more consistent in that there's no
function call without a corresponding function declaration.
A follow up change will add an AST validation to enforce this.
Bug: angleproject:4889
Bug: angleproject:5454
Change-Id: I3fa502dc4b29eab7f34940466e283cffd218d746
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3040118
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
The `imageAtomic*` built-ins additionally include coordinate and
sample parameters that need to be fed to OpImageTexelPointer before the
atomic operation can be generated.
This change passes all *image*atomic* GLES31 deqp tests as well as:
GLSLTest_ES31.ArraysOfArraysOfR32fImages/ES3_1_Vulkan_DirectSPIRVGen
Bug: angleproject:4889
Change-Id: I9ed729d09914cb01467d4de504de38c931a9196e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3011419
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
GLSL contains a large number of built-in texture* and image* functions,
but these map to only a handful of SPIR-V instructions. The bulk of the
work to map these is to extract the arguments from the built-ins based
on their ordinal position.
Bug: angleproject:4889
Change-Id: I760d986bd9171ddde35f9f046c549ca53252df17
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2992980
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Most GLSL built-ins map directly to some SPIR-V operation. texture*()
and image*() built-ins are not implemented as well as a handful of other
built-ins that require special-handling.
Bug: angleproject:4889
Change-Id: I72abfb4692c3d66a3c8be43ce44ba6808efe6255
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2971646
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
EOpCallBuiltInFunction is removed in this change, as well as the
"op": "auto" property in builtin_function_declarations.txt. Instead,
gen_builtin_symbols.py automatically generates Ops for every built-in
function and generates the TOperator enum accordingly.
This simplifies SPIR-V code generation by allowing switches to be used
on operators instead of string comparisons.
Bug: angleproject:4589
Bug: angleproject:4889
Change-Id: Ia351524400b0e12a10a5572e27e9b88c6ec2e61c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2958869
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
Modify the symbol table generation script to accept a list
of supported extensions. This allows for the EXT and
OES versions of the geometry shader extension to be exposed.
Test: angle_deqp_khr_gles31_tests --deqp-case=*geometry_shader*
Bug: angleproject:3571
Change-Id: Ia7127a03dbd3fce78957f0505d3ce0c9bab6cb15
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2765011
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Translator can accept gl_LastFragData and 'inout' variable to gain
access to framebuffer attachment data. The Vulkan translator replaces
it with the SubpassInput type variable. Note that this works only for
the noncoherent version of the extension.
Bug: angleproject:5454
Test: *EXTShaderFramebufferFetchNoncoherent*.*
Change-Id: I392f84ee3ad3eb9fbd09d0b7ff83731a9a3f33f6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2598060
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Symbols that these extensions introduced were only accepted if the
extension directive was present. This is not necessary for es 320
shaders. This change adds a new tag to builtin variable and function
declarations in the translator, namely "essl_extension_becomes_core_in"
which makes gen_builtin_symbols.py automatically create two entries for
the builtin; one with the specified level and extension, one with the
core level and without extension. Entries in
builtin_function_declarations.txt can potentially be deduplicated as a
follow up to take advantage of this tag, though likely an anologous
"glsl_extension_becomes_core_in" needs to be introduced.
Bug: angleproject:5557
Bug: angleproject:5579
Change-Id: I84c19f48a3ccc89d82d80a4f35f7833205bbc88f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2649449
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
This extension is core in GLES 3.2
This CL enables the extension, added 412 new dEQP tests for texture
buffer. 410 of these tests pass, but there are two tests that fail,
detailed in anglebug.com/4933
Also includes a fix for completeness checks.
Based on a CL by Jonah Ryan-Davis.
Bug: angleproject:3573
Bug: angleproject:4933
Change-Id: I45759d765c88c64f21b592eab01d910dc4bc8da3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2521239
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>