|
9e7f08fc
|
2020-11-06T16:55:51
|
|
Vulkan: Fix incorrect reordering of barriers
Take the following situation, a simple copy from image to buffer:
ANGLE_TRY(contextVk->onBufferTransferWrite(buffer));
ANGLE_TRY(contextVk->onImageTransferRead(aspectFlags, image));
CommandBuffer &commandBuffer = contextVk->getOutsideRenderPassCommandBuffer();
commandBuffer.copyImageToBuffer(imageHandle, layout, bufferHandle, 1, regions);
Both `onBufferTransferWrite` and `onImageTransferRead` may flush either
the outsideRP or insideRP command buffers. If buffer is not previously
used, but image is used:
- onBufferTransferWrite: buffer usage is recorded in outsideRP1
- onImageTransferREad: outsiderRP1 is flushed, outsideRP2 is started
- copyImageToBuffer: recorded on outsideRP2, but buffer usage not
recorded there
- A following command that uses the buffer and requires barrier doesn't
close outsideRP2 as it believes it was not used there
Bug: angleproject:5319
Change-Id: Ib8994083fbc21969a538cda3784adee57b089415
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2523388
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
1885942d
|
2020-11-08T11:19:07
|
|
Vulkan: Move device queue management to CommandQueue.
This closes a few more places where the asynchronous abstraction was
leaking through. We can no longer access VkQueues directly from
RendererVk.
Bug: b/172704839
Change-Id: Idc06ee73816147cf602f21723e75bc5ee842d3e0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2525145
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
49c13282
|
2020-11-08T10:51:54
|
|
Vulkan: Merge async command queue features.
This merges the 'commandProcessor' and 'asyncCommandProcessing'
features into one new 'asyncCommandQueue' features.
Conceptually the command processor is asynchronous use of the
CommandQueue. This renaming updates the code to reflect the usage.
Bug: b/172704839
Change-Id: I1d7ca1187f802eed48823a01b57fb520527f2540
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2525144
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
f19a4a20
|
2020-11-08T10:37:33
|
|
Vulkan: Move CommandBuffer management to RendererVk.
This consolidates all relevant logic in a single place.
We no longer need to interact with ContextVk in the worker thread.
This switches the fixed pointer array size to a dynamically sized
vector. Some of the EGL and ANGLE tests would use a large number of
Contexts and we were consistently running out of available command
buffers which would cause a deadlock situation. We can trust other
parts of the code to throttle the application if it starts to get
too far ahead of the device and dispense with the hard coded limit
in the command buffer allocator itself. The resulting code is also
quite a bit simpler and doesn't need a condition variable.
Also fixes missing initialization in SecondaryCommandBuffer.
Bug: b/172704839
Change-Id: Icc3a3daf5d6b272db556c0e4c93fb793583966a5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2525143
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
ce7bdd0b
|
2020-11-08T09:45:30
|
|
Vulkan: Merge CommandQueue and TaskProcessor.
Bug: b/172704839
Change-Id: I43a40e6a3e1eb00a7ddebfba6e915437aa69aeb6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2525141
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
6a1fb047
|
2020-11-07T19:04:43
|
|
Vulkan: Align CommandQueue and TaskProcessor.
The intent is to merge these two classes and remove redundant code.
Bug: b/172704839
Change-Id: I6eb66d7b4ddea3633b08df99464975cd59773b4e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2524550
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
a428487a
|
2020-11-12T09:04:25
|
|
Vulkan: Suppress VkSubpassDescriptionDepthStencilResolve
Suppress the following erroneous VVL error:
VUID-VkSubpassDescriptionDepthStencilResolve-stencilResolveMode-parameter
Bug: angleproject:5331
Change-Id: I403b7e4beaa17fd36e6a8e572c55ec22353e6b80
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2534394
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Tim Van Patten <timvp@google.com>
|
|
65ee5168
|
2020-11-08T09:30:39
|
|
Vulkan: Align submit and serial management code.
This progresses the goal of merging TaskProcessor and CommandQueue.
Moving the serial management out of RendererVk allows these classes
to have finer control over when thread synchronization locks happen.
Note: device lost handling seems untested currently.
Bug: b/172704839
Change-Id: I0cc61e1ffe41aad0b898d4146c8dbd08a2cebd3c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2525140
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
453a113a
|
2020-11-08T13:40:44
|
|
Vulkan: Remove queue/device wait idle in favor of finish().
This change should aid further refactorings. In the future if we need
to support waiting for individual queue idle we can add that back in
a way that's supported by both synchronous and async queue operation.
Bug: b/172704839
Change-Id: I9c9900ac81af60a37719439fe9db6135fcb17d46
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2525146
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
15ead5d5
|
2020-11-02T12:25:32
|
|
Reland "Vulkan: Let shader use rotation specialized constant"
This is a reland of 47b3db22be33213eea4ad58f2453ee1088324ceb
Original change's description:
> Vulkan: Let shader use rotation specialized constant
>
> If use rotation specialized constant is enabled via compiler options,
> this CL will use rotation specialized constant to generate flipXY,
> rotation matrix and negFlipXY. This allows the driver to optimize for
> the minimum instructions for rotation.
>
> Bug: b/171750979
> Change-Id: I9851ac999d4d35b9f230f796e5445bca0dcb1e77
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2514773
> 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>
> Reviewed-by: Tim Van Patten <timvp@google.com>
Bug: b/171750979
Change-Id: I9efde40eb138bacb161cce483a30ec01fee0983b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2533933
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
6df1ffdc
|
2020-11-07T17:17:53
|
|
Vulkan: Remove in-flight commands lock in TaskProcessor.
This is no longer necessary with the removal of the submit fence.
Bug: b/172704839
Change-Id: If8c2795d7e3c73453a235498ed6caac727bdaca5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2524549
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
e6a302a0
|
2020-11-07T10:49:15
|
|
Vulkan: Move vk::CommandQueue to RendererVk.
This consolidates most of the command processor vs queue logic in one
place. It also has a number of incidental changes related to fences:
- syncs now do not store a shared fence. instead they call command
apis to wait for a particular serial with a timeout. this is not
yet fully implemented in CommandProcessor.
- surface swap history stores a serial instead of a fence. because
the RendererVk class stores the command batches, we no longer have
to do messy things with ContextVk.
- it is no longer possible to ask for a wait on a serial that isn't
in the command queue.
Also adds mutex synchronization around the RendererVk methods.
Bug: angleproject:5217
Bug: b/172704839
Change-Id: I5faf0e24bb6ede79a927ab149b80bfa8baca4620
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2524548
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
aead51e3
|
2020-11-12T09:08:19
|
|
Vulkan: Disable OES_shader_multisample_interpolation
The spec for OES_shader_multisample_interpolation requires
support for OES_sample_variables. Disable support until
the changes related to OES_sample_variables land.
Bug: angleproject:3589
Bug: angleproject:3588
Change-Id: I94408a4f4fd74c19922c011242a515cc457910cf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2535075
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
|
|
52f77eed
|
2020-11-11T13:44:39
|
|
Suppress BestPractices-vkCreateDevice-specialuse-extension
Suppress the VVL warning:
UNASSIGNED-BestPractices-vkCreateDevice-specialuse-extension
ANGLE uses the extension to match OpenGL ES line rasterization behavior,
so this warning doesn't apply and is being suppressed.
Bug: angleproject:5336
Change-Id: I2f0e086a7ff392e13b6a1da0a55b0e1b81953b2e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2533437
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
15d5965d
|
2020-11-10T15:59:37
|
|
Vulkan: Support VK_KHR_image_format_list for PbufferSurfaces
PbufferSurfaces are now created with VK_KHR_image_format_list
extension support enabled.
Bug: angleproject:2514
Bug: angleproject:5281
Test: PbufferTest.ClearAndBindTexImageSrgb*Vulkan
Change-Id: I8977484c958328d00f688faa7adffff85a37a3b8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2530535
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
c3607098
|
2020-11-11T16:06:51
|
|
Revert "Vulkan: Let shader use rotation specialized constant"
This reverts commit 47b3db22be33213eea4ad58f2453ee1088324ceb.
Reason for revert:
Broke the ANGLE roll into Chromium:
https://chromium-review.googlesource.com/c/chromium/src/+/2531069
[1875/27343] SOLINK ./libGLESv2.so
FAILED: libGLESv2.so libGLESv2.so.TOC
/b/s/w/ir/cipd_bin_packages/cpython/bin/python "../../build/toolchain/gcc_solink_wrapper.py" --readelf="readelf" --nm="nm" --sofile="./libGLESv2.so" --tocfile="./libGLESv2.so.TOC" --output="./libGLESv2.so" -- ../../third_party/llvm-build/Release+Asserts/bin/clang++ -shared -Wl,-soname="libGLESv2.so" -Wl,--fatal-warnings -Wl,--build-id -fPIC -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,defs -Wl,--as-needed -fuse-ld=lld -Wl,--color-diagnostics -Wl,--no-call-graph-profile-sort -m64 -Werror -nostdlib++ --sysroot=../../build/linux/debian_sid_amd64-sysroot -L../../build/linux/debian_sid_amd64-sysroot/usr/local/lib/x86_64-linux-gnu -L../../build/linux/debian_sid_amd64-sysroot/lib/x86_64-linux-gnu -L../../build/linux/debian_sid_amd64-sysroot/usr/lib/x86_64-linux-gnu -Wl,-rpath=\$ORIGIN -Wl,--export-dynamic -Wl,-rpath=\$ORIGIN -o "./libGLESv2.so" @"./libGLESv2.so.rsp"
ld.lld: error: undefined symbol: sh::TranslatorVulkan::GetDriverUniformFlipXYRef(sh::TVariable const*)
>>> referenced by RewriteDfdy.cpp:134 (../../third_party/angle/src/compiler/translator/tree_ops/RewriteDfdy.cpp:134)
>>> translator/RewriteDfdy.o:(sh::(anonymous namespace)::Traverser::visitUnaryWithRotation(sh::Visit, sh::TIntermUnary*)) in archive obj/third_party/angle/libtranslator.a
>>> referenced by RewriteDfdy.cpp:200 (../../third_party/angle/src/compiler/translator/tree_ops/RewriteDfdy.cpp:200)
>>> translator/RewriteDfdy.o:(sh::(anonymous namespace)::Traverser::visitUnaryWithoutRotation(sh::Visit, sh::TIntermUnary*)) in archive obj/third_party/angle/libtranslator.a
ld.lld: error: undefined symbol: sh::TranslatorVulkan::GetDriverUniformFragRotationMatrixRef(sh::TVariable const*)
>>> referenced by RewriteDfdy.cpp:136 (../../third_party/angle/src/compiler/translator/tree_ops/RewriteDfdy.cpp:136)
>>> translator/RewriteDfdy.o:(sh::(anonymous namespace)::Traverser::visitUnaryWithRotation(sh::Visit, sh::TIntermUnary*)) in archive obj/third_party/angle/libtranslator.a
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Original change's description:
> Vulkan: Let shader use rotation specialized constant
>
> If use rotation specialized constant is enabled via compiler options,
> this CL will use rotation specialized constant to generate flipXY,
> rotation matrix and negFlipXY. This allows the driver to optimize for
> the minimum instructions for rotation.
>
> Bug: b/171750979
> Change-Id: I9851ac999d4d35b9f230f796e5445bca0dcb1e77
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2514773
> 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>
> Reviewed-by: Tim Van Patten <timvp@google.com>
TBR=ianelliott@google.com,timvp@google.com,syoussefi@chromium.org,jmadill@chromium.org,cclao@google.com
Change-Id: Id3976259d1f4049aa62b679ad5b25c2ac337c92b
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: b/171750979
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2532702
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Tim Van Patten <timvp@google.com>
|
|
47b3db22
|
2020-11-02T12:25:32
|
|
Vulkan: Let shader use rotation specialized constant
If use rotation specialized constant is enabled via compiler options,
this CL will use rotation specialized constant to generate flipXY,
rotation matrix and negFlipXY. This allows the driver to optimize for
the minimum instructions for rotation.
Bug: b/171750979
Change-Id: I9851ac999d4d35b9f230f796e5445bca0dcb1e77
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2514773
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>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
8a90378c
|
2020-11-07T10:40:28
|
|
Vulkan: Remove hasPrimaryCommands().
We now create empty primary command buffers when there are
no existing commands to submit. The main reason to remove this
is so that we don't have to make a synchronous call to
CommandQueue or the async command processor to determine if there
are queued primary commands.
Bug: b/172704839
Change-Id: I53f65eaa187b618e4ed82a5d2805a76e6a9e036c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2524547
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
b22f8e8e
|
2020-10-29T15:50:39
|
|
Vulkan: Add specialization constants for surface rotation
This plumbing through the specialization constant for surface rotation
from ContextVk to pipeline program creation. It has not been used yet,
so expecting no real functional change. This CL also converts
lineRasterEmulation to use the same specialization constant path as
surface rotation.
Bug: b/171750979
Change-Id: Ic08c4f8bb576424d1752015e874d0977a58d78bb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2508837
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Ian Elliott <ianelliott@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
9d65420c
|
2020-11-07T10:22:34
|
|
Vulkan: Move CommandQueue to CommandProcessor.h.
This will facilitate moving this class from the ContextVk to
RendererVk. Also cleans up some redundant vk:: prefixes.
Bug: b/172704839
Change-Id: I789c9984c0df7fc376e2373530e48afde354d30b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2524546
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
9a0284e8
|
2020-11-07T09:56:49
|
|
Vulkan: Merge command paths in submitFrame.
This makes the CommandQueue and CommandProcessor paths nearly the
same in submitFrame. The end goal is to make them take identical
input parameters.
Bug: b/172704839
Change-Id: If3ef2752534de1c3dcaefa5730b308aea46e549e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2524545
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
a391674c
|
2020-11-09T16:16:49
|
|
Vulkan: Support VK_KHR_image_format_list for RenderBuffers
RenderBuffers are now created with VK_KHR_image_format_list
extension support enabled. We only enable those tests where
the EGL image's source is a RenderBuffer but not those tests
where the EGL image's target is a RenderBuffer. There are some
corner cases related to glReadPixles that need to be resolved
to unblock those tests.
Bug: angleproject:3756
Bug: angleproject:5281
Test: ImageTest.SourceRenderbuffer*Vulkan
Change-Id: I643a9d74d14473cc7df59fa6e25acab7d1c9aad1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2528475
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
|
|
36787dcb
|
2020-11-04T23:06:47
|
|
Vulkan: Fix PBO assuming color images
Bug: b/172354898
Change-Id: I777eaa33ddac853492d38a03c16caeddad0c2d16
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2520108
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Ian Elliott <ianelliott@google.com>
|
|
72001c7d
|
2020-11-07T12:33:01
|
|
Vulkan: Bug fix in texture respecification code
When a target texture is created from an EGL image, respecification
of the texture needs to take into account the fact that it din't own
the ImageHelper. Refactor copy and stage code to account for this
possibility as well.
Bug: angleproject:3756
Bug: angleproject:5281
Test: ImageTest.Source2DTarget2DTargetTextureRespecify*
Change-Id: I2e3bd5d1d64e85da521a841423cfe24673efe88f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2524703
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
528ae31e
|
2020-11-08T10:06:04
|
|
Vulkan: Move ExtensionNameList out of the class.
Mostly a consistency change where now the list never needs to be
prefixed with RendererVk:: and always prefixed with vk::.
Also we can respect the style guide's member ordering suggestion.
Bug: b/172704839
Change-Id: I758bf324573e5585be6842b3455feab0c23c9d4a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2525142
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
c8a7c033
|
2020-11-07T09:12:47
|
|
Vulkan: Move primary command buffer to CommandQueue.
This brings CommandQueue one step closer to the worker thread.
Bug: b/172704839
Change-Id: I35225c5f302e34e3feb38a35c22b6d8e6f4ad10c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2524543
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
a5e0a4bc
|
2020-11-08T11:10:12
|
|
Vulkan: Support VK_KHR_image_format_list for AHB backed EGL image
AHB backed EGL images create the VkImage through external sibling
images. Create those images with VK_KHR_image_format_list extension
support enabled.
Bug: angleproject:3756
Bug: angleproject:5281
Test: angle_end2end_tests.exe
--gtest_filter=ImageTest*SourceAHB*Colorspace*Vulkan
Change-Id: I28c22f9d2f2423daa9228e4d42772b380ab7b8b9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2525109
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
|
|
eaab2e34
|
2020-11-09T11:24:09
|
|
Vulkan: add explicit template specialization for barrierImpl
ImageHelper::barrierImpl with secondary command buffer is used in
other translation units. Linking fails if compiler has optimized
out symbol for secondary command buffer.
Bug: angleproject:5324
Change-Id: I588d0d949a9b2eee04d8103effc485ab23d679c6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2526082
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
18fcb4ad
|
2020-11-06T07:22:17
|
|
Vulkan: Enable a subset of ImageTest colorspace tests
This patch does the following -
1. Expose EGL_KHR_image_gl_colorspace only if the underlying
ICD supports VK_KHR_image_format_list extension
2. Create VkImageViews from EGLimage's format
3. Fix bugs in ImageTest colorspace tests
Bug: angleproject:3756
Bug: angleproject:5281
Test: angle_end2end_tests.exe
--gtest_filter=ImageTest*Colorspace*Vulkan
Change-Id: I618ae009e83d0a6b27a0a50165f736784717e404
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2523670
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
e2ecb2dd
|
2020-11-03T19:26:00
|
|
Enable logging API commands to Android logcat
This enables logging API commands to Android logcat. It is enabled
via the following GN arg:
angle_enable_android_api_logcat = true
On desktop, API commands can continue to be logged to the
"angle_debug.txt" file via a different mechanism, with the GN arg:
angle_enable_trace = true
Bug: b/170249632
Change-Id: Id52e75f966a97692ec6d69eb3d254ba295a151c2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2519094
Commit-Queue: Ian Elliott <ianelliott@google.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
9825695e
|
2020-11-03T15:29:38
|
|
Vulkan: Increase CommandBufferHelper pool size
For interesting threading behavior need more than two command buffer
helper objects in the pool.
Bug: b/170328907
Change-Id: I394a583f2241ef094abba7a4645a200b9308e466
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2518134
Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
55934550
|
2020-11-05T07:13:39
|
|
Vulkan: Don't refresh image views unnecessarily
If the underlying ICD supports VK_KHR_image_format_list
extension we will have created both the linear and sRGB
image views, reuse them instead of refreshing them.
Bug: angleproject:3609
Bug: angleproject:4561
Bug: angleproject:5281
Change-Id: Ie34f08b3554a07f94911bebf925e38d702bc3c36
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2518387
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
|
|
3dfaeeb0
|
2020-10-30T16:57:44
|
|
Vulkan: Don't flush deferred clears on READ framebuffer sync
Deferred clears are not collected when syncing the READ framebuffer.
Prior to this change, we had in FramebufferVk::syncState:
if (READ && deferredClears.any())
{
flushDeferredClears();
}
However, this is impossible / unnecessary:
- Every operation whose syncState (for the DRAW framebuffer) collects
deferred clears will flush the deferred clears. In fact, it's an
error for the next operation's syncState to encounter pre-existing
deferred clears.
- The READ framebuffer is synced before the DRAW framebuffer. This
makes it impossible for there to be deferred clears when READ is
synced.
It may be necessary to swap the order in which the READ and DRAW
framebuffers are synced. See http://anglebug.com/5266. In that case,
if the READ and DRAW framebuffers are identical:
- The DRAW framebuffer's sync will collect deferred clears. The READ
framebuffer's sync will see deferred clears, but it must not flush
them!
Bug: angleproject:4988
Change-Id: I179002d739608ccb8bda95d4379dc6d54e2bf4bb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2511372
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
d77e85a8
|
2020-11-03T22:23:18
|
|
Vulkan: Store image updates per level
This optimization allows iterating only over updates of a certain level
or range of levels, instead of having to iterate over every update and
filter out the ones matching the desired level(s).
Bug: angleproject:4891
Change-Id: Ied04f4b28f05d37b9add61c7f4d54cc328c0be86
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2519095
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
2d964a47
|
2020-10-30T16:46:30
|
|
Vulkan: Defer clears even if following command is scissored
Take the following scenario:
1. glClear
2. glScissor(half of framebuffer)
3. glDrawArrays
The clear in step 1 is deferred. When FramebufferVk::syncState is
called in step 3, the deferred clear was applied using
vkCmdClearColorImage because the draw call is scissored. This causes
loadOp=LOAD to be used after the clear because the render pass is
started too small (the same size as the scissor).
This change makes scissored operations also take advantage of
loadOp=LOAD with deferred clears. A number of changes are made to this
effect:
- FramebufferVk::syncState no longer limits collecting deferred clears
to no-scissor.
- FramebufferVk::startNewRenderPass automatically expands the render
area to full size if it's clearing any attachment.
- A number of bugs are fixed where FramebufferVk::flushDeferredClears is
called with the scissor area. Instead, flushDeferredClears now
unconditionally uses the complete render area. Note that these bugs
didn't have symptoms as "scissor" and "deferred clears" were mutually
exclusive.
Bug: angleproject:4988
Change-Id: I24fc3d88bf9c8998869b36c863692d0f0acce994
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2511371
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
1e494cae
|
2020-10-07T19:26:01
|
|
Vulkan: Add support for EXT_copy_image
Add support for GL_EXT_copy_image which allows
image data transfer between image objects.
This is implemented by using the vkCmdCopyImage
API call.
Bug: angleproject:3593
Test: dEQP-GLES31.functional.copy_image.*
Change-Id: I30a34a8711b5d2e5834064d7453e03d6ec0df478
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2393955
Commit-Queue: Brandon Schade <b.schade@samsung.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
fa616931
|
2020-09-03T14:58:03
|
|
Mark uniform samplers in an array unused per element
https://bugs.webkit.org/show_bug.cgi?id=215630
Fix an issue with the OpenGL backend where entire arrays of
uniforms would be marked as unused if a single element was
reported as unused by the driver.
Bug: angleproject:5006
Change-Id: I9bbb75a5f113472393e8d9f1fb60a7865aa9529a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2486540
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: James Darpinian <jdarpinian@chromium.org>
|
|
a0e91016
|
2020-10-30T10:01:36
|
|
Vulkan: Don't break the render pass on scissor change
Prior to this change, the render area was decided when the render pass
was started, and remained fixed. If a small scissor was initially used,
this created a render pass with a small area. If then the scissor
region was expanded, the render pass was broken.
This change instead expands the render area on scissor change to avoid
breaking the render pass. If glInvalidateSubFramebuffer previously
successfully resulted in storeOp=DONT_CARE, this optimization may need
to undo that. As a result, the invalidate area is stored in the render
pass and if the render area grows beyond that, invalidate is undone.
Bug: angleproject:4988
Change-Id: I4e8039dec53a95a193a97cb40db3f71e397568d6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2508983
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
bf1a4627
|
2020-11-04T12:48:47
|
|
Vulkan: Enable GL_EXT_buffer_storage extension
This change 7bbe497 accidentally disabled support
for GL_EXT_buffer_storage extension for the Vulkan
backend, enable it again.
Bug: angleproject:5056
Tests: angle_end2end_tests --gtest_filter=BufferStorageTestES3*Vulkan
Change-Id: If4da2fe2c3e8b098875c89643d366f15fd0ea8b2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2519875
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
74e50cac
|
2020-11-04T12:47:52
|
|
Vulkan: Suppress VUID-VkImageViewCreateInfo-usage-02652
Bug: angleproject:5309
Change-Id: Iafe91565138a5b94c482aeff7607d09c10d2aeaa
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2519874
Commit-Queue: Ian Elliott <ianelliott@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
4989667a
|
2020-11-03T16:28:37
|
|
Vulkan: Make ImageHelper::flushStagedUpdates take gl::LevelIndex
More consistent with the rest of the public functions in this class.
Bug: angleproject:4891
Change-Id: I72c7c3d21f8287cc1711772671c6e7ad524fd096
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2518179
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
88b46b9f
|
2020-11-03T12:08:42
|
|
Vulkan: VVL errors once again cause dEQP tests to fail
Was previously setting the global g_debugAnnotator class to
DebugAnnoatorVk, and only when a desktop environment variable or
Android setting indicated to. Setting to DebugAnnoatorVk was equated
with a desire to generate Vulkan debug markers.
Will now set g_debugAnnotator to the generic LoggingAnnotator class
when Vulkan debug markers are not needed. That will enable VVL errors
to again cause dEQP tests to fail.
Bug: angleproject:5291
Bug: angleproject:5304
Change-Id: Ib9169037423dd9de3f799e77f7f47468eeeeac20
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2518168
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
23d1f9b4
|
2020-11-02T13:00:08
|
|
Vulkan: Add support for VK_KHR_image_format_list extension
GLES sRGB extensions allows for a texture to be respecified, with say
the sRGB_override extension, which will require us to reinterpret the
data in the texture in sRGB colorspace (or linear depending on the
format of the texture).
If the underlying ICD supports VK_KHR_image_format_list extension we
create a texture's backing VkImage with the
VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT enabled since we already know the
format we might need to reinterpret the texture as.
Bug: angleproject:3609
Bug: angleproject:4561
Bug: angleproject:5281
Change-Id: Ia4bed596ed3000f8af1a8fd73fb8e6c2cb9b5d6e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2513110
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
265c5fa9
|
2020-11-02T21:50:25
|
|
Vulkan: Fix scissor update in FramebufferVk::syncState
A previous change [1] made FramebufferVk::syncState update scissor and
rasterization samples only when the DRAW framebuffer is synced. This is
incorrect as the READ framebuffer is synced before the DRAW framebuffer,
and if the two are the same, the latter is discarded.
Very few functions sync both READ and DRAW framebuffers when they are
identical. A test is tailored to expose this bug.
[1]: https://chromium-review.googlesource.com/c/angle/angle/+/2510013
Bug: angleproject:4988
Change-Id: I6123ac18dded938171bc90a04d4d81f1b42a1694
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2515742
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
3980b1f8
|
2020-10-27T10:01:05
|
|
Refactor FrameCapture.cpp to use common utility
The frame-capture-specific AndroidGetEnvFromProp() function has been
ported to the general utility, GetEnvironmentVarFromAndroidProperty().
Bug: b/170249632
Change-Id: I97de8205ceef140dfd8fab8e6f2d52b90cd996cf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2502772
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Ian Elliott <ianelliott@google.com>
|
|
8afe3f17
|
2020-11-03T10:55:31
|
|
Vulkan: Fix use of uninitialized data in staged clears
When depth/stencil data are staged, only the depthStencil field of
VkClearValue is initialized. However, when comparing staged clears,
memcmp is used which also compares the extra bytes in the aliasing color
field.
Bug: chromium:1144491
Change-Id: Ic384ba792e9fd199d8e9c3e534ccdc6ea65ee9b8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2517244
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
a51b57fa
|
2020-10-30T10:00:05
|
|
Revert "Vulkan: Add features to modify sampling parameters"
Bug: b/167404532
Change-Id: Iae19dfe165074e8c01216312bddd744c4fb504a4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2510012
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
019e3f77
|
2020-11-02T17:20:19
|
|
Vulkan: Use dst access masks to determine if barrier is needed
Src access mask may be 0 with WAR barriers.
Bug: angleproject:5290
Change-Id: I798d4c36aa7d3d14db333a7e86794e13c8137f96
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2514841
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
61180d01
|
2020-10-12T16:40:13
|
|
Reland "Add support for Linux vulkan backend with VK_KHR_display"
This is a reland of a7bb6a9b15ddeb8497523f8871deb25de2676d9f
Original change's description:
> Add support for Linux vulkan backend with VK_KHR_display
>
> Implement Linux simple display mode with vulkan backend
> through VK_KHR_display.
>
> Added value 'EGL_PLATFORM_VULKAN_DISPLAY_MODE_SIMPLE_ANGLE' for
> attribute EGL_PLATFORM_ANGLE_NATIVE_PLATFORM_TYPE_ANGLE to identify
> the new simple display mode. Also reserved
> EGL_PLATFORM_VULKAN_DISPLAY_MODE_HEADLESS_ANGLE for headless mode.
>
> How to enable:
> Add
>
> ```
> use_x11=false
> angle_vulkan_display_mode="simple" # default value
> ```
>
> into args.gn, then compile with linux vulkan args.
>
> Bug: angleproject:5214
> Change-Id: I1247585b9de8b55df106aba99322281f1c183203
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2494320
> Commit-Queue: Jamie Madill <jmadill@chromium.org>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Bug: angleproject:5214
Change-Id: I3921f6cb292c86658f39e739a878baad1ef64dba
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2515327
Commit-Queue: Xiaoxuan Liu <xiaoxuan.liu@arm.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
6bc362c4
|
2020-10-18T19:09:47
|
|
Allow single threaded CommandProcessor
In replacing the legacy CommandQueue code with the threading
capable CommandProcessor it would be good to be able to run the
CommandProcessor in a single-thread environment. This CL changes the
meaning of the feature flags for the commandProcessor and
asynchronousCommandProcessing so that enabling commandProcess only
changes the code paths to use the command processor but work it still
done as part of the submitting thread (e.g. ContextVk).
Enabling asynchronousCommandProcessing will cause a separate worker
thread to be spawned which will asynchronously process the commands.
This allows us to switch to the CommandProcessor without threading and
then enable threading once performance issues are resolved.
Bug: b/161912801
Bug: b/170329600
Change-Id: I534862b109a7e7708108190b7c3e894071d4c2ed
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2483580
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
3fcf17e6
|
2020-11-02T12:51:35
|
|
Vulkan: Bug fix in sRGBDecode logic
When a sampler's GL_TEXTURE_SRGB_DECODE_EXT state
was toggled between GL_DECODE_EXT and GL_SKIP_DECODE_EXT
VkImageViews of the TextureVk object were not being updated.
Add sRGB_decode state as part of ImageViewSubresourceSerial
so we retrieve the correct VkImageView from the texture cache.
Bug: angleproject:3609
Tests: angle_end2end_tests
--gtest_filter=SRGBTextureTestES3.SRGBDecodeSamplerParameterToggle*Vulkan
Change-Id: I897e461957d408b5a5b4f03fefc05f2e9684c7b7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2514900
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
7dc92430
|
2020-10-30T13:05:05
|
|
Noop clear of non-existing attachments.
Bug: angleproject:4988
Change-Id: Ib6ff9756ec7ae5aa2b11f4d12932829fe05656d6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2511369
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
42e10d3e
|
2020-10-30T16:36:45
|
|
Noop empty-scissor clears
Bug: angleproject:4988
Change-Id: I64909292927e20c65141302c9bf5e7ef09af84b7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2511370
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
807e6b33
|
2020-11-02T17:15:03
|
|
Revert "Add support for Linux vulkan backend with VK_KHR_display"
This reverts commit a7bb6a9b15ddeb8497523f8871deb25de2676d9f.
Reason for revert: Failing on Ozone builder, see bug.
Bug: angleproject:5289
Original change's description:
> Add support for Linux vulkan backend with VK_KHR_display
>
> Implement Linux simple display mode with vulkan backend
> through VK_KHR_display.
>
> Added value 'EGL_PLATFORM_VULKAN_DISPLAY_MODE_SIMPLE_ANGLE' for
> attribute EGL_PLATFORM_ANGLE_NATIVE_PLATFORM_TYPE_ANGLE to identify
> the new simple display mode. Also reserved
> EGL_PLATFORM_VULKAN_DISPLAY_MODE_HEADLESS_ANGLE for headless mode.
>
> How to enable:
> Add
>
> ```
> use_x11=false
> angle_vulkan_display_mode="simple" # default value
> ```
>
> into args.gn, then compile with linux vulkan args.
>
> Bug: angleproject:5214
> Change-Id: I1247585b9de8b55df106aba99322281f1c183203
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2494320
> Commit-Queue: Jamie Madill <jmadill@chromium.org>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
TBR=syoussefi@chromium.org,sunny.sun@arm.com,jmadill@chromium.org,xiaoxuan.liu@arm.com
Change-Id: I3e2a2a044c220ed8d25be0d82184e5fba7b9c06a
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: angleproject:5214
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2514637
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
57f7c9b5
|
2020-10-29T16:31:46
|
|
Vulkan: Fix prerotation bug with glInvalidateSubFramebuffer
The area passed to FramebufferVk::invalidateSub is not rotated, but was
being compared with the rotated framebuffer dimensions / render area.
Bug: angleproject:5264
Change-Id: I2de181bf77ad650418b757a3848395bbdab13d8a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2508978
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Ian Elliott <ianelliott@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
f34ba646
|
2020-10-30T14:40:22
|
|
Fix maxShaderAtomicCounters value.
Set maxShaderAtomicCounters to zero when atomic operation is not
supported. Some cts tests will only check maxShaderAtomicCounters
instead of vertexPipelineStoresAndAtomics before run.
Test: dEQP-GLES31.functional.shaders.opaque_type_indexing.atomic_counter.*vertex
Bug: angleproject:5272
Change-Id: Iceb4fc13eb26548ccbfaa430501d88f5ba3dfcc3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2507280
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
a7bb6a9b
|
2020-10-12T16:40:13
|
|
Add support for Linux vulkan backend with VK_KHR_display
Implement Linux simple display mode with vulkan backend
through VK_KHR_display.
Added value 'EGL_PLATFORM_VULKAN_DISPLAY_MODE_SIMPLE_ANGLE' for
attribute EGL_PLATFORM_ANGLE_NATIVE_PLATFORM_TYPE_ANGLE to identify
the new simple display mode. Also reserved
EGL_PLATFORM_VULKAN_DISPLAY_MODE_HEADLESS_ANGLE for headless mode.
How to enable:
Add
```
use_x11=false
angle_vulkan_display_mode="simple" # default value
```
into args.gn, then compile with linux vulkan args.
Bug: angleproject:5214
Change-Id: I1247585b9de8b55df106aba99322281f1c183203
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2494320
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
97843bda
|
2020-10-30T17:03:36
|
|
Vulkan: Fix EGL Surface robust init.
The error here was related to using a single cache variable for the
robust init setting for all the surfaces in a DisplayVk. Fix this by
passing down the robust init setting from the SurfaceVk to image init.
Bug: angleproject:5274
Change-Id: I9bc9c20990268d1d5166411fb53f8f2593fd1971
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2510694
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
9c66a092
|
2020-10-30T09:56:19
|
|
Vulkan: Update scissor only in DRAW framebuffer's syncState
Bug: angleproject:4988
Change-Id: I16f9268cdc221c84f962bbb9bd06ef5b19a6ac05
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2510013
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
09932e04
|
2020-10-29T00:31:49
|
|
Vulkan: Support emulated pre-rotation in dEQP testing
Similarly to end2end tests, the window dimensions are swapped with
emulated prerotation at 90 and 270 degrees, while maintaining to the
application that dimensions are as requested.
The following new command line argument can be used to select an
emulated prerotation:
--emulated-pre-rotation=90
--emulated-pre-rotation=180
--emulated-pre-rotation=270
For example:
$ ./angle_deqp_gles2_tests --use-angle=vulkan \
--deqp-case=*draw* \
--emulated-pre-rotation=270
Additionally, the deqp test expectations can be marked with the
following new tags to add suppressions for failing tests under
prerotation:
PREROTATION
PREROTATION90
PREROTATION180
PREROTATION270
Bug: angleproject:4901
Change-Id: I7a68c1a1e7da4366cde981469c589d8d900c40c5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2506810
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
8f36b846
|
2020-10-29T15:13:55
|
|
Vulkan: Optimize glFramebufferSubInvalidate
If glFramebufferSubInvalidate() is called with an area that covers the
whole framebuffer, behave as if glFramebufferInvalidate() is called.
This allows deferred clears to be removed for example, and attachment
contents to be marked undefined.
Bug: angleproject:4988
Change-Id: Iff3f291ea6c07abccc2740174d0451b432ac5da8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2508977
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
8ace36f8
|
2020-10-30T09:51:16
|
|
Revert "Add a Vulkan feature to compress float32 vertex formats."
Bug: b/167404532
Bug: b/161716126
Change-Id: I95157a006d5c1fd2d3c0c2c2be37fa0403c07f93
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2510011
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
fcd35965
|
2020-09-29T14:15:51
|
|
Vulkan: Make DescriptorPoolHelper a Resource
Descriptor pools need to live as long as the descriptor sets that are
allocated from them. Using Serials while building a command to judge a
pool's lifetime is prone to errors, since a command's Serial value
isn't known until the command is submitted, leading to deleting pools
too early relative to when the descriptor set is actually used.
This CL updates DescriptorPoolHelper to inherit from Resource, so the
descriptor pools can be retain()'ed. This allows the Resource's counter
to indicate that a pool is in use until the command's Serial is known
and can be recorded to indicate when the command completes. This
prevents descriptor pools from being destroyed before the command
completes (while the descriptor sets are still in use), or even before
the command has been submitted. Destroying a descriptor pool resets all
of the descriptors that were allocated from it, which can trigger a
variety of VVL errors depending on when it's erroneously performed.
This CL also adds the necessary retain() calls for the descriptor pools.
In particular, the pools need to be retained each time a cached
descriptor set that was allocated from it is re-used. This is relatively
simple with the current design, since we always clear the descriptor set
caches whenever a new pool is allocated, so the descriptor pool binding
is always accurate.
Bug: angleproject:5030
Test: VulkanMultithreadingTest::MultiContextDrawSmallDescriptorPools()
Change-Id: Iac9e7efef338f169a6bf8ac3b2140e03dd326641
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2504457
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Commit-Queue: Tim Van Patten <timvp@google.com>
|
|
e895ced6
|
2020-10-29T09:06:00
|
|
Vulkan: Add OES_shader_image_atomic support
Add support for shader builtins and enable the extension.
Bug: angleproject:3578
Tests: dEQP-GLES31.functional.*image_atomic*
Change-Id: Idd45b2ee62efe1474c6c5947c77da64ff2221bf6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2505540
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
ee4e0866
|
2020-09-24T11:39:49
|
|
Vulkan: Add descriptor set allocation counters
Add descriptor set allocation counters for the following:
- ContextVk
- Driver uniform allocations for graphics and compute pipelines.
- ProgramExecutableVk
- ANGLE driver uniforms
- Uniforms
- Textures
- Other shader resources
- UtilsVk
- All of the UtilsVk::Function types increment the same counter
Each object's counters live within the object itself and the cumulative
total is output as part of that object's destruction. On Present, all of
the descriptor set counts are collected into a single total which is
used to update the overlay each frame.
In order to see the cumulative total output for each object, the
following GN args must be enabled:
is_debug = true
angle_enable_perf_counter_output = true
To see the descriptor set allocation overlay:
ANGLE_OVERLAY=VulkanDescriptorSetAllocations
Bug: angleproject:5067
Test: Manual verification with angle_perftests
Change-Id: Ie45fda56ade3e68bfba7bf6da9554eb05a02c6b6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2429487
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
45881ab3
|
2020-10-26T16:15:16
|
|
Enable debug-util markers with an env var/property
Enable the Vulkan debug-util markers by setting the
ANGLE_ENABLE_DEBUG_MARKERS" environment variable to any 1+-character
value. On Android, this is set with the "debug.angle.markers" Android
property.
Bug: b/170249632
Change-Id: I66503fac71397c59cc641dd903faad152e0ec449
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2500186
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Ian Elliott <ianelliott@google.com>
|
|
94900b69
|
2020-10-24T03:46:44
|
|
Vulkan: Remove VVL warning suppression for push constants
Bug: angleproject:5191
Change-Id: Ic4a64ad0bf4cdf6b3ed8677dd45ee940d0da30d9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2496245
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
bd966253
|
2020-10-22T14:55:49
|
|
Increase MAX_UNIFORM_BUFFER_BINDINGS to 72
This is the minimum Vulkan limit.
Bug: angleproject:5212
Change-Id: I627a1446434c7abc2f53525cb71cb40a4927461c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2491937
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
b0db7cca
|
2020-10-23T17:37:41
|
|
Vulkan: Initial emulated prerotation support
This is currently only supported for end2end tests (those which use
ANGLETestBase, excluding those that use WithNoFixture) and Vulkan. Use
WithEmulatedPreoration(*_VULKAN(), degree) where degree is either 90,
180 or 270.
With emulated prerotation, the window dimensions are physically swapped
if 90 and 270 degrees, while the width and height is still reported as
requested by the test. In the Vulkan backend, the width and height are
swapped after getting queried from the surface, and prerotation is
assumed.
Bug: angleproject:4901
Change-Id: I294436be4c7015d2a63463c4d61de7b67f38c95d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2495544
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Ian Elliott <ianelliott@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
98c5ff6b
|
2020-10-25T16:26:55
|
|
BinaryStream: Preserve 64-bit integer data.
Previously the code would truncate 64-bit data to fit in 32-bits.
This ran into a serialization bug when expanding a 64-bit mask.
The new blend state masks for extended range were out of range for
the 32-bit promotion that was happening before.
Also refactors how we capture bools and enums to be more consistent.
size_t is now correctly saved and loaded as 64-bits.
Bug: angleproject:5247
Change-Id: I452a98c1b0add4c0cf45493032e9310e7d8321b2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2497561
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
5cbf54da
|
2020-10-18T10:42:07
|
|
Vulkan: Fix exposure requirements for EXT_texture_format_sRGB_override
Previously we were not checking for the correct format support
to expose this extension. This change fixes that, and disables
the extension if we do not support the formats we need for our
implementation to function. This also adds an end2end test to
check each possible format that can be used with this extension.
Update GLES major version to 3 for TextureSampling perf benchmark
Bug: angleproject:4561
Change-Id: Ic81bb28f02f9f36e1bc83a8eea376169de9e7735
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2359482
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
|
|
5d0458fa
|
2020-10-23T12:52:34
|
|
Vulkan: Add OES_shader_multisample_interpolation support
Support OES_shader_multisample_interpolation extension if
maxInterpolationOffset >= 0.5
Bug: angleproject:3589
Tests: dEQP-GLES31.functional.shaders.multisample_interpolation.*
dEQP-GLES31.functional.state_query.multisample_interpolation.*
Change-Id: I42997f10be82e3be8b63c56833cbbf791bf4be9b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2477905
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
9e3eec54
|
2020-10-25T15:44:09
|
|
Revert "Vulkan: Make DescriptorPoolHelper a Resource"
This reverts commit 5dcd29a6e532e4bd617af8767d488120b57f3b2c.
Reason for revert: Breaking the ANGLE -> Chromium roller:
https://chromium-review.googlesource.com/c/chromium/src/+/2496281
Original change's description:
> Vulkan: Make DescriptorPoolHelper a Resource
>
> Descriptor pools need to live as long as the descriptor sets that are
> allocated from them. Using Serials while building a command to judge a
> pool's lifetime is prone to errors, since a command's Serial value
> isn't known until the command is submitted, leading to deleting pools
> too early relative to when the descriptor set is actually used.
>
> This CL updates DescriptorPoolHelper to inherit from Resource, so the
> descriptor pools can be retain()'ed. This allows the Resource's counter
> to indicate that a pool is in use until the command's Serial is known
> and can be recorded to indicate when the command completes. This
> prevents descriptor pools from being destroyed before the command
> completes (while the descriptor sets are still in use), or even before
> the command has been submitted. Destroying a descriptor pool resets all
> of the descriptors that were allocated from it, which can trigger a
> variety of VVL errors depending on when it's erroneously performed.
>
> This CL also adds the necessary retain() calls for the descriptor pools.
> In particular, the pools need to be retained each time a cached
> descriptor set that was allocated from it is re-used. This is relatively
> simple with the current design, since we always clear the descriptor set
> caches whenever a new pool is allocated, so the descriptor pool binding
> is always accurate.
>
> Bug: angleproject:5030
> Test: MultithreadingTest::MultiContextDrawSmallDescriptorPools()
> Change-Id: I5fdeeb46159448dfd679d7169e423048348be5ab
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2437609
> Commit-Queue: Tim Van Patten <timvp@google.com>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
TBR=courtneygo@google.com,timvp@google.com,jmadill@chromium.org
# Not skipping CQ checks because original CL landed > 1 day ago.
Bug: angleproject:5030
Change-Id: I0fd6d9a0e1b0989b22368ef98652281288699deb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2497222
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
96714af8
|
2020-10-22T17:28:20
|
|
Vulkan: Dirty pipeline and desc set after mid-RP clear with draw
If UtilsVk::clearFramebuffer issues a draw call on the currently open
render pass (as opposed to starting one itself), ContextVk would be
unaware of the fact that the graphics pipeline and descriptor sets have
been changed.
This change sets the necessary dirty bits for ContextVk to recover from
a UtilsVk::clearFramebuffer call.
Bug: chromium:1141040
Change-Id: I865220fb5b3b78bf4c6b6b2896e57d8a7490c270
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2493184
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
6a35cadc
|
2020-10-23T17:14:44
|
|
Suppress VUID-vkCmdDraw-None-02698 validation
A bug in Vulkan-ValidationLayers is stopping changes from being rolled
into ANGLE. Suppress this warning for now, until the root cause is
addressed.
Bug: angleproject:5191
Change-Id: I7c6cb65055bdc7b2eb3679f26f09530b1cff3775
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2495543
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
|
|
e86b4257
|
2020-10-21T13:28:10
|
|
Vulkan: Refactor how finishToSerial() retires commands.
This cleans up some of the logic around command completion. We no longer
query each Fence in order after a finishToSerial call. Instead we clear
out all the commands that have been completed up to the latest Fence.
Also cleans up ordering code. Because we now have a linear ordering of
Serials we can validate the ordering is "good".
Attempt at solving a suspicious ASSERT firing on AMD Win7.
Bug: angleproject:5198
Change-Id: I7750eff7f8d3aff397e7880f997ad86c9bf7d7a8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2490342
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
de3a7180
|
2020-10-23T10:54:46
|
|
Vulkan: Reduce scope of clear workaround
Forcing draw for clear only appears to be needed on Pixel 2.
Test: angle_perftest --gtest_filter="*free_fire*"
Bug: angleproject:4836
Change-Id: I4446adc04a8e5cf7b0bfef68ec70122e847755a6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2495484
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
33e30205
|
2020-10-17T19:03:45
|
|
Vulkan: sRGB cleanups.
A few fixes to how we check for the sRGB override in the
TextureVk class. In at least one instance there was a potential
edge case where in syncState we might not create the Texture
with the mutable bit the second time through the function.
Bug: angleproject:5176
Change-Id: I4f1ca6e469b10514c3a0de3120be9ade62568084
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2482292
Reviewed-by: Mohan Maiya <m.maiya@samsung.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
5dcd29a6
|
2020-09-29T14:15:51
|
|
Vulkan: Make DescriptorPoolHelper a Resource
Descriptor pools need to live as long as the descriptor sets that are
allocated from them. Using Serials while building a command to judge a
pool's lifetime is prone to errors, since a command's Serial value
isn't known until the command is submitted, leading to deleting pools
too early relative to when the descriptor set is actually used.
This CL updates DescriptorPoolHelper to inherit from Resource, so the
descriptor pools can be retain()'ed. This allows the Resource's counter
to indicate that a pool is in use until the command's Serial is known
and can be recorded to indicate when the command completes. This
prevents descriptor pools from being destroyed before the command
completes (while the descriptor sets are still in use), or even before
the command has been submitted. Destroying a descriptor pool resets all
of the descriptors that were allocated from it, which can trigger a
variety of VVL errors depending on when it's erroneously performed.
This CL also adds the necessary retain() calls for the descriptor pools.
In particular, the pools need to be retained each time a cached
descriptor set that was allocated from it is re-used. This is relatively
simple with the current design, since we always clear the descriptor set
caches whenever a new pool is allocated, so the descriptor pool binding
is always accurate.
Bug: angleproject:5030
Test: MultithreadingTest::MultiContextDrawSmallDescriptorPools()
Change-Id: I5fdeeb46159448dfd679d7169e423048348be5ab
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2437609
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
097f307e
|
2020-10-22T10:26:19
|
|
Vulkan: Fix segv referencing contextVk
Tests dEQP-EGL.functional.fence_sync.* can cause SyncHelper::clientWait
to be called with a null contextVk which we were trying to deference to
get to the renderer. We have a pointer to the renderer already so just
use that.
Bug: b/154030730
Change-Id: If64ec2c960f39b893d2e47a11638d16f830aecfd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2493181
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
0f2542e1
|
2020-10-21T00:38:40
|
|
Vulkan: Validate SPIR-V transformer at link time
Using an ASSERT, the SPIR-V transformer is run at link time to catch
bugs in tests that link but don't draw.
Bug: angleproject:4249
Change-Id: Icbeeb6e968f9901ba003918b1dd1d2eef0792469
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2488227
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
1c7f0284
|
2020-10-21T01:40:08
|
|
Vulkan: Fix invalid clamping of ES3 clear stencil values
Added 3 new end2end tests
Bug: angleproject:5202
Change-Id: I95f9ffd989105f5bd3283676d6fa46e904503369
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2488481
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
d7475437
|
2020-10-20T15:04:18
|
|
Vulkan: Support vertex attribute aliasing for matrix types
This change builds on vertex attribute aliasing SPIR-V tranformation for
non-matrix types to add support for matrix attribute types. This is
done by turning every matrix attribute declaration into multiple vector
attribute declarations, and reusing the same mechanism for resolving
aliasing between non-matrix types.
Take the following example:
attribute mat4 a; // location 0
attribute vec3 b; // location 1
attribute mat3 c; // location 1
attribute vec4 d; // location 2
The shader is modified as such:
attribute vec4 a_0; // location 0
attribute vec4 a_1; // location 1
attribute vec4 a_2; // location 2
attribute vec4 a_3; // location 3
attribute vec3 c_0; // location 4
attribute vec4 d; // location 5
attribute vec3 c_2; // location 6
mat4 a;
mat3 c;
and in the beginning of main(), the following code is inserted:
a = mat4(a_0, a_1, a_2, a_3);
c = mat3(c_0, d.xyz, c_2);
The shader continues to use a and c as before.
Bug: angleproject:4249
Change-Id: Idfcb8c6037ca0c1f21de8203d7e2a1b66fed6e7e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2488128
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
9091de43
|
2020-10-17T00:33:57
|
|
Vulkan: Support vertex attribute aliasing for non-matrix types
Initial implementation that supports float and vecN types. In this
case, every attribute occupies a single location. When two attributes
alias, they are either the same size, or one is bigger than the other.
Take the following example:
attribute vec3 a; // location 0
attribute vec3 b; // location 0
attribute vec4 c; // location 1
attribute vec2 d; // location 1
The shader may access either a or b (but not both). Similarly, it can
access either c or d (but not both). The shader can be modified such
that:
- f(b) is replaced with f(a).
- g(d) is replaced with g(c.xy).
- b and d are removed
As a result, there are no longer any aliasing attributes. In other
words, when attributes alias, the larger attribute can be retained and
the other attributes can be replaced by selecting the appropriate number
of components from the retained attribute.
Bug: angleproject:4249
Change-Id: I7c5461f777d659c92977e2572091a8ce5e422704
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2482286
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
ed876984
|
2020-10-03T11:00:36
|
|
Vulkan: functionally complete worker thread
Working on enhancing worker thread to completely own primary command
buffers. This will include not only processing SCBs from main thread
into a primary, but also submitting those command buffers to the queue.
The CommandProcessor is a vk::Context so it can handle errors in the
worker thread. When the main thread submits tasks to the worker
thread it also syncs any outstanding errors from the worker.
Include asynchronousCommandProcessing feature that will control
whether the worker thread task does it's work in parallel or not. If
false, we wait for the thread to complete it's work before letting the
main thread continue. If true, the thread can execute in parallel with
the main thread.
Bug: b/154030730
Bug: b/161912801
Change-Id: I00f8f013d6cbb2af12a172c4f7927855db2f0ebf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2328992
Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
c55cd6b4
|
2020-10-14T23:06:27
|
|
Vulkan: Remove dead path in clear
If the clear is not mid render pass, clearWithLoadOp was used to either:
- modify the current render pass loadOps, assuming no rendering has been
done, or
- defer the clears by staging them in the attachment images.
The former path however is dead code. It's impossible to start the
render pass without recording any commands. In other words, if the
render pass has already started, the clear must be mid RP.
Bug: angleproject:4836
Change-Id: Idb1cb37b8a0e56b897ac69cf435f9a52be4bd2f4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2473764
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
2072ce50
|
2020-10-18T16:44:09
|
|
Rename "NonLinear" to "SRGB".
In OpenGL parlance there are really only two color spaces:
Linear and SRGB. Vulkan is much more complicated with linear and
nonlinear SRGB, and multiple non-SRGB linear color spaces. Keep
things simple by working with OpenGL nomenclature.
Bug: angleproject:5176
Change-Id: Ia730a9a666a2b3325194b86dc588e7fd226c4183
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2483466
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
e5590288
|
2020-10-18T12:40:14
|
|
Rename "texelFetchInvoked" to "texelFetchStaticUse".
Technically more precise because something could be statically used
and never invoked. Also more consistent with the spec.
Bug: angleproject:5176
Change-Id: I70dd0787d67d9f046b7359abb24107cb430f5cae
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2483465
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
5f7eeb93
|
2020-10-17T11:52:40
|
|
Add isSRGB flag to angle::Format.
Bug: angleproject:5176
Change-Id: I85fc78206456439ba7dab55c093187fb94364823
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2482290
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
7bbe497a
|
2020-10-16T14:46:45
|
|
Vulkan: Implement EXT_texture_sRGB_decode
Implement EXT_texture_sRGB_decode. This builds on the existing
functionality from EXT_texture_sRGB_override, with 2 major edge
cases:
1. sRGB_decode allows the texture state to be overridden by
sampler state, which is implemented by forcing a a texture state
sync during updateActiveTextures if a texture is bound to the same
unit as a sampler with that state
2. texelFetch calls require us to reenable decoding, regardless
of decode state. We add a new compiler pass
(FlagSamplersWithTexelFetch) to mark samplers that are used with
texelFetch in order to support this.
This change also re-enables EXT_texture_sRGB_R8, which was disabled
due to a dEQP bug that this change will bypass.
Bug: angleproject:3609
Bug: angleproject:4503
Test: dEQP.GLES31/functional_srgb_texture_decode_skip_decode_*
Test: GLES31/functional_state_query_texture_*_srgb_decode_*
Test: GLES31/functional_state_query_sampler_*_srgb_decode_*
Test: GLES31/functional_debug_negative_coverage_*_srgb_decode_*
Test: GLES31/functional_android_extension_pack_extensions_ext_texture_srgb_decode
Test: angle_end2end_tests --gtest_filter=SRGBTextureTest.*Vulkan*
Change-Id: I4a67e487dc82e2f57c8c87d4bcd8ef442b6fe220
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2359481
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
16102e8b
|
2020-10-17T01:15:05
|
|
Reland "Vulkan: Fold deferred clears into current clears"
This reverts commit 37c400146e59f718b516eb58e16fa53c8a88bf21.
Reason for revert: Need to clear the package cache when bisecting.
Original change's description:
> Revert "Vulkan: Fold deferred clears into current clears"
>
> This reverts commit e416c92a81c9ef01d633ec5c05e81c2551b6c5d6.
>
> Reason for revert: Reverted parent:
> https://chromium-review.googlesource.com/c/angle/angle/+/2481612
>
> Original change's description:
> > Vulkan: Fold deferred clears into current clears
> >
> > If there are clears prior to a glClear() call, those clears were
> > flushed (starting a new render pass) and then the clear call's clears
> > would be applied (essentially modifying the loadOps of said render
> > pass).
> >
> > The main downside of the above is that the current glClear() clears
> > don't get a chance to be deferred. This was observed in Chrome which
> > clears an attachment with an emulated format, then switches
> > framebuffers.
> >
> > Additionally, if the render pass had already been started, the deferred
> > clears could have become inlined instead of breaking the render pass.
> > Although, it's unlikely for there to be deferred clears when the render
> > pass is already open.
> >
> > This change first identifies which clears need to go through the draw
> > path (scissored, masked or as workaround for driver bug). It merges the
> > rest of the clears (that don't need the draw path) with the deferred
> > clears. It then checks deferred clears and applies them by either:
> >
> > - vkCmdClearAttachments if mid RP
> > - Start a new render pass and use loadOps, if any draw-based clear needs
> > to follow.
> > - Modify current RP loadOps / defer the clear
> >
> > Afterwards, the draw-based clears are applied.
> >
> > Bug: angleproject:4836
> > Change-Id: Id4992c78983b199734508c9d4bb18ed3195c91ec
> > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2455167
> > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
> > Reviewed-by: Jamie Madill <jmadill@chromium.org>
> > Reviewed-by: Charlie Lao <cclao@google.com>
>
> TBR=syoussefi@chromium.org,jmadill@chromium.org,cclao@google.com
>
> Change-Id: I85733b3594409df9b96e3d5b34933522c97c42cf
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: angleproject:4836
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2481613
> Reviewed-by: Tim Van Patten <timvp@google.com>
> Commit-Queue: Tim Van Patten <timvp@google.com>
TBR=timvp@google.com,syoussefi@chromium.org,jmadill@chromium.org,cclao@google.com
# Not skipping CQ checks because this is a reland.
Bug: angleproject:4836
Change-Id: I702cd510f39ee46feab27d4efbf61ae5da10d4e2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2481856
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Tim Van Patten <timvp@google.com>
|
|
37c40014
|
2020-10-16T22:19:20
|
|
Revert "Vulkan: Fold deferred clears into current clears"
This reverts commit e416c92a81c9ef01d633ec5c05e81c2551b6c5d6.
Reason for revert: Reverted parent:
https://chromium-review.googlesource.com/c/angle/angle/+/2481612
Original change's description:
> Vulkan: Fold deferred clears into current clears
>
> If there are clears prior to a glClear() call, those clears were
> flushed (starting a new render pass) and then the clear call's clears
> would be applied (essentially modifying the loadOps of said render
> pass).
>
> The main downside of the above is that the current glClear() clears
> don't get a chance to be deferred. This was observed in Chrome which
> clears an attachment with an emulated format, then switches
> framebuffers.
>
> Additionally, if the render pass had already been started, the deferred
> clears could have become inlined instead of breaking the render pass.
> Although, it's unlikely for there to be deferred clears when the render
> pass is already open.
>
> This change first identifies which clears need to go through the draw
> path (scissored, masked or as workaround for driver bug). It merges the
> rest of the clears (that don't need the draw path) with the deferred
> clears. It then checks deferred clears and applies them by either:
>
> - vkCmdClearAttachments if mid RP
> - Start a new render pass and use loadOps, if any draw-based clear needs
> to follow.
> - Modify current RP loadOps / defer the clear
>
> Afterwards, the draw-based clears are applied.
>
> Bug: angleproject:4836
> Change-Id: Id4992c78983b199734508c9d4bb18ed3195c91ec
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2455167
> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Reviewed-by: Charlie Lao <cclao@google.com>
TBR=syoussefi@chromium.org,jmadill@chromium.org,cclao@google.com
Change-Id: I85733b3594409df9b96e3d5b34933522c97c42cf
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: angleproject:4836
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2481613
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Tim Van Patten <timvp@google.com>
|
|
e416c92a
|
2020-10-06T23:29:02
|
|
Vulkan: Fold deferred clears into current clears
If there are clears prior to a glClear() call, those clears were
flushed (starting a new render pass) and then the clear call's clears
would be applied (essentially modifying the loadOps of said render
pass).
The main downside of the above is that the current glClear() clears
don't get a chance to be deferred. This was observed in Chrome which
clears an attachment with an emulated format, then switches
framebuffers.
Additionally, if the render pass had already been started, the deferred
clears could have become inlined instead of breaking the render pass.
Although, it's unlikely for there to be deferred clears when the render
pass is already open.
This change first identifies which clears need to go through the draw
path (scissored, masked or as workaround for driver bug). It merges the
rest of the clears (that don't need the draw path) with the deferred
clears. It then checks deferred clears and applies them by either:
- vkCmdClearAttachments if mid RP
- Start a new render pass and use loadOps, if any draw-based clear needs
to follow.
- Modify current RP loadOps / defer the clear
Afterwards, the draw-based clears are applied.
Bug: angleproject:4836
Change-Id: Id4992c78983b199734508c9d4bb18ed3195c91ec
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2455167
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
f51e99fb
|
2020-10-13T11:38:28
|
|
Vulkan: Remove serial from RenderPassHelper
We don't delete RenderPass's so no need to keep a serial.
This simplifies things for coming threading code.
Bug: b/169788986
Change-Id: I2577b17bc1f6af163725389589d7cd62d09eea13
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2468538
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
a2ef8144
|
2020-10-14T02:25:37
|
|
Vulkan: fix undefined right shift in GetMask
Bug: chromium:1137170
Change-Id: I95efdc7888e44f2b4227f9c0d892b9102cead0bb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2469616
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
43b4fefd
|
2020-10-14T20:48:37
|
|
Revert "Vulkan: Disable UNASSIGNED-CoreValidation-DevLimit-MissingQueryCount"
This reverts commit a5db7d6eb5284359930b3b82507f96a52c62b6e1.
Reason for revert: VVL rolled with the fix.
Original change's description:
> Vulkan: Disable UNASSIGNED-CoreValidation-DevLimit-MissingQueryCount
>
> Disable UNASSIGNED-CoreValidation-DevLimit-MissingQueryCount while the
> Khronos issue is investigated.
>
> Bug: angleproject:5148
> Change-Id: If3cd4b028182a06411b928417e7c778ea02189d1
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2462075
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Commit-Queue: Tim Van Patten <timvp@google.com>
TBR=timvp@google.com,syoussefi@chromium.org,jmadill@chromium.org
# Not skipping CQ checks because original CL landed > 1 day ago.
Bug: angleproject:5148
Change-Id: Ibb66370334554773dda3e849d0bc9f3e8f8577fc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2472997
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Tim Van Patten <timvp@google.com>
|
|
1e435d07
|
2020-10-14T13:33:10
|
|
Vulkan: Support dumping VMA stats string
This CL adds support for dumping the VMA stats string, which can be
given to VmaDumpVis.py to visualize the allocations that the VMA has
performed.
To enable dumping the string, set:
RendererVk.cpp
rx::kOutputVmaStatsString = true
Copy the desired JSON output into a text file, and pass that to
VmaDumpVis.py:
python3 \
third_party/vulkan_memory_allocator/tools/VmaDumpVis/VmaDumpVis.py \
-o stats.png stats.txt
The legend for the visualization is available at:
https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator/tree/master/tools/VmaDumpVis
Bug: angleproject:2162
Test: Manual verification
Change-Id: Ic8c1002805dd57e594df724bcf1cdbc1d1599a3e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2472525
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Tim Van Patten <timvp@google.com>
|
|
fa47b9a4
|
2020-10-14T15:42:17
|
|
Revert "Vulkan: Disable vkCreateDevice-physical-device-features-not-retrieved"
This reverts commit 4dae43d877763390c56435fb0126e310ee515fb8.
Reason for revert: VVL rolled with the fix.
Original change's description:
> Vulkan: Disable vkCreateDevice-physical-device-features-not-retrieved
>
> Disable
> UNASSIGNED-BestPractices-vkCreateDevice-physical-device-features-not-retrieved
> while the Khronos issue is investigated.
>
> Bug: angleproject:5149
> Change-Id: I680cf264d6356cf219826902d7fdf2304e27ebab
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2461475
> Commit-Queue: Tim Van Patten <timvp@google.com>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
TBR=timvp@google.com,syoussefi@chromium.org,jmadill@chromium.org
# Not skipping CQ checks because original CL landed > 1 day ago.
Bug: angleproject:5149
Change-Id: I0a338983ac0804d5bb0e41e592f177372be66d5c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2471556
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Tim Van Patten <timvp@google.com>
|
|
7d70a62f
|
2020-10-13T10:41:50
|
|
Vulkan: refactor error info
Consolidate error info into a structure in preparation of threading
work. Also preserves the meaning of the data until it's rendered to a
string for consumption by GL.
Bug: b/154030730
Change-Id: I8cde7133c817d77fdb117efc1c11edc94f615da3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2468537
Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
1c6adcad
|
2020-10-12T15:37:18
|
|
Reimplement WindowSurfaceVk::checkForOutOfDateSwapchain
Simplified and made faster for devices that return
VK_ERROR_OUT_OF_DATE_KHR (and VK_SUBOPTIMAL_KHR).
Bug: b/168327817
Change-Id: Iec3dad8d528eb7d3645062a6736b397514432829
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2464921
Commit-Queue: Ian Elliott <ianelliott@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
|