Extend validation to allow texture rectangle-backed textures as
blitFramebuffer sources and destinations.
Add end-to-end test covering this functionality, and run the
IOSurfaceClientBufferTests against both ES2 and ES3.
Bug: angleproject:3669
Change-Id: I7b8815a2c98072c12de45717afbba9e9b29ba253
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1694483
Commit-Queue: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
A few WebGL tests were failing on Linux/NVIDIA/passthrough because the
luminance workaround doesn't handle the case where the destination
texture is a luminance texture. For now, fallback to CPU readback in
this case.
Bug: chromium:773861
Change-Id: I1b85edccc2e257a5fa19cd496d86443ba96e07ad
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1695922
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
The extra_args wildcard doesn't support extra arguments prepended with
'--'. By using the unknown args returned by argparse, you can add
arbitrary args to the swarming call.
Bug: angleproject:3272
Change-Id: I8d4ab1e19ceae80b47cc2331e6e30a4187da863f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1695921
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Fix various shader translator validation errors related to uniform
buffers and naming.
Bug: angleproject:3459
Test: angle_deqp_khr_gles3_tests
Change-Id: Iaa66b61e91c8f38ec7cccb43d71be9ba3cd83da3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1684302
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Changes instances where we were querying 'color buffers' and 'depth
buffers' to 'color attachments' and 'depth attachments', etc.
Bug: angleproject:3611
Change-Id: I7af7d33e5204f21d288f5bcad997988d36eabfc5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1690679
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Convert the texture ID parameters into optimized vectors of Texture objects.
BUG=angleproject:3656
Change-Id: Iffe824ade2a919c9771642ae501ff04712ca43ce
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1688505
Reviewed-by: Michael Spang <spang@chromium.org>
This support was missing and caused dEQP crashes.
Bug: angleproject:3627
Change-Id: Idc06cc92df676061f8a08d0f32a1b3e7f03a66f4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1691102
Commit-Queue: Ian Elliott <ianelliott@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Not sure when these were fixed, but they pass now.
Bug: angleproject:3455
Bug: angleproject:3460
Change-Id: I0275ff001af3bab2599073143effcc54ee0bca82
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1692447
Commit-Queue: Ian Elliott <ianelliott@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
The storage buffers are placed in the same descriptor set as uniform
buffers. Some refactoring is done to reuse code that handles UBOs to
handle SSBOs as well. A good number of tests still fail as they test
SSBOs in conjunction with compute shaders.
Bug: angleproject:3561
Change-Id: Ia33c1f68e6f6402c746f5919ede87b2c308cf81c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1687126
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Makes the QUALIFIER macro take arguments similar to LAYOUT, to allow
passing in tokens to be conditionally output after the storage
qualifier.
Bug: angleproject:3561
Change-Id: I4368eba2c34c1398f81d33cd23c9e56557fd4ed8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1685876
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reason for disabling: Crashes are seen on
Fuchsia. Some parts are missing to appropriately
support the extension.
Bug: angleproject:3216
Bug: angleproject:3217
Bug: angleproject:3665
Change-Id: I4a7775e023702861d5e801289d49f39702cb19bf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1691311
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
This avoids using an unbounded number of semaphores in between calls to
swapbuffers. Using two semaphores should be sufficient to synchronize
swaps.
In addition, fix tracking of VkPipelineStageFlags by creating a 2nd
vector parallel to the semaphores vector. The last fix assumed there
could only be 2 wait semaphores, but that bound only applied to signal
semaphores. After this change, there can only be one signal semaphore,
but there's still no bound to wait semaphores.
Bug: angleproject:3637
Change-Id: I7fbba67fa4bbdf62b9e9d530a924acd5236705d3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1688435
Commit-Queue: Michael Spang <spang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
- wglSwapBuffers
- wglCreateContext
- wglMakeCurrent
These functions are needed by the OpenGL tutorial for Windows desktop
Bug: angleproject:3620
Change-Id: I699af63eca4a2c8aaf2c72278a580322410ac499
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1688499
Commit-Queue: Clemen Deng <clemendeng@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
This caused linux to fail to autogenerate the entry points.
BUG=angleproject:3611
Change-Id: Ia383ed134b1a4ecbcd5e03dca365cd21b8660ffe
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1690680
Reviewed-by: Jamie Madill <jmadill@chromium.org>
This moves more shared code into a simple templated helper function. It
will also allow us to call the parameter capture methods more easily
for mid-execution capture.
Refactoring change only.
Bug: angleproject:3611
Change-Id: I8d95a6230922dfa0403ba5c328df78735c765519
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1688508
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
onWrite now sets the dependency to make sure the order of setting
dependency and adding memory barrier is correct. onReadByBuffer is
added to handle buffer-to-buffer dependency and barrier setting
correctly without causing a graph loop. onExternalWrite is added so
that BufferVk doesn't have to track write access flags.
Additionally, setting write dependencies now include both read and write
flags. This is in preparation for SSBO support where the buffer can be
used to read data in addition to write.
Bug: angleproject:3561
Change-Id: I2028186ea14459cd159cf79f6d640df54538fc62
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1687119
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
It is undefined behaviour to delete a mutex that is locked by a thread. To
ensure that the global mutex is not locked, lock/unlock it before deleting it.
BUG=angleproject:2464
Change-Id: I735e924abfa06070f2b4103230be8593649ca340
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1690674
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
This change will make it possible for context classes to
access multiple versions, e.g. GL version and GLES version
Bug: angleproject:3661
Change-Id: I77a33d1c3ea3bffe94c64deb272219bbda1725a4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1689023
Commit-Queue: Clemen Deng <clemendeng@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Merge the copies of these files from opengl32/libGLESv2
folders and put them in libANGLE
Bug: angleproject:3650
Change-Id: I3b20617f17d031c9ecf4676f4162eff586963ed5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1688502
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Fixes UBO limits as well, both to use the per-stage Vulkan limit and to
account for driver uniforms now being dynamic.
Bug: angleproject:3561
Bug: angleproject:3633
Bug: angleproject:3605
Bug: angleproject:3443
Change-Id: I07e34923cc1d132e965a0b9c0590c96fc561fab1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1685877
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Now that we have support for program binaries, enable
the following end2end tests for Vulkan backend -
1. ProgramBinaryTest*
2. ProgramBinaryES3Test*
3. ProgramBinaryTransformFeedbackTest*
Bug: angleproject:3217
Change-Id: I007b03181c4c3c6c20e8cb278ed78cf14bff7f1f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1689824
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Capture is implemented mostly via code auto-generation. The capture
requires a bit of custom logic for each captured pointer parameter. We
handle this by using auto-generation to lay out the base template for
each GL call and then custom logic that uses ANGLE's internals to
know how much data to capture at which point. Client array pointers are
captured before each draw call.
Currently only GLES capture is supported. We write out cpp files and
an optional data file accompanying each cpp. For small data chunks we
inline them in the cpp files. For bigger chunks like texture data we
pack them into the data file.
Mid-execution capture is not yet supported. Configuring the capture is
currently only available by modifying the cpp sources. Both of these
features will be implemented in the future.
Bug: angleproject:3611
Change-Id: If6d5dac2f7bf363129d42ea9198162aef0d3a4ec
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1671904
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
- clarifies error for run_code_generation hashes.
- makes missing format or bug tag an error.
- check for spaces in bug tags.
Bug: angleproject:3659
Change-Id: I069e60d8acdf070961bdf342acf976ddd1138b1b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1689019
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
ANGLE tests try to load opengl32.dll from ANGLE directory instead of system
Bug: angleproject:3645
Change-Id: I3a8cea37252d13e915ff54ae6bbac920db16e4c4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1688544
Commit-Queue: Clemen Deng <clemendeng@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
The no_gtest target wasn't sharing its header visiblity with the main
target. Fix this using public_deps.
Also rolls angle-internal to pick up MSVC build fixes.
Bug: angleproject:3654
Change-Id: I4aca1f167031c0b41d1a7f7ff4d7303a960e2839
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1688500
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
The functions weren't properly exposed from the
EGL_ANGLE_feature_control extension.
Bug: angleproject:1621
Change-Id: Ie91a18966a84db88d6a9a555e75cba8cea0a6521
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1688498
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
This allows us to return the Sync's label when validation fails for a
Sync related entry point.
BUG=angleproject:3643
Change-Id: I64e8a8855a2e3b51768c2b560fdc4696bb325351
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1687120
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
New GLES3.1 vulkan tests were added to the bots. Add the results to the
ANGLE docs.
Bug: angleproject:3646
Change-Id: I503a00d38b570a1d8491acd8d1bac33723b2cbe4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1688545
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Instead of storing type/size/normalized/pureInteger we instead store a
pointer to the angle::Format. This makes some code logic simpler and
will let us more easily check if a vertex attribute format changes in
calls to VertexAttribPointer or VertexAttribFormat.
This CL adds extra information to angle::Format to represent the vertex
format info needed. It also caches the channel count so that it can be
queried faster.
Also renames "Int" -> "Sint" in UtilsVk for consistency.
Bug: angleproject:3256
Change-Id: I5ef9b983dad8a58c341113c802500b89ce081566
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1684293
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
To account for framebuffer flipping, `dFdy()` expressions
must be changed to:
dFdy() * ANGLEUniforms.viewportYScale
Bug: angleproject:3487
Test: dEQP-GLES3.functional.shaders.derivate.dfdy.*
Change-Id: I38f25ba37fb8c5ae61cee5ac911df88ec4a93fef
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1678404
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
This was removed with a previous commit to fix behavior of invariant
pragma overall, however, the flattening is still needed for the initial
translation step of webGL VSs.
This change restores the flattening as it previously existed, however it
is now only applied to VS outputs. FS inputs are no longer flattened as
the previous fixes preclude the need for that workaround any longer.
Bug: 980675
Change-Id: Ia3c0471e24cae2905eb0d7bde153091e4d3829b4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1687788
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Tobin Ehlis <tobine@google.com>
It requires GLES 2.0+
This should help keep
src/tests/gl_tests/gles1/TextureParameterTest.cpp:
TextureParameterTest.NegativeEnum
green even if the extension is propagated to the frontend
from the underlying renderer.
Bug: angleproject:3639
Change-Id: I04118e060f38cb774a6897ee6ce035b540a3b60e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1686822
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Lingfeng Yang <lfy@google.com>
Bug in UBOs over 65535 bytes is captured in the WebGL conformance test.
Add an ANGLE end2end test to capture this behavior.
Bug: angleproject:3388
Change-Id: I8151892d22b53a9100d26cceb124c13fdbfae844
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1687116
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
- Serialize and deserialize completed shader source of
program for saving out for glGetProgramBinary().
- Cleaned up some unnecessary includes in cpp files.
- Some refactoring within ProgramVk::ShaderInfo to minimize code
duplication.
- Added ProgramVk::ShaderInfo::saveShaderSource and
ProgramVk::ShaderInfo::loadShaderSource.
- Updated vk_caps_utils.cpp to enable getProgramBinary and add the
GL_PROGRAM_BINARY_ANGLE program binary format. This follows the pattern
for other backends.
Bug: angleproject:3216
Tests: dEQP-GLES3.functional.shader_api.program_binary*
angle_end2end_tests --gtest_filter=ProgramBinaryTest*
Change-Id: I927a27aaf9aa3d7fac550819ee80d2676ec1d1be
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1683099
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Was skipped only on Vulkan, but it hangs on other backends too, like
D3D11.
Bug: angleproject:3629
Change-Id: I3a812d86e1765507fb03a58c6d10c6a48edc0f2f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1687124
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>