Chrome makes assumptions that depend on ANGLE implementing 24bit
RGB as 32 RGBX. Since that was the behavior of ANGLE for a while,
remove those formats from the VK format table to force that behavior
again.
Test: Chrome on Fuchsia
Bug: angleproject:4282
Change-Id: I22a3f07b00d7870044ed6b3326dd528721b89af8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2085043
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Michael Spang <spang@chromium.org>
Existing CONSTANT_COLOR/CONSTANT_ALPHA limitation was generalized to independent blend states with draw call invalidation and a new end2end test. dEQP tests that are incompatible with this limitation result in INVALID_OPERATION and are marked as FAIL.
D3D11 renderer always normalizes and deduplicates requested blend states based on their enabled features and bound framebuffer.
Bug: angleproject:4394
Change-Id: I284796e18be71de1b5bfb087d36f6a45be4c3f70
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2070575
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Disable the forceOldRewriteStructSamplers feature for SwiftShader on
Android. Another change fixed the issue that prevented SwiftShader on
Android from supporting sampler arrays as parameters. The Qualcomm
driver still cannot support sampler arrays as parameters, and so it
still needs forceOldRewriteStructSamplers.
Bug: angleproject:4071
Bug: angleproject:2703
Change-Id: I77fbfacdad6cd9cc918c79fa0918f15de0558ce0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2086282
Commit-Queue: Ian Elliott <ianelliott@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
* removes the SwapInterval test. This test was not really based on
spec language. SwapInterval is highly os-dependent so likely a
robust test would include some OS-specific logic instead of timing.
* give the pbuffer surface non-zero dimensions. this fixes an uncaught
error on Windows and may give better results.
* lifts a couple Android suppression possibly related to the pbuffer
bug. a couple tests still fail.
Bug: angleproject:3123
Bug: angleproject:3162
Change-Id: I68e4e943b94d17777704bbe3b8ae7e646fc9c54d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2082131
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
In generateMipmaps, remove hard coded depth of 1, shift depth
like every other dimension.
Remove MipmapsForTexture3D test pixel value check, in es spec3.2 8.14.4
"No particular filter algorithm is required, though a box filter is recommended."
It's implementation-dependent. In current angle implementation, will
choose VK_FILTER_LINEAR/VK_FILTER_NEAREST according to vkdeice support.
Bug: angleproject:3983
Test: MipmapTestES3.MipmapsForTexture3D/ES3_Vulkan
Test: dEQP-GLES3.functional.samplers.single_tex_3d.diff_max_lod
Test: dEQP-GLES3.functional.samplers.single_tex_3d.diff_min_lod
Test: dEQP-GLES3.functional.samplers.multi_tex_3d.diff_max_lod
Test: dEQP-GLES3.functional.samplers.multi_tex_3d.diff_min_lod
Change-Id: I5e73f8c743053aeb521b5e0b3e372bbe77e57ad2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2076740
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
This cleans up the code. Using QueryHelper means we don't need to
duplicate the timestamp query/result code. It also means we don't need
special allocate/free functions in DynamicQueryPool.
Done while investigating timing GPU events for T-Rex.
Bug: angleproject:4433
Change-Id: I8512a5618e1dd00956942ae2d12d46d8193c4e51
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2081379
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Instead of attempting to run numConfigs^2 test permutations in a single
test we now split up each config into its own test. Each permutation
also gets a unique name based on the configs it is testing. Because
there were so many tests on some back-ends (e.g. D3D11) this CL adds
a way to hard limit the number of test permutations by discarding
random tests to reach a specified maximum per back-end.
Uses the GoogleTest "RegisterTests" API instead of using the GTEST
macros. See online GTest docs for more info.
This will allow more easily supporting test timeouts when running
batches of tests multi-process.
As a side effect we no longer need to restrict this test to Release
builds or ignore some renderers.
Bug: angleproject:4449
Change-Id: Ia7991e2a3906175413b77a876432061da527d03b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2050812
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Makes the wrapper classes take boxed query handles. Also cleans up some
repeated code patterns. It also encapsulates the QueryHelper class more
so that the pool indexes and handles are hidden from the user of the
class.
Fixed while working on GPU trace event timing.
Bug: angleproject:4433
Change-Id: Ib6cba9c52ec956ebede9b411b70261ea5b877d7d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2081378
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
This entry point is specifically for retrieving very large timestamp
values from EXT_disjoint_time_query. In GLES 2.0 contexts with the
Vulkan back-end we were getting some astronomical values that couldn't
be cast to 32-bit ints.
Also fix missing dependencies in generate_loader.py.
Bug: angleproject:4433
Change-Id: I59146dcc1a163a24ac2d7c37546f4551a7a8890a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2080595
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
commit_id.py was change to try running 'git status' to confirm that git
was present. This caused it to succeed if there was a git checkout
somewhere above ANGLE if ANGLE's .git didn't exist, incorrectly adding
a non-existant .git/HEAD file to the gn rule's inputs.
Always verify that ANGLE's .git/HEAD is present in commit_id.py.
BUG=angleproject:2344
Change-Id: I7e170f39c8d5cef73086ecf6d68925a1d3512de1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2082993
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Brian Osman <brianosman@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
We'll call this function from the Chromium angle_end2end_tests main.
First this CL needs to roll into Chrome. Then we can make a second CL
in ANGLE to change the way the EGLContextCompatibilityTests are set up.
This is to break up the slow tests into smaller pieces. See the issue
for more details.
Bug: angleproject:4449
Change-Id: Icc10679c61fd2f7a5e396f7a310ffcfd0b45893b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2082133
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Includes a new entry point needed for disjoint timer queries. This
header is copied exactly from Khronos's official repo. We add one
change so that we can include special ANGLE modifications in
gl2ext_angle.h.
Bug: angleproject:4433
Change-Id: I6c9cbdfa73ca3de052ff49c5ea91eb5e9a9ee699
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2080596
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
The perf tests can use this callback to instrument timer queries to
delineate render pass times on the device.
The new call pattern in the replay looks like this:
glBindFramebuffer(GL_FRAMEBUFFER, gFramebufferMap[1]);
OnFramebufferChange(GL_FRAMEBUFFER_OES, gFramebufferMap[1]);
Bug: angleproject:4433
Change-Id: Ice5150741d1d5becb26d60020e8c00e3a2fb6218
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2074337
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
In gl::ReadPixels(), ValidateReadPixels() will try to
flush staged updates before readPixels. In the case
where a texture was initialized with null RGBA data,
no Framebuffer dirty bits are set, and thus the staged
clear would never be flushed from the staged updates.
1. Add robust init in TextureVk::initImage to ensure
image is initialized.
Test: ./angle_end2end_tests --gtest_filter=\
RobustResourceInitTest*_Vulkan_AllocateNonZeroMemory
2. Update stageSubresourceRobustClear() to
kEmulatedInitColorValue in the case where robust resource
was initialized without full RGBA format to update
init value of robust resource.
Test: texture-attachment-formats.html in
webgl_conformance_vulkan_passthrough_tests.
3. Revert "Suppress Vulkan RobustResourceInit tests."
Revert commit a8e6a46312.
Reason for revert: re-enable related robust tests.
Bug: angleproject:4255
Change-Id: I79f20e0c02c2f1b1cd68ab590f0f765229f9e780
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1985503
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
This introduces an end2end test that makes the same GLES1
calls as Android's default boot animation. The test uses
images of much smaller sizes, but we do the same thing
with the images as the original code (it uses one image as a
mask and moves the other along behind it).
The original default boot animation code can be found here:
https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/cmds/bootanimation/BootAnimation.cpp#422
This change also implements glTexParameterx since the default boot
animation requires it. This function is part of OES_FIXED_POINT.
This also includes a test to check for int to floating point cast errors
when using GL_TEXTURE_CROP_RECT_OES.
Tests: angle_end2end_tests --gtest_filter=*DefaultBootAnimation*
angle_end2end_tests
--gtest_filter=*TextureParameterTest.IntConversionsAndIntBounds*
Bug: angleproject:3644
Change-Id: Ib7e99c9dc1c001c71543d03ea4dd76082192f6a7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2053506
Commit-Queue: Brandon Schade <b.schade@samsung.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tobin Ehlis <tobine@google.com>
This reverts commit 93e72f5f0e.
Reason for revert: This is having a negative impact on gfxbench
Manhattan 3.1 tests (20-30%) with only a minor improvement (~4%) in TRex offscreen. Pulling out for now and need to re-evaluate best
solution here.
Original change's description:
> Vulkan:Include precision qualifier in GLSL
>
> With this initial implementation, it's possible to get precision
> qualifier mis-matches in the generated GLSL 4.50. According to the
> spec this is allowed. From GLSLangSpec 4.50 section 4.7 "Precision and
> Precision Qualifiers":
>
> For the purposes of determining if an output from one shader stage
> matches an input of the next stage, the precision qualifier need not
> match.
>
> However, when converted to SPIR-V and run through the shader validation
> any mismatches will cause shader validation errors. Initially just
> ignoring those errors with this commit.
>
> Bug: angleproject:3078
> Change-Id: Ia2b04f90f0a7b6b1302c1b1b3e32bcfd8db9ed49
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2057749
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Reviewed-by: Tobin Ehlis <tobine@google.com>
> Reviewed-by: Tim Van Patten <timvp@google.com>
> Commit-Queue: Tobin Ehlis <tobine@google.com>
TBR=tobine@google.com,timvp@google.com,jmadill@chromium.org
# Not skipping CQ checks because original CL landed > 1 day ago.
Bug: angleproject:3078
Change-Id: I84984e2a963bde573f0f1de585001ceb83623c89
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2079334
Reviewed-by: Tobin Ehlis <tobine@google.com>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>