|
959037e0
|
2020-05-25T15:40:38
|
|
Vulkan: Preserve RPs on XFB changes when possible.
Instead of unconditonally ending the RenderPass we keep a set of
active XFB buffers in the ContextVk. This lets us re-use RPs when
we don't write to the same buffer repeatedly.
Reduces the RenderPass count in our Manhattan capture from 29->23.
Bug: angleproject:4622
Change-Id: I28c2d4d3db1490e5d07be3c48d21fd2cc6ff85d6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2196957
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
c39d25ae
|
2020-06-01T12:42:33
|
|
Update State to check mExecutable
A user may be using Program Pipelines, rather than monolithic Programs,
so State should check if mExecutable is valid, rather than mProgram,
since that indicates the presence of either a PPO or a Program.
Exercising these paths requires additional tests:
SimpleStateChangeTestComputeES31PPO::DeleteImageTextureInUse()
Texture2DTestES31PPO::TexStorage()
Texture2DTestES31PPO::SingleTextureMultipleSamplers()
These new tests exposed bugs in the PPO implementation where updates to
the active Program's ProgramExecutable were not being propagated to the
Executables of the PPO's containing that Program. In these particular
cases, updates to the active samplers/images/textures were not being
copied to the PPO's Executable.
Bug: angleproject:3570
Test: end2end tests listed above
Change-Id: I297cac2d0367f180dd7fa01a1ee7ba53996867c4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2225417
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
b50541b2
|
2020-01-14T09:07:03
|
|
Vulkan:Adding key perf trace markers
Adding trace markers in performance-critical functions.
Primary areas of interest are command buffer processing
and cleanup and memory mapping.
Bug: b/156403378
Change-Id: Icba53024771711d79f7eee7085bf4dae0e033e63
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2002689
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Tobin Ehlis <tobine@google.com>
Commit-Queue: Tobin Ehlis <tobine@google.com>
|
|
6b946a7b
|
2020-06-05T16:04:34
|
|
Vulkan: Zero-init ContextVk dirty bit handlers.
This allows for a better debugging experience and can solve some
potential invalid ASSERTs due to some dirty bit handlers not being
initialized.
Bug: angleproject:4622
Change-Id: Ib34e35dea6c6c7de250ae6600576f0324c150ae6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2233403
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
a91dcb62
|
2020-06-05T09:46:56
|
|
Fix FramebufferVk::getScissoredRenderArea() for pre-rotation
This fixes cases where pre-rotation wasn't occuring for small scissors
used with glClear(). There are around 1000 tests that do this.
Test: angle_deqp_gles2_tests --gtest_filter=dEQP.GLES2/functional_fragment_ops_depth_stencil_*
Bug: angleproject:4431
Bug: b/157933235
Bug: b/157933198
Change-Id: I469d51975e3bc3a7bfc9521a3817c919e809f7dd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2228211
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Ian Elliott <ianelliott@google.com>
|
|
77851053
|
2020-05-26T18:14:56
|
|
Reduce dependency on ProgramExecutable::mProgram[Pipeline]State
Remove the dependency on mProgramState/mProgramPipelineState for the
following functions in ProgramExecutable:
hasUniformBuffers()
hasStorageBuffers()
hasAtomicCounterBuffers()
hasTransformFeedbackOutput()
getTransformFeedbackBufferCount()
The data structures those function were querying were recently moved
into the ProgramExecutable, so the call stack was:
ProgramExecutable -> ProgramState -> ProgramExecutable
This change updates the functions to return the results immediately.
Remaining functions to be cleaned up in later CLs:
hasDefaultUniforms()
hasTextures()
hasImages()
Bug: angleproject:4520
Test: Build/CQ
Change-Id: Ieaa041ff128e389f322745d55f688d4b07a5a23d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2216764
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Tim Van Patten <timvp@google.com>
|
|
3afad5b7
|
2020-05-26T16:45:44
|
|
Vulkan: Cleanup unused variable in submitFrame()
Bug: angleproject:2046
Change-Id: I9cc7c2cbb0bf9535885cc909a046d36691b8fcc8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2230385
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
f2d4abb2
|
2020-05-25T16:10:07
|
|
Vulkan: Correct the viewport before intersecting it with the scissor.
Eliminate the potential for integer overflow when clippling a large
viewport rectangle by first limiting it to the Vulkan viewport size
limits.
BUG=chromium:1078378
Change-Id: I2648c6136d2d27d67a3fc5dae2de821279d70d81
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2215308
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
1df70f03
|
2020-06-01T16:32:41
|
|
Vulkan: Swap RenderArea coords for pre-rotation
Fixes Vulkan validation-layer errors. Found by dEQP tests that
use small viewports and/or scissors (see Buganizer bugs for
details).
Bug: angleproject:4431
Bug: b/157933235
Bug: b/157933198
Change-Id: I83966906d70c30a4b50209cf1a33649bf69e3dd8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2225607
Commit-Queue: Ian Elliott <ianelliott@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
5891b091
|
2020-06-01T11:24:37
|
|
Vulkan: acquire swapchain image should use COLOR_ATTACHMENT_OUTPUT_BIT
The mAcquireImageSemaphore is for achieving the maximum overlap between
display engine and rendering engine. We should only need to block when
we write to the swapchain image. Work that doesn't touch the visible
buffer can proceed.
Bug: b/157916459
Change-Id: Ic9a9a1f2a7648ef7f50f99578a0f0d674ae5e66c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2223826
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
558882a1
|
2020-05-28T15:26:37
|
|
Vulkan: Pass vk::Context to BufferHelper::init.
This is necessary so we can initialize a "null" BufferHelper in
RendererVk which does not have access to the ContextVk. This in
turn will allow us to use a single global "null" Buffer instead
of instantiating them all over ANGLE.
Also removes a TODO that was sticking in the code.
Bug: angleproject:2162
Bug: chromium:1086532
Change-Id: Ica48d5b886e885ebfe0f8e3abfbe8169a8eaa5b2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2219139
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
4d7a3993
|
2020-05-27T14:08:20
|
|
Vulkan: Rotate gl_PointCoord for Android pre-rotation
This extends the current y-flip that's done for gl_PointCoord.
Now, gl_PointCoord is rotated and then flips both the x and y-axis
(similar to gl_FragCoord). The tests used to reproduce the
problem and the fix are:
angle_deqp_gles2_tests --local-output --gtest_filter=dEQP.GLES2/functional_shaders_builtin_variable_pointcoord* --use-angle=vulkan
angle_end2end_tests --local-output --gtest_filter=*GLSLTest.PointCoordConsistency*Vulkan*
Bug: b/157476696
Change-Id: Iada8680eda8322f7382ff242e4a9422a66114f07
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2216700
Commit-Queue: Ian Elliott <ianelliott@google.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
02fa7313
|
2020-05-05T17:01:18
|
|
Vulkan:Initial worker thread disabled by default
Created new CommandProcessor class that can be run as a worker thread.
Running CommandProcessor within RendererVk as a worker thread that
takes a CommmandBufferHelper (CBH) ptr as the interface and processes
that CBH into a primary command buffer.
Main thread has a queue of CBH to draw from. After submitting a CBH to
the worker, it pulls next CBH from the queue. Worker thread releases CBH
back to the main thread queue when done.
Synchronization goes two ways:
1. Work submitted to worker thread is managaed with a mutex and
condition variable based around the work queue.
2. Available CBH ptrs for the main thread have a mutex and condition
variable that manages the CBH queue.
The worker thread is disabled by default, and, when enabled, it will
currently behave and perform as the non-threaded code. This is because
the kNumCommandBuffers const in ContextVk.h is set to 2. With only 2
command buffers, they will be assigned to the inside and outside
RenderPass command buffers respectively. Then, as soon as one is
submitted, the main thread will stall waiting for it to be completed
and put back into the queue mentioned in #2 above.
The next step is to move command submission to the worker thread and
update the number of command buffers so that processing/submission
will occur in parallel with the main thread. Right now there is a
race condition issue when attempting to run in parallel because the
main thread updates and submits the same primary command buffers
that are used in the worker thread, which is in violation of the
Vulkan spec.
The follow-on CL will fix this issue as the main thread will only
touch SecondaryCommandBuffers and the worker thread will be the
only thread touching the primary command buffers.
Bug: b/154030730
Change-Id: Ib0c518bbd7ca9a3a7e789f4e1f2f7131ddc0509e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2174719
Commit-Queue: Tobin Ehlis <tobine@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
901045cc
|
2020-05-26T10:41:18
|
|
Vulkan: Rotate gl_FragCoord for Android pre-rotation
This extends the current y-flip that's done for gl_FragCoord.
Now, gl_FragCoord is rotated and then flips both the x and y-axis.
Bug: angleproject:4643
Bug: b/156395519
Change-Id: Iada8680eda8322f7382ff242e4a9422a66114f05
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2210936
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Ian Elliott <ianelliott@google.com>
|
|
6de7ee52
|
2020-05-25T17:00:01
|
|
Clean up overlay RenderPass count reporting.
This fixes the trace perf test to accurately report how many
RPs in each frame. Instead of counting the RPs on a flush we now
count only on a swap call. This won't work for offscreen surfaces
which is fine - the overlay doesn't really have the same use for
offscreen rendering. Also ignores the first frame in graph data so
we can ignore the first setup frame in the trace tests.
Also skips the redundant extra "flush" call that would generate an
empty space in the RP graph.
Gives a cleaner measurement for optimizing the XFB RP count.
Bug: angleproject:4622
Change-Id: I5762c500cdb216700247095984ae62b4f8741602
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2215309
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
6789018a
|
2020-05-25T11:54:24
|
|
Context: init impl before creating objects.
This eliminates a potential invalid access that would turn up
in the Vulkan back-end. Also init a couple uninitialized variables.
Should fix an ASSERT in the Vulkan back-end when running WebGL tests.
Bug: chromium:1085627
Change-Id: I153f8dd83f567345b964b68784940d11712e7804
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2212498
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
|
|
d3d7b95b
|
2020-05-19T17:27:50
|
|
Vulkan:Migrate timer sync functions to one-off cmd buffer
ContextVk's getTimestamp() and synchronizeCpuGpuTime() were the two
places that mCommandQueue was used outside of processing
SecondaryCommandBuffers. Migrating those functions to use the one-
off command buffer instead. This will allow for the removal of
mCommandQueue from ContextVk as we migrate it to RendererVk
instead for threading phase2 development.
Bug: b/154030730
Change-Id: Ic00ce56739dadcdc4b5a1b1839e0e18603bfe0eb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2209312
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Tobin Ehlis <tobine@google.com>
|
|
1a4f6e1f
|
2020-05-20T10:37:24
|
|
Vulkan:Migrate command buffers to pointers
This is an intermediate CL as we move to a worker thread.
With the worker thread there will be a pool of more than 2 command
buffers so the current command buffers in use on the main thread
will be pointers that are assigned from that pool.
This CL isolates the command buffers as pointers to make review
simpler.
Bug: b/154030730
Change-Id: I3fc91222b07d5f3bf60f92a4c01b0910daad7df6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2207812
Commit-Queue: Tobin Ehlis <tobine@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
4c974793
|
2020-05-15T15:52:04
|
|
Vulkan: Don't invalidate XFB buffers on FBO switch.
This shouldn't need to change when the FBO changes.
Bug: angleproject:4622
Change-Id: I4b06a0f02e8dd16d50aaf5ac5fe4bcb81fc76c8c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2204597
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
258d94f6
|
2020-05-18T16:21:50
|
|
Vulkan: Add workaround for nvidia to always merge barriers into one
vkCmdPipelineBarrier call
Nvidia preferes one barrier call than multiple calls with fine grained
stage dependency information. They do not care much about stage
dependency. This adds a feature flag that sets to true on nvidia and
will merge all barriers into one call.
Bug: angleproject:4633
Change-Id: I204484aa4c5989655f74d70a0eaa235c3c83f548
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2207635
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
8270ebbd
|
2020-05-08T14:00:18
|
|
Vulkan: Refactor and clean up XFB code.
This is a refactor-only change mostly. It makes the classes work
more similarly to how the other classes in the Vk back-end work. Also
removes some redundant code. Moves the buffer caching into begin for a
more dirty-bits like approach.
Bug: angleproject:4622
Change-Id: I34ac13e1d05b48e3267937c760d195493a76ed02
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2191172
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
66d7490c
|
2020-05-12T15:09:29
|
|
Vulkan:Add trace marker in finishToSerial()
Bug: b/156403378
Change-Id: Ibd50bc0448ba15af14191c3bc735782ab0741abf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2197615
Reviewed-by: Tobin Ehlis <tobine@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Tobin Ehlis <tobine@google.com>
|
|
11f9c56c
|
2020-05-11T22:56:18
|
|
Vulkan: Tighten up asserts for resource ownership
We're not permitted to make accesses to a resource while it's owned by an
external instance or API. Add some asserts to verify this.
Exempt images on platforms that don't implement external memory barriers.
Bug: angleproject:3289
Change-Id: I1de929f6a412bfe5c1b798eaa1dc401bbceb5b7f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2195685
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Michael Spang <spang@chromium.org>
|
|
d0146e07
|
2020-05-12T14:47:11
|
|
Vulkan: Rename SurfaceRotationType to SurfaceRotation
Follow-on CL per request in
https://chromium-review.googlesource.com/c/angle/angle/+/2191425/3/src/libANGLE/renderer/renderer_utils.h#48
Bug: angleproject:4436
Change-Id: I2ee8c65a0dbcf2eee4c9c7f4252abf16a578cad3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2197614
Commit-Queue: Ian Elliott <ianelliott@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
234ea5b1
|
2020-05-05T14:44:30
|
|
Vulkan: Wrap barrier data into PipelineBarrier class
This is preparation CL without introducing any functional change. This
Cl wraps barrier data into its own class and put necessary data
structures in place. It still uses one vkCmdPipelineBarrier call.
Bug: b/155341891
Change-Id: If9c70d24873bd9b89e598acfba2eeee364f0b6c1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2185149
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
562602a3
|
2020-05-05T12:32:56
|
|
Vulkan: Move CommandBufferHelper to vk_helpers.h
Pull CommandBufferHelper class out of ContextVk.h/cpp and move it
to vk_helpers.h/cpp. This is the natural place for it as it's a
helper class. Also, this class is planned to be the interface between
the main and worker threads so moving it to vk_helpers makes it easy
to share between Context and Renderer.
Bug: b/154030403
Change-Id: Ie5eeb864164a3787f800905ae885027834bd1a08
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2182177
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Tobin Ehlis <tobine@google.com>
|
|
1e2109b9
|
2020-05-04T15:41:33
|
|
Vulkan: Merge Command Buffer Helpers
Merge the outside and inside renderPass command buffer helpers to
share the single CommandBufferHelper (CBH) class.
This commom class is still used for separate outside and inside
renderPass command buffer objects in the context. That's a bit
wasteful since some functions and members are only relevant to
one type of command buffer.
However, this is a foundational change that will provide the
immediate benefit of being able to use the CBH as the interface
for passing commands to a worker thread. It also provides the
long term benefit of starting the refactor to merge the outside
and inside renderPass command buffers into a single command buffer
object that can be used by the main thread to record all commands
whether inside or outside of a renderpass.
Bug: b/154030403
Change-Id: I83c63385fe9858bc05853c550d4fb2e13226d582
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2180850
Reviewed-by: Tobin Ehlis <tobine@google.com>
Commit-Queue: Tobin Ehlis <tobine@google.com>
|
|
d657e1d7
|
2020-04-24T13:13:18
|
|
Vulkan: Defer framebuffer clears.
This works by storing the deferred clears in the ImageHelper's staging
buffers. We apply the deferred clears onto the RenderPass right before
we begin to draw. Storing the clears in the ImageHelper solves problems
where we clear GL Textures in a Framebuffer and then unbind the
Textures and sample from them. Or do other commands like CopyTexImage.
Note that because the staging buffer clears only handle full-image
clears we need to immediately apply some scissored clears where before
we would use the RP. This should be a pretty rare occurrence and it is
possible to optimize that in the future.
Reduces the RenderPass count in the Manhattan "frame 10" trace from max
22 to max 20. May improve perf slightly on Android or may have effects
too small to measure. Should not regress performance.
Bug: angleproject:4517
Change-Id: I02150d531022afb903f1058f070937ec6337bd88
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2142711
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
41f7bcce
|
2020-04-30T16:09:36
|
|
Vulkan: Add missing cache flush
DynamicBuffer are not cache coherent, thus requires flush. Also adds a
few assertion to ensure implementation matches expectation.
Bug: b/155432713
Change-Id: Iaf28786168a3bb5d746b43e030f882c4b6d005ad
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2174269
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
040e4f6f
|
2020-05-01T14:50:59
|
|
Vulkan: Minor command buffer refactor
Fix a couple minor nits with command buffer handling in ANGLE:
1. Make initialize() common CommandBufferHelper function
2. Reduce some common code when starting renderpass
Bug: b/154030403
Change-Id: Ie9cfcd7c053c8605b16bc2dee7f8d69418922492
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2175106
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Tobin Ehlis <tobine@google.com>
|
|
10ee839c
|
2020-04-30T16:15:41
|
|
Vulkan: Improve viewport and scissor for pre-rotation
Handle all 4 rotations and non-full-screen viewports & scissors.
Test: Running NBA 2K20 while flipping phone left and right (90 & 270) + watching it in Visual Studio and with Android logcat INFO messages
Bug: b/150329969
Bug: angleproject:4431
Change-Id: Icd555dbc2419aac1413452c1b306d6227784dc27
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2174961
Commit-Queue: Ian Elliott <ianelliott@google.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
428e4415
|
2020-04-27T12:27:00
|
|
Vulkan: Migrate trace events and occlusion queries
Moved GPU trace event and occlusion query commands that were on the
primary command buffer to the SecondaryCommandBuffer (SCB). Putting
these commands on outside render pass SCB and flushing those commands
to primary on-demand as needed to maintain ordering of commands.
For resetQueryPool command used by occlusion query, allow the SCB
to queue up that command for inside RenderPass SCB. This avoids
ending a renderPass prematurely and allows all outstanding reset
commands to be executed before the beginRenderPass command since
the resets must occur outside of a renderPass.
This is groundwork to simplify the hand-off of SCBs from the main
thread to a worker thread. Long-term we'd like a single SCB that
can handle both inside and outside renderPass commands at the same
time to pass to the worker thread for processing into a primary CB.
Bug: b/154030403
Bug: angleproject:4603
Change-Id: Ic1023ae27a9b14435743549ea9933edf1c4b318b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2168114
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Tobin Ehlis <tobine@google.com>
|
|
df31624e
|
2020-04-30T13:28:24
|
|
Vulkan: Reduce the onBufferRead/onBufferWrite API verbosity a bit
This adds helper functions to handle common use case for onBufferRead
and onBufferWrite to reduce the API verbosity a little bit. Also fix the
transform feedback bug that we are passing in wrong access/stage flags
when it is emulated by vertex shader.
Bug: b/155122200
Change-Id: Id2549ca00cad184a90c6230dc3665aaff44dda08
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2174265
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
67da0051
|
2020-04-30T17:53:58
|
|
Vulkan: Fix dbg util label bug
Courtney noted this bug from a review. Should begin label on pushGroup
instead of insert label.
Bug: b/154030403
Change-Id: I5f4da5762e1ef03fe27b414740e34d2064af86b5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2171951
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
f07d0072
|
2020-04-27T16:51:05
|
|
Vulkan: use fine grain stage for buffer barriers
We are using VK_PIPELINE_STAGE_ALL_COMMANDS_BIT for
mGlobalMemoryBarrierStages, which is used for both src and dst. This
will cause a full pipeline stall whenever a buffer object introduces a
barrier. This CL will let the caller pass in the specific stage it
will be used for, allowing us to track write and read stage dependencies
separately and request the corresponding barriers.
Bug: b/155122200
Change-Id: I8b8bd291a03b77d07cfbcbe7c3cda2d3771588b9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2169014
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
45bb2b9c
|
2020-04-22T17:09:41
|
|
Vulkan: Add debug label commands to SecondaryCommandBuffer
Add begin/end/insert DebugUtilsLabel commands to SecondaryCommandBuffer.
Switch use of these commands to the outside renderpass command buffer
instead of directly in the primary command buffer.
This change should maintain the exact same sequence of commands but
avoids some direct use of the primary command buffer. This is
desirable for the threaded refactor where a worker thread will
process the SecondaryCommandBuffer into a primary and the main
thread will no longer use the primary command buffer directly.
Note that because the debug utils label has an arbitrarily long
string that we need to adjust the command allocation to allow for
the string size exceeding the default allocation size. In this case
we just make a single larger allocation to accommodate the command
with the large string.
Bug: b/154030403
Change-Id: Iab7832ffc3d38ce168da2d624bd5b5d5b33ec11b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2161955
Commit-Queue: Tobin Ehlis <tobine@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
21c5af31
|
2020-04-20T10:29:13
|
|
Vulkan:Migrate events and queries to secondary Cmd Buffer
Replace flushAndGetPrimaryCommandBuffer() function with
endRenderPassAndGetCommandBuffer() for events and queries. The end
result should be the same, but this allows a number of places that were
putting commands directly into the primary to put the commands into
ANGLE's custom SecondaryCommandBuffer (SCB) instead.
This also fixes a couple of minor bugs related to command buffer
ordering. flushAndBeginRenderPass() now flushes any outside
RenderPass (RP) commands first. Also, when insideRP commands are
flushed to the primary, set "mHasPrimaryCommands = true;"
Bug: b/153666475
Change-Id: I68413f25d27175afed0a20bc49f22f4c8d01e4fb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2156932
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Tobin Ehlis <tobine@google.com>
|
|
6fc0066a
|
2020-04-21T17:40:54
|
|
Vulkan: Add a sampler cache.
This uses a packed sampler description to re-use samplers for multliple
VkImages. The samplers will persist for the lifetime of RendererVk. In
the future we could look at doing cache eviction for large object
counts.
Reduces the active VkSampler cache in Manhattan from over 1200 to 9.
Also should reduce the number of VkSamplers used with Chrome.
Bug: angleproject:4491
Change-Id: Idca00e4ed8cb660a0865281544aaa57cf884bbdb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2160771
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Tobin Ehlis <tobine@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
913f4f42
|
2020-04-15T00:54:37
|
|
Vulkan: Support VS, FS, and CS in the same PPO
This CL adds support for a Program Pipeline Object to have a VS, FS,
and CS attached to the same PPO and then using that PPO for both draw
and dispatch calls.
Bug: angleproject:3570
Test: KHR-GLES31.core.compute_shader.sso*
Change-Id: I262cdbdfd442f6db5ba2b45d1308003102b237cb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2150078
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Commit-Queue: Tim Van Patten <timvp@google.com>
|
|
dadd1986
|
2020-04-21T01:50:00
|
|
Implement GL_APPLE_clip_distance
- Built-in variable gl_ClipDistance has been added to compiler.
- Desktop GL: gl_ClipDistance is supported since GL 3.0. Enable/Disable
each gl_ClipDistances[i] works out of the box via glEnable().
- Vulkan/Metal: Use uniform variable to control writing to each
gl_ClipDistance. One bit flag controls one element in the gl_ClipDistance
array. The writing to the disabled element in vertex shader will be
ignored, and turned into zero assignment instead.
- Direct3D/Mobile GL: Not implemented yet.
- Added ClipDistanceTest to gl_tests and compiler unittests.
- GL_APPLE_clip_distance is a subset of GL_EXT_clip_cull_distance, so
GL_EXT_clip_cull_distance could be implemented in future if needed.
Bug: angleproject:4452
Change-Id: I571ac8b56826989808a680226a04bec4cf59988e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2084324
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
927ea225
|
2020-04-21T19:42:18
|
|
Vulkan: add vulkan error code in the error message
If driver returns error code that we do not know, we simply output
"unknown vulkan error code". Instead we should at least include the
actual errorCode here so that people can search up to see what it is.
Also remove the double period at the end of string and added a few other
vulkan error strings.
Bug: b/154665382
Change-Id: Ic4138e90534b4e7d97520fe10ac1477d2930d9c8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2160130
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
03c18fbd
|
2020-04-13T16:01:01
|
|
Vulkan: Skip load if depth/stencil value are undefined
EGL1.5 spec says depth/stencil data are undefined after swap. This CL
will track the depth/stencil data and mark it as undefined and skip the
load if it is undefined.
Bug: b/153885625
Change-Id: Ifb3d88d442da547fa78c1eae091cbae08a20d0ab
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2148179
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
54a3d7cb
|
2020-04-20T12:02:02
|
|
Vulkan: Use DontCare for the presentable surface's last renderpass depth/stencil storeOp
The EGL spec says depth/stencil value are undefined after swap. We dont
need to store depth/stencil value if this is the very last renderpass of
a presentable surface and the endRenderpass call is from swap call.
Bug: b/153885625
Change-Id: Ie853d2686c8eb15a4fa9dbdd80eb66e9fc037d24
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2157886
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
f13689b6
|
2020-04-17T14:43:28
|
|
Vulkan: Use renderpass' finalLayout to transit to ImageLayout::Present
This detects the last renderpass is actually rendering to the image we
are going to present and this is the very last renderpass to that image.
We use finalLayout of the renderpass to do layout transition to
VK_IMAGE_LAYOUT_PRESENT_SRC_KHR instead of a standalone barrier call.
Bug: b/153885625
Change-Id: Ifc17c77a1ba12f22c9d6038775f3e254c35655ca
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2155250
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
a5e46552
|
2020-04-20T09:33:21
|
|
Vulkan: glDrawElements used old offset into index buffer
When the vertex array binding is changed, the value of
ContextVk::mLastIndexBufferOffset must be reset so that an
old/cached offset (from a previous draw call) is not used for a
new draw call.
This addresses rendering artifacts and Vulkan validation errors
seen with running NBA 2K20 on Android (or the ANGLE trace on
Windows).
Bug: b/153682968
Bug: angleproject:4575
Bug: angleproject:4576
Change-Id: I69089964b8d278c7fc8610ab003548864a215dab
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2152850
Commit-Queue: Ian Elliott <ianelliott@google.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
d5ba916d
|
2020-04-07T17:59:08
|
|
Vulkan: Change to record transform feedback related APIs per spec
Fix not to record vkCmdBindPipeline and vkCmdBindTransformFeedbackBuffers
during transform feedback is active.
Initiated by Hyunchang Kim hckim.kim@samsung.com
https://chromium-review.googlesource.com/c/angle/angle/+/1971953
Pause Transform feedback on binding graphics pipeline and
end of render pass. Set a new dirty bit to indicate transform
feedback may need resume when invalidate graphics pipeline.
Test: dEQP-GLES3.functional.transform_feedback.*
Test: angle_end2end_tests --gtest_filter=TransformFeedbackTest*
Bug: angleproject:3206
Change-Id: I6c70ef461a31dcd618058b167835ac278a21d04a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2139474
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
6e0d718a
|
2020-03-31T18:41:57
|
|
Vulkan: Implement device memory sub-allocation
Use AMD Vulkan Memory Allocator for device memory sub-allocation.
We now have a mempool from which all glBuffer memory is allocated.
The CPU overhead involved in repeated IOCTL calls to the kernel is
reduced significantly.
Bug: angleproject:2162
Change-Id: Id7681ffe2ac3d2853141ebe34c7df7b7fdd0d55e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2124519
Reviewed-by: Tobin Ehlis <tobine@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
|
|
dee4d7a5
|
2020-04-10T10:22:56
|
|
Vulkan: Early fragment tests optimization
Checks if early fragment tests as an optimization is feasible and enable
it if we can. In the link time, if context state diagrees with
optimization (in rare case), then remove the
ExecutionModeEarlyFragmentTests sprv op code.
Bug: angleproject:4508
Change-Id: Ifbb06c0ffb050a9f3ddb16ab50362e908b4b9cf6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2136490
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
405f8e7b
|
2020-02-24T17:38:10
|
|
Vulkan: Support Program Pipeline Objects
Add support for PPOs to the Vulkan back end.
Bug: angleproject:3570
Change-Id: I5403456929847c185467b008d810f31ecfcb60cc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2072652
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
2a0c3596
|
2020-03-31T15:36:45
|
|
Vulkan: Clean up robust and emulated image clears.
This change consolidates image clears in multiple places into a single
site in ImageHelper initialization. It adds support for appending clear
image commands as well as prepend (the default). We prepend clears
because image initialization happens after data upload.
The Vulkan robust clear path now works like the other back-ends. The
change flushed out a bug where partially uninitialized CopyTexImage was
not correctly initializing a texture before triggering a full resource
clear. Texture::copyImage now uses a workaround where we first init the
image before clearing it. After the init we upload the new data.
We'll use the appending clears path when implementing deferred clears.
Bug: angleproject:4517
Change-Id: If9212f3b8cdd0fc8b7e729d364530801a644e164
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2130627
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
a30c6f35
|
2020-04-07T11:25:20
|
|
Vulkan: Pass RendererVk to BufferHelper::destroy.
Bug: angleproject:2162
Change-Id: I7c0090d48b0a5bac222b1edf4c2db280d5b32930
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2139993
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
c9c4e4ed
|
2020-04-02T10:29:52
|
|
Track rendering feedback loops by-context.
This fixes an issue where feedback loops detection would trigger false
positives based on texture use in multiple contexts.
1) there are two contexts, C1 and C2, sharing resources
2) in C1, there is a texture T bound to GL_TEXTURE_2D, and a program in
use that will sample C1
3) in C2, a framebuffer is created and T is bound to it
This fix indexes each set of active bindings in an object by ContextID.
We can potentially redo this solution in the future if this proves to
have too much tracking overhead.
Includes a test writen by Ken Russell.
Bug: angleproject:4517
Change-Id: I67012e68947c42d863dca193972576c82d5f3712
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2134406
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
745e0712
|
2020-03-21T17:46:05
|
|
Vulkan: Enable CPU only buffers for PBOs
Add support for a CPU only buffer for PBOs that serve as
the destination for all host operations like MapBuffer*.
This removes the latency caused by waiting for the in-flight
GPU commands to be complete before handing over the buffer
to the app.
This change removes a ~6ms wait/sleep on the first call to
MapBuffer* in each frame of Manhattan
Bug: angleproject:4339
Tests: angle_end2end_tests --gtest_filter=BufferDataTest*Vulkan
Change-Id: I52016b160af8a670cc30f01c05e48f699521310f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2116874
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Tobin Ehlis <tobine@google.com>
|
|
449d9d76
|
2020-03-31T17:27:00
|
|
Vulkan: Refactor garbarge collection related parameter
Use RendererVk instead of VkDevice as a parameter in garbage collection
functions.
Bug: angleproject:2162
Change-Id: Ifd53e05223d6d603402c9b7fcfa82fe1f896458c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2131882
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
20e375eb
|
2020-03-14T20:27:09
|
|
Vulkan: Use shader stage specific barrier
Seperate vertex and fragment shader read/write with shader stage
specific barriers
Bug: angleproject:4467
Change-Id: Id18909b497b087e58d750023399943bc9d414edf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2102957
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
6328caf3
|
2020-03-24T19:31:02
|
|
Vulkan: Avoid renderpass break for occlusion query
This ensures beginQuery and endQuery only get inserted into renderpasses
and will not close renderpass because of query call
Bug: angleproject:4381
Change-Id: I690f096b9e8e4b7ea9a67045d1be0fd7a319c98c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2119246
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
abaa3573
|
2020-02-20T10:23:02
|
|
Vulkan: Only calculate variable locations once
Variable locations and descriptor set/binding values are calculated
multiple times:
- Compiling GLSL->SPIR-V
- Creating the Vulkan pipeline layout
- Updating descriptor sets
These values should instead be calculated once and reused throughout
since they won't change without recompiling the shader program.
Bug: angleproject:3570
Change-Id: I5d8767b3b2e2f741aade7fec9991eea53ee2eb98
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2067101
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
10ade024
|
2020-02-13T18:11:54
|
|
Create the ProgramExecutableVk Class
The ProgramExecutableVk class is being created to collect data
structures that are common to both ProgramVks and ProgramPipelineVks,
as well as any shared functions. This allows callers to make
Program-/ProgramPipeline- specific queries without needing to know
exactly which responded by querying the current ProgramExecutableVk.
This will also allow the necessary data structures to only be
populated and stored within the ProgramExecutableVk when necessary
and reused as often as necessary.
A few things are being moved into this class:
- mVariableInfoMap
This information will be required to defer translating the SPIR-V
until when the vulkan pipeline layout is determined and the actual
locations are known. This will also allow removing determining
these locations twice (during GLSL->SPIR-V compilation and pipeline
layout).
- createPipelineLayout()
- update*DescriptorSet()
- Descriptor Set Layout lists
- Pipeline Layout
- Various other functions/members related to pipeplines, descriptor
sets, etc.
Bug: angleproject:3570
Change-Id: I4b5ababeafec865148783c8ffd4c15f659f4856d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2055656
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
68083e89
|
2020-03-04T15:55:53
|
|
Vulkan: Move cached samplers/images and has*() to ProgramExecutable
The active samplers and images are being moved from Program into
ProgramExecutable to unify interacting with them for Programs and
ProgramPipelines
Also, create some helper functions for gl::Program that ProgramExecutable can
call to make it easier for ProgramPipeline to respond to similar
queries for each of the Programs in the ProgramPipeline.
Bug: angleproject:3570
Change-Id: I0b37f1a379e56b9659d82d92f6d7a546beee11cd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2087648
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
7e0699a2
|
2020-02-05T17:04:06
|
|
Create the ProgramExecutable Class
The ProgramExecutable class is being created to collect data structures
that are common to both Programs and ProgramPipelines, as well as any
shared functions. This allows callers to request the current
ProgramExecutable from the State and make
Program-/ProgramPipeline-specific queries without needing to know
exactly which responded. This will also allow the necessary data
structures to only be populated and stored within the ProgramExecutable
when necessary and reused as often as necessary.
Bug: angleproject:3570
Change-Id: I101f08ab03421894667b4a426a04d2147489f0e1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2040512
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
b91d2630
|
2020-03-24T13:17:58
|
|
Speculative fix for assertion failure with samplers.
This was crashing for example here:
https://chromium-swarm.appspot.com/task?id=4b174a9710848410
https://chromium-swarm.appspot.com/task?id=4b214baec2ee7e10
With this stack:
libglesv2!gl::TextureState::isBoundAsSamplerTexture
libglesv2!gl::Texture::onUnbindAsSamplerTexture
libglesv2!gl::State::unsetActiveTexture+0x9
libglesv2!gl::State::updateActiveTextureState+0x2d2
libglesv2!gl::State::updateActiveTexture+0x3aa
libglesv2!gl::State::setSamplerTexture+0x4a1
libglesv2!gl::Context::bindTexture+0x1ab
libglesv2!gl::BindTexture+0x99
chrome!GrGLFunction+0x1f
chrome!GrGLGpu::bindTexture+0x1a0
chrome!GrGLProgram::bindTextures+0x1b9
chrome!GrGLOpsRenderPass::onBindTextures+0x50
chrome!GrOpsRenderPass::bindTextures+0x106
chrome!GrOpFlushState::bindTextures+0xf
chrome!`anonymous namespace'::FillRectOp::onExecute+0xd3
It's unclear how we could end up with a Texture bound that doesn't go
through the normal setter functions. I did see a potential hole where
textures might not get an unbind call when a Context is torn down. This
could lead to bugs in multi-context situations.
This protects the set/unset functions in a helper class to ensure we
always call onBind/onUnbind and forces the destructor to call unbind.
Bug: angleproject:4490
Change-Id: Ied64e02bbe3a37efcab6cbdd4bf2d1b6dcb8b3ac
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2118254
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
07467b4a
|
2020-03-20T10:40:56
|
|
Remove GL_CHROMIUM_path_rendering
Bug: chromium:1063193
Bug: angleproject:4270
Change-Id: I35b24b7d8d892181955e49dd2495655bc57cb0df
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2112275
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
9d812d35
|
2020-03-18T15:31:14
|
|
Vulkan: Remove public FramebufferVk::getFramebuffer.
Goal: enable rendering feedback loop detection for Manhattan.
Making getFramebuffer private prevents direct access to the Framebuffer
internals. Hiding access lets the FramebufferVk class switch up its
implementation to support different VkFramebuffers for feedback loop
cases.
Also this is a general code cleanup.
Bug: angleproject:4490
Change-Id: Ib4f5e34d476ccd8fc43a1adb031933ab347ca7b7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2109333
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
4119f033
|
2020-03-17T13:34:09
|
|
Vulkan:Set one-time bit on all command buffers
All Vulkan command buffers are only submitted once so we can set the
VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT which may help performance.
Bug: angleproject:4304
Change-Id: Ibd116dcac4e78a2c058eb3da54489057d6fa8f44
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2107800
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Commit-Queue: Tobin Ehlis <tobine@google.com>
|
|
1393bf9e
|
2020-02-28T22:03:27
|
|
Vulkan: Timestamp internal RenderPasses in perf tests.
This change book-ends RenderPasses in the Vulkan back-end with
timestamp queries. This allows us to write out a trace of GPU/CPU that
we can inspect in Chrome. To enable the GPU trace you can define
ANGLE_ENABLE_VULKAN_GPU_TRACE_EVENTS in ContextVk.cpp and run the
angle_perftests suite with --enable-trace.
Note that we ran into some issues with the implementation not returning
monotonic timestamps. This may be a driver bug but bears more
investigation.
Bug: angleproject:4433
Change-Id: I0e6a364367f15183068e55686549cb418aa94c2a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2081380
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
33bdab77
|
2020-03-12T11:42:13
|
|
Vulkan: Handle VK image being both a GL texture and GL image
Address a shader that uses the same texture as both a GL texture
(e.g. using a sampler) AND as a GL image (e.g. using imageLoad or
imageStore). The barrier and descriptor set created by
ContextVk::handleDirtyTexturesImpl() are wrong (read-only). This is
fixed by having ContextVk::handleDirtyTexturesImpl() look up if the
image is also being used as an image texture, and if so, use the
layout that should be used in that case.
Bug: angleproject:4413
Change-Id: I75684e1cfc7ed74296802ab6e31468d81625d4a5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2099311
Commit-Queue: Ian Elliott <ianelliott@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
c5b3cbdb
|
2020-03-09T16:58:37
|
|
Vulkan: Use VK_FORMAT_D24_UNORM_S8_UINT for 24 bit depth if available
And if the format we picked has extra bits, try to clear it instead
of load the value. Don't store these extra bits as values as well.
Bug: angleproject:4459
Change-Id: If5d0e31aca1453deab970d0dbcf8886a5e6ed51c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2095850
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Tobin Ehlis <tobine@google.com>
|
|
f8b28678
|
2020-02-26T19:12:39
|
|
Vulkan: Add support for VK_EXT_index_type_uint8
Enable VK_EXT_index_type_uint8 Vulkan extension if supported by
VkDevice.
Bug: angleproject:4405
Change-Id: I84d030497898c5944a36d9a88a31e7377ccd5e9e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2082391
Commit-Queue: Xiaoxuan Liu <xiaoxuan.liu@arm.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
b84969ad
|
2020-02-29T09:14:36
|
|
Vulkan: Use QueryHelper for internal GPU timing.
This cleans up the code. Using QueryHelper means we don't need to
duplicate the timestamp query/result code. It also means we don't need
special allocate/free functions in DynamicQueryPool.
Done while investigating timing GPU events for T-Rex.
Bug: angleproject:4433
Change-Id: I8512a5618e1dd00956942ae2d12d46d8193c4e51
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2081379
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
a1e5f582
|
2020-02-29T08:01:16
|
|
Vulkan: Clean up QueryHelper uses.
Makes the wrapper classes take boxed query handles. Also cleans up some
repeated code patterns. It also encapsulates the QueryHelper class more
so that the pool indexes and handles are hidden from the user of the
class.
Fixed while working on GPU trace event timing.
Bug: angleproject:4433
Change-Id: Ib6cba9c52ec956ebede9b411b70261ea5b877d7d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2081378
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
f0d32401
|
2020-02-14T14:50:25
|
|
Vulkan: Optimize element buffer conversion
Uses CPU copy if the buffer is CPU visible. Also add dirty bit check to avoid repeated conversion on clean data
Bug: angleproject:4400
Change-Id: I1f472703ebc4a65ee0de129c27f56b081748f900
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2057758
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tobin Ehlis <tobine@google.com>
Commit-Queue: Tobin Ehlis <tobine@google.com>
|
|
e488d8b8
|
2020-02-26T16:11:29
|
|
Vulkan: Implement Android pre-rotation
As an Android GLES driver on top of Vulkan, ANGLE must pre-rotate
rendering on behalf of the application. This involves modifying the
vertex shader to multiply gl_Position with a mat2 "rotation matrix".
Not doing so means that SurfaceFlinger (SF) will perform a costly
rotation blit before presenting every image. Setting
WindowSurfaceVk::mPreTransform to mCurrentTransform tells SF to not do
the blit.
When the surface is rotated 90 or 270 degrees, the width and height
must be swapped for:
- The swapchain images, and for any depth, stencil, and/or multisample
attachments used with the swapchain image.
- The viewport, scissor, and render area.
Because the Metal back-end shares the TranslatorVulkan, it will define
the same preRotation (mat2) DriverUniform that is used for Vulkan.
Bug: angleproject:3502
Change-Id: I968dbe8869ba0f50de18dd41f1195e847c06b545
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2038272
Commit-Queue: Ian Elliott <ianelliott@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
aa09ca69
|
2020-02-24T13:33:30
|
|
Vulkan: Update ContextVk command buffer access methods.
Use the following names:
- flushAndBeginRenderPass
- endRenderPassAndGetCommandBuffer
- flushAndGetPrimaryCommandBuffer
This clarifies that a flush is part of the method.
Bug: angleproject:4029
Change-Id: I6c870761339ea7aa39c83142200781ba39ad6a4b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2068129
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
b5576b67
|
2020-02-21T20:44:42
|
|
Vulkan: Fix pipeline stage when waiting on a semaphore
Using VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT in pWaitDstStageMask doesn't
create a dependency, since no memory is accessed during that stage.
Switch to VK_PIPELINE_STAGE_ALL_COMMANDS_BIT to synchronize all accesses.
This fixes flickering observed in WebGL on ARM GPUs when composited using
Vulkan in Chromium.
Bug: angleproject:4422
Change-Id: I37da461c03dbf52f8658408b159c2b173cccd0b3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2068906
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Michael Spang <spang@chromium.org>
|
|
a741abb9
|
2020-02-21T16:37:37
|
|
Vulkan: Rename CommandGraphResource to Resource.
Also renames the h and cpp files to ResourceVk (to keep distinct from
other resource.h/cpp files) and renames 'onResourceAccess' to 'retain'.
Cleans up a few remaining mentions of the command graph in comments.
Bug: angleproject:4029
Change-Id: Ifc8e880c8cea3fc48a4aec4730191c88aa35a076
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2065920
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
c58458e6
|
2020-02-19T14:51:41
|
|
Vulkan: Remove CommandGraph code.
Also updates relevant comments to no longer refer to a graph.
Bug: angleproject:4029
Change-Id: Ic29716e9ae4926870f902947d49d8fee7af98662
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2057804
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
ce4918f1
|
2020-02-19T09:39:44
|
|
Vulkan: Sanitize Images & Buffers with non-zero values.
Only enabled for specific tests at the moment. This CL allows our tests
to sanitizes memory for the robust resource access extension. It is
quite slow so should not be enabled by default.
Only works for 1 level 2D color textures and buffers. Makes several
flaky robust resource initialization tests consistently fail.
Controlled via an angle::Feature in FeaturesVk.
It works by initializing memory to an abitrary non-zero value:
- if newly allocated memory is mappable, we map it in init and set it
- if a buffer or texture can be a transfer destination, we use a
staging resource
- otherwise we don't attempt to initialize the resource.
Bug: angleproject:4384
Change-Id: I9b4f347bfcddf3096f491ed0243bef86837feaa0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2043271
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
3352d492
|
2020-02-19T17:41:24
|
|
Vulkan: Add command stream diagnostics when graph is disabled.
Very simple diagnostics that prints out the command stream. Since there
is very little deferral right now the graph itself became quite a bit
simpler.
Also fills in some missing values in the switch that prints the command
name string.
Bug: angleproject:4029
Change-Id: Ib64a7fed6f9f56ce406cc7dbc6cc993ed510e2cb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2065530
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
cf2ec3b1
|
2020-01-31T16:55:50
|
|
Vulkan:Add FramebufferVk cache
This adds a FramebufferVk cache. Cache signature is based on unique Serial
values that are assigned to ImageHelper objects backing all color and DS
rendertargets as well as level/layer values unique to the imageView.
Update the Serials and cache signature at FramebufferVk::syncState() time.
L0 cache is a currently active framebuffer.
L1 cache retrieves previously created framebuffer from new cache.
If neither of those hit, create new FramebufferVk and add to L1.
Bug: angleproject:4322
Change-Id: I3f585271798ddfb9e5f194020adca8cf8a6b19dd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2033869
Commit-Queue: Tobin Ehlis <tobine@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
0aab41b7
|
2020-02-20T08:39:10
|
|
Vulkan: Make mapped memory available with graph disabled.
This copies functionality out of the command graph path. A preemptive
barrier ensures we don't need to issue an availability barrier when we
need to map buffer memory.
Bug: angleproject:4029
Change-Id: I868ce8bdb3c452dccf35cc9e70adf81ad7905c66
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2065917
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
a61e273a
|
2020-02-19T14:51:40
|
|
Vulkan: Fix store ops with linear command recording.
DiscardFramebuffer was being ignored in the new linear path. Fix this
by using the correct APIs. Also cleans up some of the access to the
"RenderPassCommandBuffer" struct in ContextVk. Add a new accessor that
returns the RenderPass without a flush that ensures it is only called
when a RenderPass is already started.
Bug: angleproject:4029
Change-Id: Ibd199f3a371c0f91b448a0b34c8752dc8b76c284
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2057329
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
4b7bac78
|
2020-02-15T12:17:12
|
|
Vulkan: Throttle when way ahead of device.
This CL adds a fence wait when we get more than 100 serials behind the
device. This fixes an ASSERT when unit tests or offscreen performance
tests get way ahead of the device.
Bug: angleproject:3630
Bug: angleproject:4281
Change-Id: I90f9af1b2ceb2b1cd9f2f638d6d84caaeeb83bb1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2057351
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Ian Elliott <ianelliott@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
efd2a669
|
2020-02-15T08:45:46
|
|
Vulkan: Command graph linearization for SemaphoreVk.
This doesn't seem to be tested in the default CQ configuration.
Bug: angleproject:4029
Change-Id: If0acd5c78602324433b63498e2de8c16881023de
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2057354
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Michael Spang <spang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
2dd40d7f
|
2020-02-15T07:32:26
|
|
Vulkan: Free pool allocation leak with graph disabled.
Our secondary command buffer pools were leaking memory every submit.
This change pops the secondary command buffer pool allocator scope
after commands are flushed during a submit.
Fixes the memory leak observable on any Vulkan application.
Bug: angleproject:4029
Bug: angleproject:4403
Change-Id: I3d0f8d53456336ef0b03c6d37425fb76c88d1551
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2057349
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
798a8375
|
2020-02-14T12:48:21
|
|
Vulkan: Add more debug labels handling with graph off.
Bug: angleproject:4029
Change-Id: Ia3c88af5f9fa1a7940d7f809ded599c064126be7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2055555
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
12a36dd9
|
2020-02-14T12:48:20
|
|
Vulkan: Add debug utils functions to wrapper.
Also adds a more consistent way of checking if the debug utils
extension is enabled.
Enables adding support for the debug utils markers with the command
graph disabled.
Bug: angleproject:4029
Change-Id: I5f8762921b06f54e400c25764012ab70e10bfb8d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2055554
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
9f4ab98d
|
2020-02-13T12:49:05
|
|
Return angle::Result from more label functions.
This is necessary for the new Vulkan implementation.
Bug: angleproject:4029
Change-Id: I07ef54145252ff102c74179361436587bb330fc7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2055553
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
ef599fb0
|
2020-02-11T18:19:16
|
|
Vulkan: Fold glClear into draw call when command graph is disabled
This sets ContextVk::mRenderPassCommandBuffer properly when glClear get
called so that it wonr end up start anotyer render pass during setupDraw
call.
Bug: angleproject:4395
Change-Id: Id2110719ad4d70b4c410062466d32381fb5e1f88
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2050966
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
3b82506a
|
2020-02-11T09:35:38
|
|
Vulkan: Command graph linearization (Step 5).
Implements ES 3.1 support.
Bug: angleproject:4029
Change-Id: I3c08602cf4ec64621bfdb40cd40d142b666e6edf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2046052
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
b40d48a6
|
2020-02-09T10:38:40
|
|
Vulkan: Remove ensure init from updateActiveImages.
The ensure should already be triggered from the front-end.
Bug: angleproject:3539
Bug: angleproject:3887
Change-Id: Ic7ee10f9c767440e55befb929b414c0c894754c9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2046051
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
3c066404
|
2020-02-05T12:43:12
|
|
Vulkan: Command graph linearization (Step 4).
Implements GLES 3.0 functionality for the new command recording style.
Tested with angle_end2end_tests. dEQP/CTS testing will come later.
Bug: angleproject:4029
Change-Id: Ibdc4f1355a7b880946699ec227fd9807f4a27af9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2040197
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
8257ac30
|
2020-02-07T14:17:08
|
|
Vulkan: Defer RenderPass image barriers.
We accumulate image barriers in two places:
* for GL sampler textures
* for GL framebuffer attachments (Render Targets)
Then we issue the barriers together in a single call before the RP.
This fixes a bug where we were missing a layout transition in some
cases when transitioning between a sampler and a render target. It
should also be faster to issue a single barrier before a RP than issue
several smaller barriers.
Bug: angleproject:3539
Bug: angleproject:4029
Change-Id: I180b770f0df6b44d209e5c618ba36bcc1c6372e4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2044236
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
9681190d
|
2020-02-05T12:51:25
|
|
Make Debug marker functions return angle::Result.
Allows error handling in these functions. Necessary for the Vulkan
back-end.
Bug: angleproject:4209
Change-Id: I2092e58e719c6ee562807e1c7e8ad26988342855
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2040196
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
ca035803
|
2020-02-06T17:24:48
|
|
Vulkan: Add missing wrapper functions for XFB.
Found when working on the command graph refactor. Also replace the
offsets array with nullptr which should have the same effect.
Bug: angleproject:4029
Change-Id: I72e31c5403c645d72619e14aafef612e454183f1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2043270
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
f1b2c4be
|
2020-02-05T10:22:19
|
|
Vulkan: Fix overlay with command graph disabled.
Also fixes the missing RenderPass count in the new command recorder.
Bug: angleproject:4029
Change-Id: If7f0cf9e80ef815781ad2684ad1d93a3ed4912ad
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2037786
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tobin Ehlis <tobine@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
20b1259a
|
2020-02-05T17:08:05
|
|
Vulkan: Command graph linearization (Step 2).
ES 2.0 is feature complete.
Passes all of the angle_end2end_tests with the new linear command
recording method. Also runs the T-Rex benchmark without any obvious
glitches. Likely has issues with creating too many RenderPasses. ES3
is mostly untouched.
Bug: angleproject:4029
Change-Id: Ic5acf3d768495fbffd07b07bf0a6f2b5787c51f8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2012900
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
3e691bb9
|
2020-02-03T14:25:03
|
|
Vulkan: Count active renderpasses in overlay.
Useful debugging information for benchmarks. Also helpful when working
with the command graph to ensure we don't regress performance.
Bug: angleproject:4029
Bug: angleproject:4320
Change-Id: Ibe224c40a3acaca9231bf3869486a0f8bba07ba0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2036402
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Tobin Ehlis <tobine@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
1736c47b
|
2020-01-31T11:16:41
|
|
Vulkan: Remove transient cmd buffer workaround
We no longer need this workaround. Also mCommandPoolFreeList dead code.
Bug: angleproject:3508
Change-Id: Ib73ddd431eb1bf9a55c3421111af4df5976cc1fb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2033485
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tobin Ehlis <tobine@google.com>
Commit-Queue: Tobin Ehlis <tobine@google.com>
|
|
c73475fb
|
2020-01-29T11:37:05
|
|
Vulkan: Fix UtilsVk dirtying driver uniforms descriptor set binding
Most UtilsVk functions bind a descriptor set to index 0 (same as driver
uniforms). If that happens to close a render pass, all is well as
starting a new render pass ensures all descriptor sets are rebound.
However, if the render pass is not closed, or if a dispatch call is
issued (which never rebinds descriptor sets if not explicitly
necessary), then the driver uniforms descriptor set may end up never
rebound, causing a validation error (and possible crash or corruption).
This change makes sure that UtilsVk notifies the context when it binds a
descriptor set. The context then dirties the driver uniforms binding
as appropriate.
Bug: angleproject:4272
Change-Id: Ief20c7884fbe39712f844247489812afc70b30a9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2027938
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
d9884d3e
|
2020-01-29T15:26:39
|
|
Vulkan: Don't dirty index/vertex buffers on each syncState.
This will help for the command graph refactor so we can set up the
command buffer barriers before we start the render pass for draw.
Bug: angleproject:3539
Bug: angleproject:4029
Change-Id: If5a55db6ac1e06609a3a1e2245d7ab351152886a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2028450
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|