|
be7049d7
|
2021-04-20T10:03:33
|
|
Vulkan: Redesign buffer descriptor set cache key.
Instead of writing the bitset masks, iterate up until the last active
buffer. Write zeros instead of skipping spaces. This is a bit simpler
to implement and also fixes a bug where empty buffers could cause us
to write invalid handles.
Bug: angleproject:5736
Change-Id: I785ef18ef5ae45109ec7d6e0b079b79a9984a1f8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2837848
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
e77e4d92
|
2021-04-09T16:29:36
|
|
tests: Add DepthStencilTestES3.ReadPixelsDepth24.
Add a test that creates a framebuffer formatted GL_DEPTH_COMPONENT24 and
read pixels from it using glReadPixels.
This test uses a combination of the GL_OES_depth24 and GL_NV_read_depth
extensions.
This test can only run on GLES3 as the GL_DEPTH_COMPONENT24 internal
format is not available on GLES2.
Test: angle_end2end_tests --gtest_filter=DepthStencilTestES3.ReadPixelsDepth24/ES3_Vulkan_SwiftShader
Bug: angleproject:5799
Change-Id: I4e898bf756498796df02ef41cc2b989df78f13df
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2817765
Commit-Queue: Lubosz Sarnecki <lubosz.sarnecki@collabora.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
a878e814
|
2021-04-11T15:04:19
|
|
Metal: Distinguish Metal backend from OpenGL's Metal driver
On macOS 11+ OpenGL is implemented on top of Metal internally.
This CL changes ANGLE's Metal backend's renderer string to better
differentiate it from the above OpenGL renderer.
Bug: angleproject:5841
Change-Id: I0d5466594e385cb663d537db034c82b006b6e907
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2820179
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
|
|
c275ce14
|
2021-04-19T14:06:53
|
|
Skip Texture2DBaseMaxTestES3.GenerateMipmapAfterRebase* on Mac ARM GL
Bug: angleproject:5880
Change-Id: I18698e0603938c43878ad4d28379d6976952c561
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2836787
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
b574643e
|
2021-04-19T12:47:05
|
|
D3D11: Skip blits if there is no intersection of dest areas
Blit11 would clip the destination rectangle with the destination size
but ignore the result. gl::ClipRectangle returns false when the
rectangles do not intersect at all, indicating the blit can be skipped.
This could lead to an out-of-bounds write to the GPU memory for the
destination texture.
Mark ClipRectangle as nodiscard to prevent future issues.
Bug: chromium:1199402
Change-Id: I260e82d0917b8aa7e7887f2c9f7ed4b1a03ba785
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2836786
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
a37d9748
|
2021-04-13T14:52:31
|
|
Vulkan: Add support for FBO with unequal sized attachments
OpenGLES 3.0 allows FBO with unequal sized attachments. This CL removes
assertion that all attachment must have equal size from vulkan backend,
and uses common intersect area to create VkFramebuffer object.
Bug: b/181800403
Change-Id: Icbb12a26784b184ebd91740855672013f64b889d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2824760
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
aa2d400a
|
2021-04-12T17:21:37
|
|
Vulkan: Add test for FBO with unequal sized attachments
Before OpenGLES3.0, framebuffer object with unequal sized attachment is
considered incomplete. That restriction has been removed in ARB version
of spec and is legit use in OpenGLES 3.0. This adds a test for this
specific usage.
Bug: b/181800403
Test: FramebufferTest_ES3.AttachmentWithUnequalDimensions
Change-Id: I79608bfd8f10855c6fc47511e080ba3ca4e46c59
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2824366
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
e8b18e79
|
2021-04-16T11:57:53
|
|
Skip failing test on AMD/Linux
This test was suppressed on AMD/Windows already.
Bug: angleproject:5687
Bug: angleproject:5874
Change-Id: I9b6bac81adc017f80634271063d53f3d4eebba0b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2831993
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
f2aa9d5d
|
2021-04-11T14:55:19
|
|
Reland: Metal: Support importing external metal textures
This relands I4d4a88cfbb77d8b7508b787c7fec44073d3b11b0.
Fixes:
- uninstantiated ImageTestMetal error
- failed ImageTest.ANGLEExtensionAvailability on ARM mac.
Bug: angleproject:5763
Bug: angleproject:5814
Change-Id: I906fe52baefd6be3c6e00f594795bd527df01616
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2820178
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Le Hoang Quyen <le.hoang.q@gmail.com>
|
|
0c77f3ad
|
2021-03-10T15:58:00
|
|
Vulkan: Implement shader buffers descriptor cache.
Implements a descriptor set cache for UBOs, SSBOs, and atomic counter
buffers. Storage Images and framebuffer fetch input attachments are
not yet included. Requires moving the buffer barrier handling into
ContextVk, similarly to how we handle the barriers for Textures.
The packed description key for the descriptors uses a "fast" vector
with a basic minimum size. For most cases of a few buffers this will
fit easily in stack memory, but for larger programs with many buffers
we fit this into heap memory. The key has a large upper bound due to
the high ES 3.2 requirements and the need to index several values such
as the offset and binding size.
We use dynamic offsets for uniform buffers when possible. This ensures
applications like Manhattan 3.1 that use sets of common buffers with
changing offsets hit the cache most of the time.
Because of resource limits we pick at compilation time whether to use
dynamic or static descriptor sets. Mostly this applies to tests that
use a large number of uniform buffers. A future implementation could
be smart and would recompile the program with heuristics to use a
minimal number of dynamic indices.
Reduces the number of descriptor set updates from ~300 -> ~30 per frame
in Manhattan 3.1 and in Asphalt 9 from 900+ to as low as 0 per frame.
Bug: angleproject:5736
Change-Id: I5c2a3881bec90d301dab15cc86c8a70e60674ad7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2757515
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
5eac3169
|
2021-04-09T15:54:11
|
|
Vulkan: Support sample/render to depth texture with different LOD
Previously we supported read only depth attachment that attachment and
sample are using the same texture. It was always assuming it will be
read only if the same texture is attached to FBO and same time bound to
texture unit. But we never supported if it actually writing to depth
texture, but at the different level with sampling. This is supported
OpenGL operation as long as the levels render to is outside [base_level,
max_level]. Later on, we added support of the above operation, but
limited to color buffers. This CL extends the same support of render and
sample to the same depth texture with non-overlapping levels. Android
game black desert mobile is running into this usage case.
Bug: b/181797383
Change-Id: I7ee1d52f27603f933102ad1b098684309449c406
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2819487
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Ian Elliott <ianelliott@google.com>
|
|
e55462b9
|
2021-04-09T18:27:16
|
|
Vulkan: Add test for render+sample depth texture with non-overlap LOD
Render and sample from the same texture and then bind to another FBO
without trigger texture bind should still detect the condition that it
is render and sample same texture.
Render to depth texture and sample form the same depth texture but with
non-overlapping levels should work.
Bug: b/181797383
Test: FramebufferTest_ES3.SampleFromAttachedTextureWithDifferentLODAndFBOSwitch
Test: FramebufferTest_ES3.RenderSampleImmutableDepthTextureWithExcludedLevel
Change-Id: I0d330d6f9530eb4fea417019a627890c4a5c1154
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2819486
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Ian Elliott <ianelliott@google.com>
|
|
c8ee13c7
|
2021-04-02T12:19:33
|
|
Vulkan: Fix a validation bug in glBeginTransformFeedback
Add logic to check the program or the pipeline before erroring out when
validating glBeginTransformFeedeback.
Bug: angleproject:5557
Test: ProgramPipelineXFBTest31.VaryingIOBlockSeparableProgramWithXFB*
Change-Id: I0df8a8d87b3632745bc91dc2673f2fac31c6cdb1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2743440
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
|
|
18c6d628
|
2021-03-09T13:46:13
|
|
GL: Support VAOs without native VAOs.
Share the default VAO state between all frontend VAO when
there is no native VAO support. Forcefully sync state every
time a new frontend VAO is bound.
Bug: angleproject:5577, chromium:1167179
Change-Id: Ieaedb5108ad28fc78e7e58b74495639c5246bb05
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2665266
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Peng Huang <penghuang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
5faed621
|
2021-04-12T17:48:56
|
|
Skip IOBlocksSeparate xfb test on Linux/ARM/Vulkan
Bug: angleproject:5493
Change-Id: I894e08a86157032d1e68a3d2b460bfdbbaeb6680
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2821415
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
fdba40fe
|
2021-03-31T12:52:00
|
|
Reland "Fix multithreaded crash on draw commands on D3D11 backend."
This is a reland of 8b9889bf62272fea2495331b622bde1f7c781bd0
The previous CL relied on a define which now only exists in
a specific gn configuration. This reland removes D3D11 as a
multithread-supported platform in the test configuration.
Original change's description:
> Fix multithreaded crash on draw commands on D3D11 backend.
>
> A crash can occur if thread A is executing eglDestroyContext while
> thread B issues a draw call, if the threads are interleaved in such a
> manner that a makeCurrent occurs without triggering a change to the
> global context and a dirtyAllState call. We handle that case by
> explicitly making current the proper contexts in the eglDestroyContext
> call.
>
> A test has been added that triggers a crash without this fix when
> running on the D3D11 backend. In addition, all of MultithreadingTest
> is enabled for the D3D11 backend.
>
> Test: Ran MultithreadingTest. Test exhibits a crash before this
> change, and does not after this change. Also ran:
> dEQP-EGL.functional.sharing.gles2.multithread.*
> dEQP-EGL.functional.multithread.*
>
> Bug: b/183756357
> Change-Id: Ic6f76a062868b2f3b4e60d29dc087ec180bfb7cd
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2798591
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Commit-Queue: Doug Horn <doughorn@google.com>
Bug: b/183756357
Change-Id: I5be9a011ea99a69730eddc9e4da23bcf92ed3bf2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2815243
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Doug Horn <doughorn@google.com>
|
|
923f6a6f
|
2021-04-06T15:30:26
|
|
Ignore internal format attribute for YUV D3D11 EGLImages
Internal format doesn't play any role in this case, and causes confusion
due to mixing sized and unsized formats resulting in more complicated
code in Chromium.
Bug: angleproject:5538, chromium:1116101
Change-Id: Ie200026f014850053108aa0416e1da15bcda7b84
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2808855
Commit-Queue: Sunny Sachanandani <sunnyps@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
af58be7e
|
2021-04-08T17:07:53
|
|
Add TextureType::Buffer to RecordBindTextureTypeError()
Bug: b/184767884
Change-Id: I67098de503748c86f2b957db76539e73c87bd179
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2818818
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Ian Elliott <ianelliott@google.com>
|
|
ba7531da
|
2021-04-07T12:51:17
|
|
Add tests that use, then update, then use buffers
This triggers vk::DynamicBuffer allocations in BufferVk.
Bug: angleproject:5719
Change-Id: Ida855b23618497f76102e55f89ab1678f9c08753
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2809856
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
fc189386
|
2021-04-08T21:51:46
|
|
Revert "Fix multithreaded crash on draw commands on D3D11 backend."
This reverts commit 8b9889bf62272fea2495331b622bde1f7c781bd0.
Reason for revert: Breaks CI
Original change's description:
> Fix multithreaded crash on draw commands on D3D11 backend.
>
> A crash can occur if thread A is executing eglDestroyContext while
> thread B issues a draw call, if the threads are interleaved in such a
> manner that a makeCurrent occurs without triggering a change to the
> global context and a dirtyAllState call. We handle that case by
> explicitly making current the proper contexts in the eglDestroyContext
> call.
>
> A test has been added that triggers a crash without this fix when
> running on the D3D11 backend. In addition, all of MultithreadingTest
> is enabled for the D3D11 backend.
>
> Test: Ran MultithreadingTest. Test exhibits a crash before this
> change, and does not after this change. Also ran:
> dEQP-EGL.functional.sharing.gles2.multithread.*
> dEQP-EGL.functional.multithread.*
>
> Bug: b/183756357
> Change-Id: Ic6f76a062868b2f3b4e60d29dc087ec180bfb7cd
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2798591
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Commit-Queue: Doug Horn <doughorn@google.com>
Bug: b/183756357
Change-Id: I2e9d6385576330f84623d7dafbf690642fcb441f
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2815242
Commit-Queue: Doug Horn <doughorn@google.com>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
|
|
0261b1d3
|
2021-03-31T10:48:08
|
|
PPO: Fix updating sampler uniforms between draws
Updating sampler uniforms when using PPOs is currently broken, since the
Context/State use the currently bound ProgramExecutable which belongs to
the PPO, but the updates only happen to the Program's executable that
the uniform belongs to.
This change updates Program::updateSamplerUniform() to update any PPO
ProgramExecutables with the updated texture information when a Program's
sampler uniforms are updated, so the Context/State use the correct data.
Bug: b/182409935
Test: ProgramPipelineTest31.SampleTextureAThenTextureB
Test: SamplersTest31.SampleTextureAThenTextureB
Change-Id: I3c4e156c6e0c781e706f321f0bd12baf484ff42a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2797951
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
8b9889bf
|
2021-03-31T12:52:00
|
|
Fix multithreaded crash on draw commands on D3D11 backend.
A crash can occur if thread A is executing eglDestroyContext while
thread B issues a draw call, if the threads are interleaved in such a
manner that a makeCurrent occurs without triggering a change to the
global context and a dirtyAllState call. We handle that case by
explicitly making current the proper contexts in the eglDestroyContext
call.
A test has been added that triggers a crash without this fix when
running on the D3D11 backend. In addition, all of MultithreadingTest
is enabled for the D3D11 backend.
Test: Ran MultithreadingTest. Test exhibits a crash before this
change, and does not after this change. Also ran:
dEQP-EGL.functional.sharing.gles2.multithread.*
dEQP-EGL.functional.multithread.*
Bug: b/183756357
Change-Id: Ic6f76a062868b2f3b4e60d29dc087ec180bfb7cd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2798591
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Doug Horn <doughorn@google.com>
|
|
afd32d8e
|
2021-03-30T15:50:57
|
|
Vulkan: Remove mMaxLevel from ImageHelper class
This CL removes mMaxLevel from ImageHelper class. Instead, it now uses
front end's max level information when possible.
Bug: b/181800403
Change-Id: Ie0f6bd11e3ca0d4ddfc98f21261396c4d71b7140
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2796153
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Ian Elliott <ianelliott@google.com>
|
|
4756d5e6
|
2021-03-22T17:28:30
|
|
Mark most draw modes valid when no program is bound
gpu_angle_passthrough_fuzzer discovered a crash when glDrawArrays() is
called without a program bound. This was caused by assuming it's an
error to draw certain primitive types without a program bound, which is
incorrect. This fix is to mark all draw modes except Patches valid when
there is no program bound. Patches is handled separately by TS
validation.
Bug: chromium:1185267
Bug: angleproject:5483
Test: gpu_angle_passthrough_fuzzer
Test: SimpleOperationTest31.DrawWithoutProgramBound
Test: KHR-GLES31.core.draw_indirect.basic-mode-*adjacency
Change-Id: I294078b8695e0b8f36d3b7ad3c1aa71d2a275038
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2780971
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Tim Van Patten <timvp@google.com>
|
|
08b7c55c
|
2021-03-30T13:51:04
|
|
Vulkan: Remove mBaseLevel from ImageHelper class
This removes mBaseLevel from ImageHelper class. With the
mFirstAllocatedLevel tracking exactly which GL level has been allocated,
this cached mBaseLevel is no longer needed.
Bug: b/181800403
Change-Id: I99d66c93b0c8f1bd20a5811b51f512a27927201e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2795275
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Ian Elliott <ianelliott@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
b5a71140
|
2020-08-20T17:24:21
|
|
Vulkan: Make storage actually immutable for immutable textures
The immutable textures are intended to be "immutable". Right now we are
still re-allocating VkImage object based on base_level and max_level.
This causes a problem for rendering to a level that is beyond
[base_level, max_level], which is totally within OpenGL spec. This CL
makes an immutable texture always allocate from 0 to max levels that are
specified by a glTexStorage call. Changing base_level will not trigger
re-allocation of VkImage object.
Bug: b/181800403
Change-Id: I4b4ddea17b7f6f7bfd8f36bfe8bb3a35b5c180b6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2368038
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Ian Elliott <ianelliott@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
323c5f24
|
2021-03-29T17:47:53
|
|
Validate PPO sampler uniforms
"Command & Conquer: Rivals" uses PPOs and was hitting the following
assert:
angle::Result ContextVk::updateActiveTextures(const gl::Context *context)
{
...
for (size_t textureUnit : activeTextures)
{
gl::Texture *texture = textures[textureUnit];
gl::TextureType textureType = textureTypes[textureUnit];
ASSERT(textureType != gl::TextureType::InvalidEnum);
This is the same assert that is generated by the test
ProgramPipelineTest31.DifferentTextureTypes which is currently being
skipped since it's known to fail.
This CL refactors sampler validation into the ProgramExecutable to allow
PPOs to take advantage of the shared code and behave correctly, since
the necessary data is already copied into the PPO's ProgramExecutable
via ProgramExecutable::updateActiveSamplers(). This also takes advantage
of the subject/observer pattern that's already established between
programs and PPOs to ensure only the PPOs that the program is a part of
are updated when a program's sampler uniforms are updated.
Bug: angleproject:3570
Bug: b/182409935
Test: ProgramPipelineTest31.DifferentTextureTypes
Change-Id: I3d34efd66dc85e7ff23a8422cb14d5f90a5f7085
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2792862
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
fe6b4269
|
2021-03-25T14:04:41
|
|
Vulkan: Add baseLevel and generateMipmap test for immutable texture
Immutable texture may implemented slightly differently in driver. This
CL adds a new test that calls glGenerateMipmap after changing
GL_BASE_LEVEL and GL_MAX_LEVEL. It also expands PingPongBaseLevel to
test immutable texture as well.
Bug: b/181800403
Test: Texture2DBaseMaxTestES3.PingPongBaseLevelImmutable
Test: Texture2DBaseMaxTestES3.GenerateMipmapAfterRebaseImmutable
Test: Texture2DBaseMaxTestES3.GenerateMipmapAfterRebase
Change-Id: I4ccf58f588bfd5e02a6fc7439b6fe535fca8dd7c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2787253
Reviewed-by: Ian Elliott <ianelliott@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
a9bcbac3
|
2021-03-31T15:30:42
|
|
Vulkan: Add test render to immutable texture will flush
There was a bug that if there is a pending update in the immutable
texture's level that is outside of [base, max], and then when you render
to that level, the pending update will not get flushed. This test verify
this bug.
Bug: b/181800403
Test: FramebufferTest_ES3.RenderImmutableTextureWithSubImageWithBeyondMaxLevel
Change-Id: Id9a5a141d26d45a3a154c331086bb64b0b094cdf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2797724
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Ian Elliott <ianelliott@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
256100b2
|
2021-04-02T01:45:14
|
|
Revert "Metal: Support importing external metal textures"
This reverts commit 2ec3e0a1e6890da56de9dfd3da5c9f31a3f7fbb7.
Reason for revert: Test suite ImageTestMetal never instantiated https://anglebug.com/5814
Original change's description:
> Metal: Support importing external metal textures
>
> via KHR_image_base and ANGLE_metal_texture_client_buffer
>
> Bug: angleproject:5763
> Change-Id: I4d4a88cfbb77d8b7508b787c7fec44073d3b11b0
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2757811
> Commit-Queue: Le Hoang Quyen <le.hoang.q@gmail.com>
> Reviewed-by: Kenneth Russell <kbr@chromium.org>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Bug: angleproject:5763, angleproject:5814
Change-Id: Ia862aa37a6c914f6e21f9b3121c7c36d449475ea
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2801155
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
|
|
80305ca4
|
2021-03-29T17:18:52
|
|
D3D: fix uniform block alignment error
If the uniform block will be translated to HLSL StructuredBuffer,
in order to follow the std140 rules, we should add padding between
the members if necessary.
Bug: chromium:1193170
Change-Id: I75bc3538a66fc0c2a9c9ebf15fddeaab94d7a949
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2790518
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jiajia Qin <jiajia.qin@intel.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Xinghua Cao <xinghua.cao@intel.com>
|
|
2ec3e0a1
|
2021-03-13T22:17:49
|
|
Metal: Support importing external metal textures
via KHR_image_base and ANGLE_metal_texture_client_buffer
Bug: angleproject:5763
Change-Id: I4d4a88cfbb77d8b7508b787c7fec44073d3b11b0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2757811
Commit-Queue: Le Hoang Quyen <le.hoang.q@gmail.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
ae937aae
|
2021-03-19T20:10:42
|
|
Detach separable shaders
This effectively reverts the following CL:
Vulkan: Don't detach separable shaders in Program::detachShader()
https://chromium-review.googlesource.com/c/angle/angle/+/2084399
Bug: angleproject:3570
Bug: b/182409935
Test: ProgramPipelineTest31.DetachAndModifyShader
Change-Id: Id69f732d1d4f3eea70b2de8c008452878eaf1682
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2776267
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
fe3a9ffb
|
2021-03-17T18:05:40
|
|
Support linking PPOs without attached Shaders
The application "Command & Conquer: Rivals" uses the following pattern:
// Create and link VS, save binary data
glCreateProgram()
glAttachShader()
glLinkProgram()
glGetProgramBinary()
// Create and link FS, save binary data
glCreateProgram()
glAttachShader()
glLinkProgram()
glGetProgramBinary()
...
// Create VS, load binary data
glCreateProgram()
glProgramBinary()
// Create FS, load binary data
glCreateProgram()
glProgramBinary()
...
glUseProgramStages(GL_VERTEX_SHADER_BIT)
glUseProgramStages(GL_FRAGMENT_SHADER_BIT)
glBindProgramPipeline()
Later, when issuing the draw command that uses the PPO, the PPO must be
linked with the Programs that were loaded via binary data. Those
Programs don't have any Shaders attached, just linked. This CL adds
support for linking Programs without attached Shaders.
Bug: b/182409935
Test: ProgramPipelineTest31.ProgramBinary
Change-Id: Ic5a4776e1374322665f45fbbcbf955838d093d02
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2770685
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
e3b9dbef
|
2021-03-17T18:01:02
|
|
Update PPO's executable when attached program is re-linked
When a program that's being used by a PPO is successfully re-linked, the
PPO's ProgramExecutable needs to be updated. This takes advantage of the
subject/observer pattern that's already established between programs and
PPOs to ensure only the PPOs that the program is a part of are updated.
Bug: b/182409935
Test: ProgramPipelineTest31.ModifyAndRelinkShader
Change-Id: Idcc11e7e819b4a9bef02bdd71afc8ea58111acc6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2770684
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
f28d63e9
|
2021-03-24T11:14:24
|
|
Vulkan: Enable glBlitFramebuffer for EXT_sRGB_write_control
Implements support for the glBlitFramebuffer edge case in the
EXT_sRGB_write_control spec, and fully exposes this extension.
Bug: angleproject:5075
Test: SRGBFramebufferTest*.*Vulkan*
Change-Id: I05f044abbc5cb272825d1fc4b9028217f18e63c2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2785641
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
|
|
525fde75
|
2021-03-22T14:55:21
|
|
Fix potential mod by 0 with invalid formats.
If the format passed to MakeValidSize is invalid, there
is potential for a mod by 0 which can result in a crash.
Test: Verify no crash when format is invalid.
Bug: b/182823289
Change-Id: I7f538be5d984070984f5581a5cc7ea47264109f4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2780557
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Doug Horn <doughorn@google.com>
|
|
010d61f2
|
2021-03-24T13:08:38
|
|
Disable Framebuffer Fetch test.
See issue for more details.
Bug: angleproject:5792
Change-Id: I7a72dfe75a85f2bf69e3528f35c01ca69c67f8f2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2785420
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
dd5705e7
|
2021-03-24T08:18:24
|
|
Add missing qualifier type handling in translator
Translator checks tessellation shader unsized array type qualifier.
sample in/sample out were missing in handling qualifier type.
Bug: angleproject:5557
Test: GLSLTest_ES31.VaryingTessellationSampleInAndOut*
Change-Id: I8a2f2c4c4fcc9cc88000d3b2d448ab51fb9e5d38
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2776263
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
|
|
ef17c650
|
2021-03-08T18:50:53
|
|
Vulkan: Add test for filament gltf usage case
filament gltf sample code is rendering to a level that is excluded from
[base_level, max_level]. This is allowed by OpenGL spec. We are crashing
right not. This CL adds tests for the exact usage pattern for filament.
Bug: b/181800403
Test: FramebufferTest_ES3.RenderAndInvalidateImmutableTextureWithBeyondMaxLevel
Test: FramebufferTest_ES3.RenderAndInvalidateImmutableTextureWithSubImageWithBeyondMaxLevel
Test: FramebufferTest_ES3.RenderAndInvalidateImmutableTextureWithBellowBaseLevelLOD
Change-Id: I69bab8bc3961bbc2dcc78ba2db3c8759f277416b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2752897
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
2be71410
|
2021-03-19T14:07:02
|
|
Handle inactive structure type varyings correctly
Correctly handle inactive varyings of structure type when collecting
transform feedback varyings. Previously, all varyings of structure type
were marked as active by mistake.
Bug: angleproject:5557
Test: TransformFeedbackTest.InactiveStructureVarying*
Change-Id: Ica1cbce5c551cdbb97999eeac59d09a961937615
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2770680
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
7fe44a53
|
2021-03-20T09:39:09
|
|
Vulkan: Don't acquire new BufferHelper for external buffers
EXT_external_buffer spec -
This extension allows the data store for an immutable buffer to be
sourced from an external EGLClientBuffer, allowing sharing of EGL
client buffers across APIs, across processes, and across different
processing cores such as the GPU, CPU, and DSP.
The intent is for a single backing memory to be reused across various
processes and processors. Ensure that a glBuffer backed by external
memory does not orphan the memory when glBuffer APIs like
glBufferSubData or glMapBufferRangeEXT modify the glBuffer.
Bug: angleproject:4380
Bug: angleproject:5073
Tests: ExternalBufferTestES31.*DoesNotCauseOrphaning*Vulkan
Change-Id: I4e88f80d93ee1ba1208378121412926351d10af8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2776192
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
d5bc8a27
|
2021-03-17T18:21:35
|
|
Vulkan: Add VUID-vkCmdDraw-None-04584 validation error to ignore list
Aztec ruins is using the same texture (but different level controlled by
a uniform variable) for textureLod and rendering. This triggers vulkan
validation error. This CL put it in the ignore list so that it can pass.
Bug: b/175584609
Change-Id: I7623e7b448514b3c12268aa5fe154f4c2f59b059
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2770686
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
867411a4
|
2021-03-08T19:08:14
|
|
Vulkan: Track images used for both attachment and sampler
This CL adds a new layout ImageLayout::ColorAttachmentAndShaderRead. We
detect that the same ImageHelper object is used for both sampler and
attachment and will pick this new layout instead of ColorAttachment.
Bug: b/175584609
Change-Id: I2089f59d4dc1ad4de7edab0e067797adcfa9b020
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2749479
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
0a80f2e1
|
2021-03-15T16:56:08
|
|
D3D: Mark images dirty after recovering from storage
When images are recovered from storage due to resizing storage, they
were marked as clean and not always re-copied to the new storage.
Bug: angleproject:5757
Bug: chromium:1188854
Change-Id: Idd11025820433ab74ff769cd9508efcec4575c32
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2763282
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
ba0bd785
|
2021-03-15T16:00:33
|
|
Fix the assert error and inbalence parens for SSBO
This PR strengthens below two cases:
1. Support calculate unsized array size for any type. Previously,
it reported error when the type was a structure.
2. Correctly add the right paren for store function when any
load/length functions are nested in it.
Bug: angleproject:5734
Change-Id: I3428fa35f1481275e1d193094ceddb011f747cf1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2762655
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jiajia Qin <jiajia.qin@intel.com>
|
|
1f1b4ffe
|
2021-03-08T11:44:28
|
|
Vulkan: Test render and sample the same texture but with different LOD
This simulates aztec ruin's usage. This works properly on native OpenGL
but generates validation error on vulkan backend and renders incorrect
as well.
Bug: b/175584609
Test: FramebufferTest_ES3.SampleFromAttachedTextureWithDifferentLOD
Change-Id: I402c205a1b625669cae29ee201dddd144e0dfbde
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2743797
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
bb7c1442
|
2021-03-17T10:17:31
|
|
Fix immutable texture base level validation
Jeff's new rendering feedback loop test
(https://github.com/KhronosGroup/WebGL/pull/3221) found a couple of
issues with texture base level validation. For immutable textures the
base level is clamped to the valid range, so setting an out of range
base level does not make an immutable texture sampler incomplete, and
we need to use the clamped value when checking for rendering feedback
loops.
Bug: angleproject:5768
Change-Id: Ie065709efd736f2cf75d4f980e8ac27999f80142
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2767901
Commit-Queue: James Darpinian <jdarpinian@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
81dcf078
|
2021-03-08T11:21:31
|
|
Reland "Vulkan: Support EXT_sRGB_write_control"
This is a reland of 6073af536cf627742696823edc82c9b0a481a8bc
with 2 changes -
1. Don't enable the extension even in nonConformant mode
2. Don't enable VK_KHR_image_format_list for swiftshader
Original change's description:
> Vulkan: Support EXT_sRGB_write_control
>
> Implement support for EXT_sRGB_write_control. This extension
> requires VK_KHR_image_format_list to be supported.
>
> The spec requires this functionality to work with glBlitFramebuffer
> as well but support for that will be added in a follow up change.
> As such, this extension is only exposed in non-conformant mode.
>
> Bug: angleproject:5075
> Tests: SRGBFramebufferTest.*Vulkan*
> Change-Id: I59b38f6cd810a3d0d67ec29f4f19c25f65f70862
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2617243
> Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Bug: angleproject:5075
Change-Id: I8e149d196a39c3c4769bfa8690792f3c53831299
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2762647
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
|
|
89d2a96a
|
2021-03-09T18:37:57
|
|
Vulkan: Add test for UBO descriptor allocations.
This performance counter test verifies that re-binding the same
two buffers repeatedly doesn't allocate new descriptor sets. Currently
the test fails because we don't cache descriptor sets for UBOs.
Covers equivalent code patterns in Asphalt 9.
Reorganizes the perf counters collected for the program objects. Now
they are per-frame reset instead of cumulative. This tracking is now
consistent for the different counter types. In the future we can add
cumulative tracking for all per-object and global perf counters.
Bug: angleproject:5736
Change-Id: I23d04b6453e38af1cf4af7274d24382d136efad3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2746176
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
c5a7da47
|
2021-03-11T13:12:04
|
|
Suppress flaky MultithreadingTest on Win/Swangle
MultithreadingTest.MultiContextDrawWithSwapBuffers/ES3_Vulkan_SwiftShader_NoVirtual
Bug: angleproject:5099
Change-Id: I12ab4a6fb7fff8d6bc7358e6017cb10e46362b88
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2752893
Reviewed-by: Ian Elliott <ianelliott@google.com>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Ian Elliott <ianelliott@google.com>
|
|
7c02cfee
|
2021-03-11T19:01:13
|
|
Avoid undefined behavior in BPTCCompressedTextureTest
Bug: angleproject:5360, angleproject:5731
Change-Id: Ia883d2d319d7ce4659f4e1e99b5eccf0e01a45e1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2752747
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
44b9579c
|
2021-03-10T08:10:33
|
|
Vulkan: Treat varyings in a separable program as active
When separable programs are linked, varyings at the separable program's
boundary need to be treated as active.
Bug: angleproject:5557
Test: ProgramPipelineTest31.VaryingIOBlockSeparableProgram*
Change-Id: I28af2bdf6478a408b3a7155ab4376ed6a19192f4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2742659
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
c935ba5b
|
2021-03-09T08:40:22
|
|
Vulkan: Collect inactive varyings by block name for I/O blocks
ANGLE only collects inactive varyings by instance name. The SPIR-V
transformer expects I/O blocks to be identified by block name. If an I/O
block is inactive, an assertion would fire because the block name is not
in the shader variable info map.
Bug: angleproject:5676
Test: GLSLTest_ES31.VaryingIOBlockNotDeclaredIn*Shader*
Change-Id: I40e51c9770b03457e3896dcb2afa4e9525b098d8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2742658
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
|
|
7f1c0c3b
|
2021-03-09T08:09:55
|
|
Call resolveLink in Program::attachShader and Program::detachShader
Previously glAttachShader and glDetachShader would only call
resolveLink during validation.
Adding the resolveLink in attachShader/detachShader handles the case
where glAttachShader and glDetachShader is called with
EGL_CONTEXT_OPENGL_NO_ERROR_KHR to skip validation.
Tests: angle_end2end_tests --gtest_filter=ContextNoErrorTest.DetachAfterLink*
Bug: angleproject:2868
Change-Id: I1e01cf8e6f8a382333226bdef037c46f4c62a119
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2745654
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
|
|
ac382039
|
2021-03-08T16:02:18
|
|
Allow graceful no-error failure in CastStateValues.
Bug: angleproject:5738
Change-Id: Iecc498b35281b8fd676f1168c3a4ed6b407d18a1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2743668
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
b27740f3
|
2021-03-09T16:15:15
|
|
Revert "Vulkan: Support EXT_sRGB_write_control"
This reverts commit 6073af536cf627742696823edc82c9b0a481a8bc.
Reason for revert: crbug.com/1186140
Original change's description:
> Vulkan: Support EXT_sRGB_write_control
>
> Implement support for EXT_sRGB_write_control. This extension
> requires VK_KHR_image_format_list to be supported.
>
> The spec requires this functionality to work with glBlitFramebuffer
> as well but support for that will be added in a follow up change.
> As such, this extension is only exposed in non-conformant mode.
>
> Bug: angleproject:5075
> Tests: SRGBFramebufferTest.*Vulkan*
> Change-Id: I59b38f6cd810a3d0d67ec29f4f19c25f65f70862
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2617243
> Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Bug: angleproject:5075,chromium:1186140
Change-Id: Ib0d4d60fe7434fb950f99db2c210aab9af7d2d0e
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2743663
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Peng Huang <penghuang@chromium.org>
|
|
57727c4e
|
2021-03-08T17:32:25
|
|
Further suppress tests failing on Ozone.
Since MipmapTest and Texture3DTestES2 fail in testSetUp(),
it also needs to be skipped, in addition to the failing tests.
Also suppress instantiation error for ES3-only QueryObjectTest
Bug: angleproject:5725, angleproject:5728, angleproject:5704
Change-Id: Iac6549afd7609a2aee78bcfdb7c3de41886f3505
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2743920
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
6073af53
|
2021-03-08T11:21:31
|
|
Vulkan: Support EXT_sRGB_write_control
Implement support for EXT_sRGB_write_control. This extension
requires VK_KHR_image_format_list to be supported.
The spec requires this functionality to work with glBlitFramebuffer
as well but support for that will be added in a follow up change.
As such, this extension is only exposed in non-conformant mode.
Bug: angleproject:5075
Tests: SRGBFramebufferTest.*Vulkan*
Change-Id: I59b38f6cd810a3d0d67ec29f4f19c25f65f70862
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2617243
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
92b5fccd
|
2021-03-02T08:43:18
|
|
Handle nullptr in GetQueryObjectParameter()
There are applications that disable validation using
EGL_CONTEXT_OPENGL_NO_ERROR_KHR extension. In such usecases
the GetQueryObjectParameter() method needs to account for the
possibility that the query object has not yet been created.
Bug: angleproject:5704
Tests: angle_end2end_tests --gtest_filter=QueryObjectTest*
Change-Id: Ib9e1cb32a6d64f2772124178223cf07cbb84691b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2729298
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
|
|
a0bc2589
|
2021-03-05T19:27:04
|
|
Skip tests failing on Ozone.
MipmapTest.DefineValidExtraLevelAndUseItLater
MipmapTest.GenerateMipmapAfterModifyingBaseLevel
MipmapTest.GenerateMipmapAfterSingleLevelDraw
MipmapTest.GenerateMipmapFromInitDataThenRender
MipmapTest.GenerateMipmapFromRenderedImage
MipmapTest.MipMapGenerationD3D9Bug
MipmapTest.MipmapsForTexture3DOES
MipmapTest.RenderOntoLevelZeroAfterGenerateMipmap
MipmapTest.TextureCubeGeneralLevelZero
MipmapTest.TextureCubeRenderToLevelZero
MultisampleTest.AlphaToSampleCoverage
MultisampleTest.ContentPresevedAfterInterruption
MultisampleTest.Line
MultisampleTest.Point
MultisampleTest.Triangle
Texture3DTestES2.CopySubImageAlpha
Texture3DTestES2.CopySubImageLuminance
Texture3DTestES2.CopySubImageRGBA
Texture3DTestES2.Luminance
Texture3DTestES2.RGBA
Bug: angleproject:5725, angleproject:5727, angleproject:5728
Change-Id: Ibe7d7e44e01ce430e381edd0c83c3e24069b35aa
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2738718
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
8a48f4de
|
2021-03-05T14:33:16
|
|
Skip CopyTextureVariationsTest failing on Ozone
CopyTextureVariationsTest.CopyTexture
CopyTextureVariationsTest.CopySubTexture
Bug: angleproject:5723
Change-Id: Iad62344b9bc503a2553647877c5975b03bb6829d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2738602
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
a6b16d29
|
2021-03-02T19:04:57
|
|
Suppress UNINSTANTIATED_PARAMETERIZED_TEST failures on Ozone
We only support ES2 on Ozone, so tests that depend on ES3 or ES31
support are not instantiated there.
Bug: chromium:1183147
Change-Id: Id58bcd9b44a5b9a70b5ae8115e27c44f5dc81226
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2726550
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
d8557cc8
|
2021-03-03T10:17:46
|
|
Fix for readPixels() to PBO fast path.
Include the "pixels" (data) pointer as offset.
Bug: angleproject:5702
Change-Id: Idc9f3ee4c0dbb1cc9308393bbf877d6137598486
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2732789
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Stephen White <senorblanco@chromium.org>
|
|
cdef22a5
|
2021-03-03T10:19:31
|
|
Skip TransformFeedbackTest.MultiContext on Metal
This test is flaky on the metal backend.
Bug: angleproject:5713
Change-Id: I1d789825e0322f00b017a60f8fd1cef02b5b3088
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2732787
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
6af0c03f
|
2021-02-25T18:15:21
|
|
Vulkan: Always write to swapchain alpha channel
This fixes an issue with the "Ragnarok M: Eternal Love" game, which
uses a GL_RGB8 format for its window, which is actually backed by a
GL_RGBA8 format (a.k.a. "emulated alpha"). The game does no explicit
clear per frame. Therefore, ANGLE selects a render pass
loadOp=DONT_CARE, which leaves the alpha channel undefined (0.0 on a
Pixel 4 XL). That causes SurfaceFlinger to show (blend or alternate
vsyncs) what should have been covered up by the game (e.g. the Android
launcher and live wallpaper).
The solution is to prevent loadOp=DONT_CARE for emulated alpha.
Test: ClearTest.ChangeFramebufferAttachmentFromRGBAtoRGB
Test: dEQP-GLES2.functional.fbo.render.stencil_clear.tex2d_rgb_stencil_index8
Bug: b/180139027
Change-Id: Ied97b57c93d41326cb3294ff246691e09f316791
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2704949
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Ian Elliott <ianelliott@google.com>
|
|
5b82fa2e
|
2021-02-28T11:11:34
|
|
Suppress UNINSTANTIATED_PARAMETERIZED_TEST failures on Win AMD
GTest complains that we don't run some tests on D3D/Vulkan backends.
They only run on GL backend, which is disabled on Win AMD
per http://anglebug.com/5123
Bug: chromium:1183147
Change-Id: I95fdd9a24aff69aa60e2f60613d8300ae1019a27
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2726576
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
2b55f876
|
2021-01-29T18:02:21
|
|
Reland "Workaround for Mac Intel drawArraysInstanced with first > 0"
This is a reland of 027bc47ca5b7b291fbda907173eefa05ad3d45a8
Original change's description:
> Workaround for Mac Intel drawArraysInstanced with first > 0
>
> Workaround by forcefully set instanced arrays (divisor > 0)
> as streaming attributes and apply extra offset at front. Recover
> those attribute bindings when first == 0 and other draw calls
> (drawElementsInstanced)
>
> Bug: chromium:1144207, chromium:1144247, chromium:1144373
> Change-Id: Ie7836cc71b45a290513f34f90d49bd15b14ddba8
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2661095
> Commit-Queue: Shrek Shao <shrekshao@google.com>
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Bug: chromium:1144207
Bug: chromium:1144247
Bug: chromium:1144373
Bug: angleproject:5271
Change-Id: Id0b818b25a605376c98c2366c1f2029e2490c6cb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2704799
Commit-Queue: Shrek Shao <shrekshao@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
f9c595b4
|
2021-02-26T11:53:30
|
|
Skip 3 SimpleStateChangeTestES31
DrawWithTextureThenDrawWithImage on Win Intel GL
ClearThenSampleWithCompute on Linux AMD GL
TransformFeedbackThenReadWithCompute on Win AMD Vulkan
Bug: angleproject:5686, angleproject:5687, angleproject:5688
Change-Id: If380074389382bc7e9a8b8668c83fb9c8ef2084d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2723291
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
ba233b6a
|
2021-02-25T13:44:32
|
|
Suppress 1 VulkanExternalImageTest on Linux AMD Vulkan
VulkanExternalImageTest.TextureFormatCompatChromiumMutableNoStorageFd
Bug: angleproject:5682
Change-Id: Id2aa15f4943f9132d133eeb540e35e405896a3b6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2718530
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
550f2a3e
|
2021-02-24T09:49:42
|
|
Vulkan: Shader support for EXT_shader_framebuffer_fetch_non_coherent
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>
|
|
999da35e
|
2021-02-18T17:29:20
|
|
Vulkan: Optimize glMemoryBarrier more
The implementation assumed that the X_BARRIER_BIT bits implied two
barriers; write->X and X->write. However, they only imply write->X,
with the exception of SHADER_IMAGE_ACCESS_BARRIER_BIT and
SHADER_STORAGE_BARRIER_BIT which handle X->write for images and buffers
respectively.
As a result, the other bits no longer set the MEMORY_BARRIER dirty bit
as they don't guard against X->write usage.
Bug: angleproject:5070
Change-Id: Id23904c455a5f56dc45fc6832a74fdfbba6a4827
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2705702
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
d81e5d17
|
2021-02-18T16:02:35
|
|
Add a test for sample after deferred clear
To ensure that deferred clears are flushed before sampling.
Bug: angleproject:5070
Change-Id: I72bfef752074eb1e722c669edaa2d0b5ddfd20b8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2705027
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
39d7fc18
|
2021-02-17T00:18:41
|
|
Vulkan: Don't break the render pass on dispatch calls
The only reason a dispatch call may need to break the render pass
implicitly is for read-after-writes where the write originates from the
render pass but is not through a storage buffer/image. There are only
two such scenrios possible:
- Framebuffer attachment write -> texture sample
- Transform feedback write -> ubo read
All other uses of the buffers and textures that require breaking the
render pass are handled by `glMemoryBarrier`.
Bug: angleproject:5070
Change-Id: I92b50d69d8782097ee8ff477ac57da6209c326a1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2698998
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
5d7f4e80
|
2021-02-18T17:06:12
|
|
Remove incorrect memory barrier tests
The tests were written with the assumption that the X_BARRIER_BIT
implied two barriers, write->X and X->write. However, they only imply
write->X, with the exception of SHADER_IMAGE_ACCESS_BARRIER_BIT and
SHADER_STORAGE_BARRIER_BIT which handle X->write for images and buffers
respectively.
Bug: angleproject:5070
Change-Id: Ic9bfac997d0663b70f1d40baca6c111a4dc300c9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2705701
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
c03a4235
|
2021-02-20T16:14:37
|
|
Suppress UNINSTANTIATED_PARAMETERIZED_TEST failures on Nexus 5X
GTest complains that we don't run some tests on GLES backend.
Bug: chromium:1180570
Change-Id: I9427ac25c3b6f06f3c042caa3c0afc7000cf1599
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2710783
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
f18b92ad
|
2021-02-17T19:40:53
|
|
testing: Mark uninstantiated GL & EGL test suites
googletest CL 315255779 causes test binaries to fail when they include
test suites / parametrized tests that are not instantiated, and when
they include empty test suites.
This CL uses the GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST() macro
to annotate the suites / tests that are causing test failures. This is
necessary to get googletest rolled past CL 315255779.
Bug: chromium:1163396
Change-Id: I05c0619186ffc265b8e32e8b69d6680a6acdbb48
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2701292
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
bd276beb
|
2021-02-12T10:58:43
|
|
Vulkan: Don't wait on unflushed sync objects without a Context
The app "Car Parking Multiplayer" issues a ClientWaitSync() command
without having already flushed the sync object and without an active
context. We should return TIMEOUT immediately rather than attempting to
wait on the sync object, since we can't flush it and it'll never be
signalled.
Bug: angleproject:5613
Bug: angleproject:5656
Test: MultithreadingTest.NoFlushNoContextReturnsTimeout
Change-Id: Ieaf675ca9144f9c851c73b9ca399daaf4ed1cd0f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2693375
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
7ae8531b
|
2021-02-17T15:20:07
|
|
Vulkan: Fix crash with 0-sized element buffer
VertexArray::syncState syncs all dirty bits, including
DIRTY_BIT_ELEMENT_ARRAY_BUFFER even for draw calls that don't use this
buffer, such as glDrawArrays. If the element buffer is given 0 size,
this caused a crash in the Vulkan backend.
Bug: chromium:1172577
Change-Id: I02d78c9660c07b896f7403867b648901478251fe
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2701831
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
436b43a6
|
2021-02-16T14:28:06
|
|
Add comprehensive memory barrier tests
Optimizing glMemoryBarrier can get very tricky. This change adds tests
for every glMemoryBarrier bit in different scenarios for a total of
about 1500 tests. With the current implementation, there are no syncval
errors running these tests.
Bug: angleproject:5070
Change-Id: I5358bfeed84f586a67c90ba5ab0fe624db6820b5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2698288
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
907a3cee
|
2021-02-17T08:07:45
|
|
Vulkan: Add support for EXT_shader_framebuffer_fetch_non_coherent
EXT_shader_framebuffer_fetch_non_coherent is implemented using subpass
input attachments. The extension will be enabled in a follow up change
that adds required changes to the Vulkan translator.
Bug: angleproject:5454
Test: FramebufferFetchNonCoherentES31.*Vulkan
Change-Id: Ic73c66a476c4a21db5269431166a198841f1dc0c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2598059
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
82337b00
|
2021-02-17T16:47:48
|
|
Add suppressions for failing tests on Linux Nvidia GL
The following failing without a clear reason (asides from PartitionAlloc
changes in Chromium maybe). This CL suppresses them while we find what
the issue is.
TBR=syoussefi@chromium.org
Bug: angleproject:5651
Change-Id: I6cba67351dfba37fd6d86a07ac748b7998665361
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2700511
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
|
|
64b5b3d3
|
2021-02-12T17:31:58
|
|
Vulkan: Further restrict enabling LINE_RASTERIZATION_MODE_BRESENHAM
The app "Car Parking Multiplayer" enables GL_SAMPLE_ALPHA_TO_COVERAGE,
which leads to a VVL error when LINE_RASTERIZATION_MODE_BRESENHAM is
also enabled:
VUID-VkGraphicsPipelineCreateInfo-lineRasterizationMode-02766:
The Vulkan spec states: If the lineRasterizationMode member of a
VkPipelineRasterizationLineStateCreateInfoEXT structure included in the
pNext chain of pRasterizationState is
VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT or
VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT and if rasterization
is enabled, then the alphaToCoverageEnable, alphaToOneEnable, and
sampleShadingEnable members of pMultisampleState must all be VK_FALSE.
This CL adds the additional checking to
GraphicsPipelineDesc::initializePipeline() to ensure those conditions
are met before setting lineRasterizationMode to
VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT.
Bug: angleproject:5613
Test: StateChangeTest.AlphaToCoverageEnable
Change-Id: Ie2286078f6916c01a19ae6f932321a86619bd4e1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2694094
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Tim Van Patten <timvp@google.com>
|
|
c7ae5d28
|
2021-02-17T15:57:37
|
|
Suppress ClearThenMaskedClearFramebufferTest on Linux AMD VK
The test has been failing on that configuration since it was introduced.
TBR=syoussefi@chromium.org
Bug: angleproject:5655
Change-Id: If852bcd574fa0cd4018220b7d6749b95a717a7c9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2698117
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
|
|
e8c0aa81
|
2021-01-26T23:40:36
|
|
Vulkan: Clean up transform feedback extension pause/resume
1. The xfb counter buffer barrier issued was wrong, following a typo in
the spec. This barrier is now correctly issued using the usual
barrier APIs.
2. A mechanism was added to automatically pause/resume transform
feedback when a program pipeline needs to be rebound. This is
incorrect as it misses the xfb counter buffer barrier. The render
pass is broken instead if transform feedback is active/unpaused and
the program pipeline is changed.
3. The transform feedback counter buffers are now disposed of when
transform feedback is ended. This avoids an unnecessary barrier that
this change would have otherwise incurred (and hence render pass
break) in Manhattan which repurposes the same transform feedback
object.
Bug: angleproject:5528
Change-Id: I1ffe8b4b8975645ba43afd70e9cdbb0765529da5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2651647
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
d7037aa2
|
2021-02-11T14:35:30
|
|
Vulkan: noop glMemoryBarrier(CLIENT_MAPPED_BUFFER_BARRIER_BIT_EXT)
CLIENT_MAPPED_BUFFER_BARRIER_BIT_EXT requires a memory barrier: shader
buffer write -> host read. According to the spec, the data is only
available after a call to glFinish or wait on sync:
> The application must call MemoryBarrier with the
> CLIENT_MAPPED_BUFFER_BARRIER_BIT_EXT set and then call FenceSync with
> SYNC_GPU_COMMANDS_COMPLETE (or Finish). Then the CPU will see the
> writes after the sync is complete.
When a buffer is written to by the GPU, ANGLE calls
onHostVisibleBufferWrite(), which ensures a "memory write -> host read"
barrier is issued at the end of the command buffer.
Additionally, persistently mapped buffers use
VK_MEMORY_PROPERTY_HOST_COHERENT_BIT, so there's no need for a call to
vkInvalidateMappedMemoryRanges.
As a result, there's nothing necessary in ANGLE to do for this barrier
bit. Note that should persistenly mapped buffers start using
non-coherent memory, this barrier should imply a call to
vkInvalidateMappedMemoryRanges for the persistently mapped buffers.
Bug: angleproject:5070
Change-Id: Iaeae019dadfa659a47d2dac41c0c09f1c15e584b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2689380
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
30622479
|
2021-02-16T12:33:40
|
|
Vulkan: Fix crash with deferred clears and MSRTT
The following scenario was mishandled:
- MSRTT draw with an unresolve operation (i.e. has two subpasses)
- Deferred clear
- Flush deferred clear with MSRTT framebuffer not needing unresolve
(i.e. has one subpass)
Bug: chromium:1178693
Change-Id: If3548e99897d698d61dfafbe9f86193723d06e5a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2697648
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
21cced7f
|
2021-02-16T12:20:34
|
|
Fix suppression for a SimpleStateChangeTestES31 on Linux AMD
It should be suppressed on Desktop GL and not GLES
TBR=syoussefi@chromium.org
Bug: angleproject:5649
Change-Id: I9752e0219e39cc9a8f3c1b90e15525d7e0384a91
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2697068
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
|
|
14ec0d2c
|
2021-02-15T17:14:08
|
|
Suppress a SimpleStateChangeTestES31 on Linux AMD GLES
SimpleStateChangeTestES31.DrawThenSampleWithCompute was failing
since it was introduced.
TBR=syoussefi@chromium.org
Bug: angleproject:5649
Change-Id: I46f531724bd4f12c760675de5038f2345eb21aac
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2692816
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
|
|
031dd5c5
|
2021-02-11T14:56:43
|
|
Vulkan: Add fast path for pack buffer copies
When vkCmdCopyImageToBuffer is possible, it is used to implement
glReadPixels with PBO instead of a CPU readback.
A few tests are added to verify synchronization between pack/unpack and
compute shader writes.
Bug: angleproject:5070
Change-Id: Ia5da0feb31348f6b52d164b973ff95e2a0510582
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2691466
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Ian Elliott <ianelliott@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
2b15062b
|
2021-02-11T12:52:39
|
|
Allow more formats as texture attachments in GLES 1
This change allows all formats in the GLES 1.1 spec, table 3.4
to be used as a texture attachment.
Also normalize values passed into glColorPointer if the format
is of type GL_UNSIGNED_BYTE.
These changes are needed for the android app, Kick the Buddy
to render correctly.
Bug: angleproject:5599
Tests: *DrawTextureTest.ColorArrayDifferentTypes*
*FramebufferObjectTest.TextureObjectDifferentFormats*
Change-Id: Ie9d27fc24d94106651262cf9b2080dd3f05af1c5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2690920
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
545d0051
|
2021-02-11T13:59:08
|
|
Add a number of glMemoryBarrier tests
Bug: angleproject:5070
Change-Id: I835a4e936cb50d3f4b1187bebbe1d1adc49d0b52
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2689366
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
a2fad5ea
|
2021-02-11T22:49:33
|
|
Mark uninstantiated tests
This problem was discovered by attempting to roll googletest past CL
315255779, which causes test binaries to fail when they include test
suites / parametrized tests that are not instantiated, and when they
include empty test suites.
This CL uses the GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST() macro
to annotate the suites / tests that are causing test failures. This is
necessary to get googletest rolled past CL 315255779.
Bug: chromium:1163396
Change-Id: I17c7cae1121079219f632cbbcf8cfc65a27bfdb7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2691459
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
baf64903
|
2021-02-03T14:02:55
|
|
Allow small compressed mip level copies
Update ValidateCopyImageSubDataBase() to take into consideration if the
entire mip level is being written, even if the size of the mip level is
smaller than the compressed block size.
This also uncovered a bug in ImageHelper::initializeNonZeroMemory()
where the image extents are not at least as large as the compressed
format block size:
VUID-vkCmdCopyBufferToImage-imageExtent-00207
This CL adds isAllocateNonZeroMemoryEnabled() to allow skipping the test
when that feature is enabled while that bug is chased.
Bug: angleproject:5592
Bug: angleproject:5634
Bug: angleproject:5643
Test: Texture2DTestES3.CopyCompressedImageMipMaps
Change-Id: I0381e0d3490fb148604b61dc3bae8f96ba8b5f8e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2673069
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
45a493ea
|
2021-02-05T13:48:48
|
|
Vulkan: Use a dirty bit to start the render pass
Some dirty bits need to run before the render pass starts. An upcoming
change for example needs to break the render pass when the program
pipeline is changed while transform feedback is active. Another
upcoming change may need to do the same based on a preceding
glMemoryBarrier.
This change adds a new dirty bit to start the render pass after some
dirty bits have already been processed.
Bug: angleproject:5528
Change-Id: I993c9efefed4c8fee268b218a8dd66a582d4e7cd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2678863
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
6fc10389
|
2021-02-10T11:20:16
|
|
Move Frame Capture to capture/ folder.
This will make it easier to trigger the trace tests when these files
are modified.
Bug: angleproject:5530
Change-Id: I5f0c450595b380cd91b20c1477dc1845bee35dd9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2686120
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
a8a2a71b
|
2021-02-01T17:18:18
|
|
Vulkan: Support y-flip with no driver support.
We can reuse the surface rotation matrix code to do the y-flip.
This requires the SPIR-V transformation support. Because not
all rotations are encoded into the table we can only support
rotation with the driver support for y-flip (currently).
Includes some very minimal regression testing. This work is
targeted towards supporting vk-portability implementations
which are not as up-to-date with Vulkan features.
Bug: angleproject:5596
Change-Id: I270fa1efc03267551d28df33ddac9972e1343d60
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2665892
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Ian Elliott <ianelliott@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
bb062070
|
2021-02-09T15:30:04
|
|
Vulkan: Fix updates to element buffer
If glBufferSubData results in a new vk::BufferHelper allocation,
VertexArrayVk::mCurrentElementArrayBuffer needs to be updated.
VertexArrayVk::syncState was working under the assumption that
DIRTY_BIT_ELEMENT_ARRAY_BUFFER_DATA cannot result in a vk::BufferHelper
pointer change.
This assumption was broken in
https://chromium-review.googlesource.com/c/angle/angle/+/2204655.
Bug: b/178231226
Change-Id: I969549c5ffec3456bdc08ac3e03a0fa0e7b4593f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2685439
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
6cc845bb
|
2020-12-07T18:14:50
|
|
Vulkan: Add support for EXT_blend_func_extended
This implementation utilizes vulkan's dualSrcBlend
feature. Expose this extension if the underlying vulkan
backend allows the use of this feature.
Test: angle_end2end_tests --gtest_filter=EXTBlendFuncExtendedDrawTest*
Bug: angleproject:5074
Change-Id: I7d2f611df89d65e5cac35158cb5f41a0ebd58aae
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2593151
Commit-Queue: Brandon Schade <b.schade@samsung.com>
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
7e81056a
|
2021-02-01T11:16:14
|
|
Vulkan: Support integer type incomplete texture
Support both signed and unsigned integer type incomplete textures.
Bug: angleproject:5502
Bug: angleproject:4432
Tests: IncompleteTextureTestES3.*IntegerType*
dEQP.KHR_GLES31/core_sample_variables_mask_rgba8*i_*
Change-Id: Ic8c972aac0ca8589b26333b66dd0cc5fb5134043
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2613245
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|