|
b5ba549a
|
2019-01-02T15:19:22
|
|
Vulkan: Shader path for texture copy when image is not initialized
This change implements staging image/texture copies when the destination
image is not yet fully initialized. With this change, CPU readback for
glCopyTex[Sub]Image2D and glCopy[Sub]TextureCHROMIUM should happen only
if the texture formats don't allow a fragment-shader based copy.
Bug: angleproject:2958
Change-Id: I04087e14ea8fb6fbc731598c5493e44651c22c01
Reviewed-on: https://chromium-review.googlesource.com/c/1393909
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
4f3b207d
|
2019-01-01T14:48:25
|
|
Vulkan: Shader path for texture-to-texture copy
This change implements glCopy[Sub]TextureCHROMIUM in GPU. As with the
previous change implementing glCopyTex[Sub]Image2D, it currently only
selects the shader path if the texture is already defined.
Bug: angleproject:2958
Change-Id: Ia1b5625f92e6c9f91807c9b601e5c34d2d5e5c30
Reviewed-on: https://chromium-review.googlesource.com/c/1392394
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
dbc605ce
|
2019-01-04T16:39:14
|
|
Vulkan: Optimize VBO state changes.
Also has some minor optimizations for the front-end.
12% improvement on the Vulkan VBO change test.
Bug: angleproject:3014
Change-Id: I38e1a8194edfc14bfe57424be348cb9688e928f4
Reviewed-on: https://chromium-review.googlesource.com/c/1369286
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
f83a28a6
|
2018-12-09T03:48:34
|
|
Vulkan: Shader path for framebuffer-to-texture copy
Part 1 in a series of changes to perform image copies on the GPU.
Bug: angleproject:2958
Change-Id: I6264a880865c4738c0866f2dc71af63425fc4118
Reviewed-on: https://chromium-review.googlesource.com/c/1370724
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
d7969cdd
|
2019-01-02T11:53:18
|
|
Vulkan: optimize image layout transitions
Removes dstAccessMask being redundantly set where
`GetBasicLayoutAccessFlags()` sets the same bits. Additionally, removes
setting HOST_WRITE_BIT and TRANSFER_WRITE_BIT as src access mask if new
layout is SHADER_READ_ONLY_OPTIMAL. The correct src access mask will be
set based on the previous layout.
Additionally, specializes `GetBasicLayoutAccessFlags()` in
`GetSrcLayoutAccessFlags()` and `GetDstLayoutAccessFlags()` where the
access mask is set correctly (and optimally) based on whether the layout
is the old or the new one. This removes a few unnecessary access masks
from src (for WAR hazards), and adds a few missing access masks to dst
(for RAW hazards), such as VK_ACCESS_COLOR_ATTACHMENT_READ_BIT necessary
for blending.
Bug: angleproject:2958
Change-Id: I5870bc99c755f0444332418f998032850825aca5
Reviewed-on: https://chromium-review.googlesource.com/c/1392397
Reviewed-by: Tobin Ehlis <tobine@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
7c985f5c
|
2018-11-29T18:16:17
|
|
Make angle::Result an enum.
This moves away from a class type to a value type. This should improve
performance when using angle::Result as a return value. Previously the
generated code would return a pointer instead of a value.
Improves performance in the most targeted microbenchmark by 10%. In
more realistic scanarios it will have a smaller improvement. Also
simplifies the class implementation and usage.
Includes some unrelated code generation changes.
Bug: angleproject:2491
Change-Id: Ifcf86870bf1c00a2f73c39ea6e4f05ca705050aa
Reviewed-on: https://chromium-review.googlesource.com/c/1356139
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
8f1b7a66
|
2018-11-14T16:02:54
|
|
Vulkan: Add DispatchUtilsVK
This class provides a set of compute-based internal utilities.
Currently, buffer clear and copy are implemented. Other possibilities
include more efficient mip map generation, or specialized texture
operations.
VertexArrayVk::updateIndexTranslation() is updated to convert the
GL_UNSIGNED_BYTE index buffer to a GL_UNSIGNED_SHORT one using this
class to avoid a CPU readback.
The vk::Format class is augmented with a few flags (IsInt, IsUnsigned)
to be able to select the appropriate shader based on the format (float,
int or uint).
Bug: angleproject:2958,angleproject:3003
Change-Id: Ie35519deb3c32a3da5ccf74080c70092c9287f0a
Reviewed-on: https://chromium-review.googlesource.com/c/1336307
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
4abdf74f
|
2018-11-28T14:41:10
|
|
Vulkan: Add dynamic index buffers to graph
With DynamicBuffer outputting BufferHelper objects, these objects can
participate in the command graph, i.e. record commands. This means they
need appropriate dependencies in the graph as well as pipeline barriers.
There are a few users of DynamicBuffer for which this change should be
applied to. This change covers index buffers.
This commit includes a fix to BufferHelper::copyFromBuffer for WaW
hazards.
It also includes a fix for a missing pipeline barrier after
BufferVk::copyToBuffer.
Bug: angleproject:2958
Change-Id: I3e61af56936580b2da20c28c45defece552d9a39
Reviewed-on: https://chromium-review.googlesource.com/c/1352732
Reviewed-by: Tobin Ehlis <tobine@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
8dc27f99
|
2018-11-29T11:45:44
|
|
Use packed enum for DrawElementsType.
The packing and unpacking take a few extra instructions. But it
completely obviates the need for any switches in the validation code.
Speed is slightly faster or the similar depending on the back-end.
Also add gl_angle_ext.xml to GL entry point generator inputs. This was
missing and would cause the code generation to miss certain changes.
Bug: angleproject:2985
Change-Id: I1ea41a71db71135000166ead8305ec42d22ff7b3
Reviewed-on: https://chromium-review.googlesource.com/c/1351729
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
471358f3
|
2018-11-28T15:21:55
|
|
Vulkan: fix pipeline stages of memory barriers
VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT was used for barriers, but TOP and
BOTTOM bits can only be used for execution barriers. These stages don't
access memory, so they don't participate in memory barriers at all. A
validation error is generated as our current barriers violate this:
https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VUID-vkCmdPipelineBarrier-pMemoryBarriers-01184
A note from the spec (see second paragraph in particular):
> An execution dependency with only VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT
> in the destination stage mask will only prevent that stage from
> executing in subsequently submitted commands. As this stage does not
> perform any actual execution, this is not observable - in effect, it
> does not delay processing of subsequent commands. Similarly an execution
> dependency with only VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT in the source
> stage mask will effectively not wait for any prior commands to complete.
> When defining a memory dependency, using only
> VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT or
> VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT would never make any accesses
> available and/or visible because these stages do not access memory.
> VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT and
> VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT are useful for accomplishing layout
> transitions and queue ownership operations when the required execution
> dependency is satisfied by other means - for example, semaphore
> operations between queues.
Bug: angleproject:2958
Change-Id: Ic616dcad7583db6b386d7d01a774b3ebd71a7081
Reviewed-on: https://chromium-review.googlesource.com/c/1352733
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
5f01324f
|
2018-11-26T12:41:12
|
|
Vulkan: Allow descriptor pool to allocate different types
The internal shaders know exactly what mix of resources they use, so
with this change they can make one allocation of multiple types.
Bug: angleproject:2958
Change-Id: Ia6f03672b95af4be9618a2f5eeb41ef1c027e810
Reviewed-on: https://chromium-review.googlesource.com/c/1351116
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
254b32cb
|
2018-11-26T11:58:03
|
|
Vulkan: Make DynamicBuffer use BufferHelper
This is so that the resulting buffers can be written to by the GPU.
Additionally, the class is given the ability to create host-visible or
device-local buffers, making map()-on-init() optional.
This is in preparation for vertex/index transformations in compute.
Bug: angleproject:2958
Change-Id: Ib8f5829e33a1e49fa8f80c70dbde74f313ae49ec
Reviewed-on: https://chromium-review.googlesource.com/c/1351113
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
b980c563
|
2018-11-27T11:34:27
|
|
Reformat all cpp and h files.
This applies git cl format --full to all ANGLE sources.
Bug: angleproject:2986
Change-Id: Ib504e618c1589332a37e97696cdc3515d739308f
Reviewed-on: https://chromium-review.googlesource.com/c/1351367
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
5552cdf0
|
2018-11-26T12:19:26
|
|
Vulkan: Create buffer view for BufferHelper
Bug: angleproject:2958
Change-Id: Ifa40537bc6003486b37d5d2ac9a2b7f1f5c3d1c2
Reviewed-on: https://chromium-review.googlesource.com/c/1351115
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
823d8973
|
2018-11-13T10:52:40
|
|
Vulkan: Internal Compute support
While this is not exposed to the front end yet, this commit adds support
for creating Compute pipelines for internal usage.
Bug: angleproject:2959
Change-Id: I976eae1ce0f736c257b7b4ae0d1c3b2d9f4da5bb
Reviewed-on: https://chromium-review.googlesource.com/c/1333972
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
dc65c5bd
|
2018-11-21T11:07:26
|
|
Vulkan: Cache pipelines with Shader Programs.
This allows for a few nice things. First and foremost it reduces the
size of the PipelineDesc, which is now 232 bytes. It also allows us
to completely forego pipeline caches for compute shaders.
We also allow sharing vertex and fragment shaders among multiple
programs for internal shaders. This is good for memory savings. To
allow this we keep the shaders as ref counted objects.
Bug: angleproject:2522
Change-Id: I2322be5061979d9669a0b25c152359561eeb80ee
Reviewed-on: https://chromium-review.googlesource.com/c/1344449
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
fca8fd62
|
2018-11-13T13:55:48
|
|
Vulkan: Refix cleanup race condition on Context destroy
This partially reverts commit 905ee08219faed8ea50e194be0d76ad69faf1026
due to regression caused on startup time.
Instead of calling finish before destroying the context, the objects in
the Vulkan backend are `release()`ed instead of `destroy()`ed, so they
will be kept alive for the duration of current work.
Bug: 904846
Change-Id: Ia774470666c4c0d4c1ddc348f685d621243de204
Reviewed-on: https://chromium-review.googlesource.com/c/1333969
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
27780295
|
2018-11-09T11:19:49
|
|
Vulkan: refactor WrappedObject descendants
Methods receive VkDevice instead of Context
and return VkResult instead of angle::Result now.
Bug: angleproject:2657
Change-Id: I3eca8692ad0b3b6e96e31fd433ed14e04384990e
Reviewed-on: https://chromium-review.googlesource.com/c/1330105
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
03d1a5ed
|
2018-11-12T11:34:24
|
|
Vulkan: Use global buffer barriers.
This switches from using resource barriers for buffers to using global
barriers. This matches the general advised best practice. It also
allows us to combine multiple barriers into one. On a draw we might
combine all the vertex and index barriers into a single barrier call.
We implement this using a bit of extra state tracking in BufferHelper.
Bug: angleproject:2828
Change-Id: I196b368804ff50e60d085687a643e5566ba1c5b6
Reviewed-on: https://chromium-review.googlesource.com/c/1309977
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
d856ca48
|
2018-10-31T16:55:12
|
|
Vulkan: add clear test for emulated stencil or depth formats
S8_UINT and D24_UNORM_X8_UINT are the only formats currently that are
single-aspect and are possibly emulated with a packed depth-stencil
format if it's not supported. A flag to FeaturesVk has been added as a
way to force this behavior for the sake of testing.
This test is added to ensure the correct clear algorithm is used for
this case. Additionally, this case is detected and the other aspect is
forcefully cleared to 0 whenever the original aspect is cleared.
Bug: angleproject:2815
Change-Id: Ief3039d66bbf46468213b9e3224f7cc7541c3a2e
Reviewed-on: https://chromium-review.googlesource.com/c/1312453
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
caeb1e89
|
2018-11-01T18:13:22
|
|
Vulkan: Allow unlimited simultaneous descriptor sets.
This changes the fixed array into a STL vector. Instead of storing
Descriptor Pools by value we now store them by pointer. This allows the
vector to resize without changing the address of the Descriptor Pool.
Also enables some more Vulkan perf tests that were crashing before.
Bug: angleproject:2938
Change-Id: I8a88d5315b941c4f54205a9957e2834fe02ada84
Reviewed-on: https://chromium-review.googlesource.com/c/1311395
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tobin Ehlis <tobine@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
193a284d
|
2018-10-30T17:28:41
|
|
Vulkan: Split vk::CommandGraphResource.
This adds two subclasses: RecordableGraphResource and
QueryGraphResource. Each specializes for Buffer/Image/Frambuffer use
cases and Query use cases respectively. No virtual functions are added
to keep best performance.
We also change the CommandGraph API slightly to optimize away the check
for a barrier resource. This requires exposing the set current barrier
API on the CommandGraph.
Bug: angleproject:2828
Change-Id: I1c23f52bfe04cc682a00b245d63c3ac9a651615d
Reviewed-on: https://chromium-review.googlesource.com/c/1305994
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
0ea96210
|
2018-10-30T15:14:51
|
|
Vulkan: Enable more perf tests.
Also fixes the check for the correct UINT index extension that wasn't
available on Vulkan. Also includes a workaround for the mock ICD not
implementing buffer state for index ranges.
Bug: angleproject:2923
Change-Id: Iab35809d15f890525a9e658d4148272c46cf1320
Reviewed-on: https://chromium-review.googlesource.com/c/1308733
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
77abad8d
|
2018-10-25T17:03:48
|
|
Remove Context::gatherParams.
This won't be used in the future. It saves a few instructions on each
entry point.
Also refactors a bit of touched code. Also adds in a missed entry
point: "glTexStorage2DMultisampleANGLE".
Removes related code and moves remaining helper code in params.h into a
new file entry_point_utils.h.
In total this patch series reduces overhead by up to 5%.
Bug: angleproject:2933
Change-Id: Ifb49564597cde6ba82dfc3e185227619fdc62612
Reviewed-on: https://chromium-review.googlesource.com/c/1299478
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
25224e78
|
2018-10-22T11:56:02
|
|
Vulkan: add GPU trace events
RendererVk now tries, as best as it can, to match the CPU and GPU timers
on init as well as every finish(). A clock-sync event is generated for
each such synchronization point.
RendererVk::traceGpuEvent() is a new function that, given a command
buffer, performs timestamp queries corresponding to GPU events. These
queries are read back when done, without incurring GPU bubbles, at which
point an event is generated with that timestamp.
Bug: angleproject:2908
Change-Id: I08d7d11ff9f8ad6c9f9a9899767c9cd746d0623e
Reviewed-on: https://chromium-review.googlesource.com/c/1296954
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
bfe31c42
|
2018-10-25T17:03:47
|
|
Remove uses of DrawCallParams.
Packing and referencing this structure was causing unnecessary draw
call overhead. This improves performance on all the back-ends. Impacts
the GL back-end the most.
In total this patch series reduces overhead by up to 5%.
Bug: angleproject:2933
Change-Id: Ief416ab874e481baf960d02965978a311214a146
Reviewed-on: https://chromium-review.googlesource.com/c/1299477
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
3a482179
|
2018-10-11T10:34:44
|
|
Vulkan: Implement glFlush
A semaphore pool is implemented to allow dynamic allocation of
semaphores as needed when breaking up a frame with flushes. The pool is
used both for acquiring the next image and for chaining mid-frame
submissions.
RendererVk::flush() is changed so that instead of taking the wait/signal
semaphores as parameters, it would use the last known signaled semaphore
as wait semaphore and allocates a semaphore for signaling. It would
additionally wait for any extra semaphore provided externally (i.e. the
surface's image acquire semaphore).
Bug: angleproject:2504
Change-Id: Iecd2d5535230c48b26a6b7d078710af8730121da
Reviewed-on: https://chromium-review.googlesource.com/c/1276805
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
78bcd2be
|
2018-10-16T15:05:20
|
|
Vulkan: Fix deleting in-use descriptor sets.
Sequences of many frames with uniform updates could lead to a bug where
we attempt to delete descriptor sets that are still in use. To trigger
the bug we need to write enough uniform data to trigger a descriptor
set to be freed. This would correctly trigger refresh sets in the
Program. But if there was a second program idle in the background that
also allocated descriptors from the old pool, the bug would manifest.
Fix this by storing a shared handle to the descriptor pool in the
Program. The dynamic descriptor pool won't recycle descriptor pools
internally unless there are zero outstanding references to the pool.
We could also improve this in a resource sharing situation by keeping
a single shared dynamic descriptor pool per share group.
Includes a contribution from tobine@google.com that adds a test to
cover the bug.
Bug: angleproject:2863
Change-Id: Id585b85f33f8cfa3772ceff3af512d1e4fb0b75a
Reviewed-on: https://chromium-review.googlesource.com/c/1271919
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
563fbaa0
|
2018-10-02T11:22:01
|
|
Vulkan: Implement occlusion queries
Begin and end queries insert an execution barrier in the command graph
to ensure the commands around them are not reordered w.r.t to the query.
Also, these commands cannot be recorded in separate secondary command
buffers. Therefore, special-function nodes are created to perform the
begin and end query calls on the final primary command buffer.
Bug: angleproject:2855
Change-Id: Ie216dfdd6a2009deaaf744fd15d2db6899dd93e9
Reviewed-on: https://chromium-review.googlesource.com/c/1259762
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
06270c9e
|
2018-10-03T17:00:25
|
|
Vulkan: Safer struct initialization
Using x = {}; before filling out each field, we can be sure any missing
field is 0 initialized. This in turn helps us not have to specify
certain fields that are generally unused (at the moment), such
as pNext.
Bug: angleproject:2860
Change-Id: Ia1fa2db3ecfb316673a02ac0c5e13e47e055a19f
Reviewed-on: https://chromium-review.googlesource.com/c/1259764
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
4d422c29
|
2018-10-02T09:31:40
|
|
Vulkan: Move blit mipmap init to ImageHelper.
This hides the logic for manipulating the current layout and barriers
into the image helper. This will make it easier to implement implicit
pipeline barriers. It allows us to remove the updateLayout() hack.
Bug: angleproject:2828
Change-Id: I3e59872e66064e6b105c1f398b4212fb3a6be1a7
Reviewed-on: https://chromium-review.googlesource.com/1255506
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
c2116cd3
|
2018-10-02T09:31:40
|
|
Vulkan: Update pipeline barrier interface.
This makes the vk::CommandBuffer class closer to an auto-generated
wrapper class.
Bug: angleproject:2828
Change-Id: I91ba03914a60d5612707dd240fcda25b86cf2c46
Reviewed-on: https://chromium-review.googlesource.com/1255505
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
0da73fed
|
2018-10-02T09:31:39
|
|
Vulkan: Add dumping of the command graph to GraphViz.
Dot files are a graph format that can be visualized with GraphViz.
Giving a small visualization output can help diagnose problems with
the graph. For example extra edges or incorrect dependencies.
Bug: angleproject:2379
Change-Id: I544cba11c5e33579b06fef2fb41bad60066a64e4
Reviewed-on: https://chromium-review.googlesource.com/1254383
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tobin Ehlis <tobine@google.com>
|
|
e8dd0796
|
2018-09-27T15:04:27
|
|
Vulkan: Make vk::FramebufferHelper the graph resource.
It seems conceptually easier to understand that a vk::Framebuffer is
the resource used in graph. Rather than making the GraphResource be
integrated into the FramebufferVk class itself. This means that the
only objects that are graph resources are Vulkan objects: Images,
Buffers, and Framebuffers.
Refactoring change only.
Bug: angleproject:2828
Change-Id: I59d60643182287d4b1fcf9730a3c3a0da5b65973
Reviewed-on: https://chromium-review.googlesource.com/1249561
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
|
|
2d03ff4a
|
2018-09-27T15:04:26
|
|
Vulkan: Make Buffer/Image be CommandGraphResources.
Don't make TextureVk/RenderbufferVk/SurfaceVk/BufferVk own the
manipulation of the command graph. Instead put the operations close to
the buffers and images used to render.
This will lead towards implementing implicit barriers on the command
graph resources.
Bug: angleproject:2828
Change-Id: I07b742b6792c60285b280d6454f90e963d667e0e
Reviewed-on: https://chromium-review.googlesource.com/1246983
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
50e6eaae
|
2018-09-27T08:24:32
|
|
Vulkan: Move LineLoopHelper graph work into BufferVk.
Bug: angleproject:2828
Change-Id: Ie6bcdd10e2de415615db2bfb0b6fa17c392455b0
Reviewed-on: https://chromium-review.googlesource.com/1235655
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
beb669da
|
2018-09-21T16:25:52
|
|
Vulkan: work around vkCmdCopyBuffer bug.
It seems that vkCmdCopyBuffer on Windows with Intel GPU neglects
the last region when given more than one. Work around that in
LineLoopHelper::getIndexBufferForElementArrayBuffer() by adding an
unused region. Enable corresponding test.
BUG=angleproject:2838
Change-Id: I8847c7b2cfdb94526d4d28ba5bf1f162da3a1ed4
Reviewed-on: https://chromium-review.googlesource.com/1238887
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
|
|
85c4b43e
|
2018-09-19T23:35:00
|
|
Vulkan: Translate line loop indices from buffer.
When a line loop is drawn with byte indices from a buffer, translate
to short. Enable test.
BUG=angleproject:2802
Change-Id: Ie178ec866387be85b91291c28e1978db0a09c20a
Reviewed-on: https://chromium-review.googlesource.com/1237293
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
|
|
f5aad063
|
2018-09-19T14:39:00
|
|
Avoid flush/invalidate of host-coherent memory
For DynamicBuffer avoid calling vkFlushMappedMemoryRanges() or
vkInvalidateMappedMemoryRanges() if the underlying memory is host-
coherent. These calls are not required for host-coherent memory and
may negatively impact performance.
When currently allocating HOST_VISIBLE memory it's possible to also get
HOST_COHERENT memory even though it's not explicitly requested. Because
of this, the change updates the memory allocaiton interfaces through
the stack to pass back the actual allocated memory properties so that
it can be checked to see if it's host-coherent.
Bug: angleproject:2804
Change-Id: Ife95c4b98115b16d16c087dd72dba7d9661fdb46
Reviewed-on: https://chromium-review.googlesource.com/1234276
Commit-Queue: Tobin Ehlis <tobine@google.com>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
e2d2270a
|
2018-09-19T08:11:48
|
|
Vulkan: Merge append/beginWriteResource.
The new API is named 'recordCommands'.
These two APIs were basically doing the same thing. We don't need to
have an understanding of creating a new graph node to know that we
want to record some Vulkan commands to a command buffer. The prior
design was actually masking a bug where we would allow appending
commands to a command graph node that had already started a render
pass. Fix this by adding a render pass check to recordCommands.
Also removes 'hasStartedWriteResource' since this method wasn't used
anywhere.
Also renames 'onResourceChanged' to 'finishCurrentCommands'.
Bug: angleproject:2828
Change-Id: I00bd5b893fcfc37172b6c1706cb2f5fc57e79f54
Reviewed-on: https://chromium-review.googlesource.com/1235654
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
3f3b358f
|
2018-09-14T10:38:44
|
|
Vulkan: Fix cube map attachment clears and readpixels.
These were both missing the correct layer offset. Cache the layer
inside the RenderTargetVk for easy access.
Bug: angleproject:2470
Change-Id: I690dbf0702d7ec52f44ba0a9429b6ef0e51baf6b
Reviewed-on: https://chromium-review.googlesource.com/1225910
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
71bb0267
|
2018-09-12T11:09:42
|
|
Vulkan: Implement cube map render targets.
Each TextureVk now stores vectors of RenderTargetVks and ImageViews
associated with the image faces. They are initialized lazily when the
RenderTarget is queried in getAttachmentRenderTarget.
There's still one missing edge case for handling clear with the
Framebuffer when using cube maps. Also one additional test failure on
Android.
Bug: angleproject:2470
Change-Id: Ib959a3434a992cef010a11940cf2ee49e118ac17
Reviewed-on: https://chromium-review.googlesource.com/1220727
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
4c310831
|
2018-08-29T13:43:17
|
|
Vulkan: Return VkDeviceSize from DynamicBuffer.
This obviates many static_casts. More closely represents what Vulkan
is doing. One cast remains where we are using uint32_t for dynamic
offsets with uniform buffers.
Bug: angleproject:2786
Change-Id: I043ebb5d965f46ee6ebbfcb91d75a58508cacfe3
Reviewed-on: https://chromium-review.googlesource.com/1188949
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
67c388e6
|
2018-07-19T19:16:11
|
|
Vulkan: support GL_FIXED vertex data.
Override fixed to float, generate code, enable tests.
BUG=angleproject:2405
Change-Id: Ic3e9a31eaf22372023b94081b0f4a83770dcabbe
Reviewed-on: https://chromium-review.googlesource.com/1144455
Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
18f7e503
|
2018-07-19T16:06:43
|
|
Vulkan: make DynamicBuffer reusable, always valid.
After a release() or destroy() it is now possible continue using a
DynamicBuffer because we reset the internal variables and the next
allocate() restarts everything. Also removed the valid() method as it
wasn't very useful and made reuse more complicated. No functional change.
BUG=angleproject:2405
Change-Id: I5ca9b758fb300618f6578ebc406494ad281c1622
Reviewed-on: https://chromium-review.googlesource.com/1144229
Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
21061026
|
2018-07-12T23:56:30
|
|
Vulkan: Use angle::Result error handling.
Introduces a vk::Context class to contain an error handler and Renderer
pointer. This abtracts the common code path for ContextVk + DisplayVk.
Removes vk::Error in favor of the POD angle::Result class. There are a
few remaining usages of gl::Error that will have to be cleaned up when
we can change the front-end APIs.
Bug: angleproject:2713
Change-Id: I5e68f223d595c6c561b59d6a85759e5738ed43c6
Reviewed-on: https://chromium-review.googlesource.com/1128924
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
|
|
eebe2190
|
2018-07-11T09:01:18
|
|
Vulkan: Clean up Error usage.
* Adds a nodiscard to the Error class.
* Fixes the places where Error was discard.
* Uses more vk::Error instead of gl::Error.
This enables the Vulkan back-end Error refactoring.
Bug: angleproject:2713
Change-Id: I09606d965e8b7cfd341ad7fb95cf029b9d694ef4
Reviewed-on: https://chromium-review.googlesource.com/1128922
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
|
|
e4a6d7a3
|
2018-07-09T13:32:37
|
|
Vulkan: Make DynamicDescriptorPool single pool.
This completes a prior refactor. DynamicDescriptorPool couldn't
robustly handle multiple pools so only accept one as a parameter. We
were already only using one at a time in practice.
This removes the need to look up the pool index from the descriptor
type which became problematic later on.
Bug: angleproject:2717
Change-Id: I7fb92d5ab55bbe1f35b6b9cfcd8981cc1ca358f1
Reviewed-on: https://chromium-review.googlesource.com/1127157
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Luc Ferron <lucferron@chromium.org>
|
|
a72ebeba
|
2018-06-28T11:16:58
|
|
Vulkan: Fix issue in DynamicBuffer
- We weren't keeping track of mSize correctly, causing some very
specific index buffer bindings to fail. The size returned when allocating
the buffer can be a bit different than the size requested, and that extra
space between mSize and the allocated size was not meant to be used,
causing errors in the validation layers.
Bug: angleproject:2580
Change-Id: I47eb7b8de6f4f657de14385b77ba6a459add599b
Reviewed-on: https://chromium-review.googlesource.com/1118607
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Luc Ferron <lucferron@chromium.org>
|
|
be30c4fb
|
2018-06-21T09:43:08
|
|
Vulkan: Framebuffer blit support for depth/stencil cases
Bug: angleproject:2643
Change-Id: Ib50e4051f5b3965c2a752cf2cd45d3470312cdcf
Reviewed-on: https://chromium-review.googlesource.com/1115370
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
8a4c49fb
|
2018-06-21T15:43:06
|
|
Vulkan: Refactor DynamicDescriptorPool.
Changes the set counting to use a free count by descriptor type. Also
changes the init to take a pool size count that more closely mirrors
Vulkan.
Will lead to a fix for descriptor set recreation.
Bug: angleproject:2678
Change-Id: I26816befec28ebb866fb0f3aaba27d2bc1d3be43
Reviewed-on: https://chromium-review.googlesource.com/1110661
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Luc Ferron <lucferron@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
50cf2be0
|
2018-06-15T09:46:57
|
|
Reformat some style in touched files.
This was triggered by running the code generation script.
Bug: angleproject:2665
Change-Id: Id639c78eb618182ee1859678590cf0f559b572c2
Reviewed-on: https://chromium-review.googlesource.com/1101564
Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Luc Ferron <lucferron@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
f6e160fa
|
2018-06-12T10:13:57
|
|
Vulkan: Don't use swizzle state when its not needed
Enables a bunch of dEQP tests in the functional.fbo.render.* namespace.
Bug: angleproject:2597
Change-Id: I1a06b335d5daf2987df52c460903081860887ce9
Reviewed-on: https://chromium-review.googlesource.com/1097596
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
4cc753e0
|
2018-06-13T13:25:33
|
|
Vulkan: Implement sampler arrays.
Bug: angleproject:2462
Change-Id: If9c9cb69624d6f9f0895f6883e1eed19a27e6cb4
Reviewed-on: https://chromium-review.googlesource.com/1089809
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
|
|
c7918ceb
|
2018-06-13T13:25:31
|
|
Vulkan: Add PipelineLayout and DescriptorSetLayout caches.
This will be necessary to support more than one PipelineLayout per
instance of ANGLE. Sampler array handling requires different layouts
for different sampler uses.
Bug: angleproject:2462
Change-Id: I1d8b4919eed1a589002ad1898b05186f420061c7
Reviewed-on: https://chromium-review.googlesource.com/1089806
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Luc Ferron <lucferron@chromium.org>
|
|
3e313805
|
2018-06-11T14:44:33
|
|
Vulkan: Line loop edge case with ubyte indices
Bug: angleproject:2637
Change-Id: I2cec129ed1aa0e55e0dbf1d353caa65a51c528a3
Reviewed-on: https://chromium-review.googlesource.com/1096017
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
33f11fbc
|
2018-05-07T13:42:47
|
|
Initialize gl::Context state on the first call to MakeCurrent.
The constructor of gl::Context creates a bunch of zero and helper objects
but it is not current at this time. If the backend if not using virtualized
contexts this causes the created objects to be created on the wrong native
context.
BUG=angleproject:2464
Change-Id: I9718df87d0afeb08729920363d362d5f891061ed
Reviewed-on: https://chromium-review.googlesource.com/1048114
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Luc Ferron <lucferron@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
c20b950e
|
2018-05-24T09:30:17
|
|
Vulkan: Fix clear of specific mip level was clearing all mip levels
Bug: angleproject:2502
Change-Id: Iffa012dce14584318c4dfd3d9b3a304291c9cebf
Reviewed-on: https://chromium-review.googlesource.com/1070666
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
574a6f25
|
2018-05-28T10:21:18
|
|
Vulkan: Fix edge case in DynamicBuffer causing wrong allocations
- on a very specific scenario when the next buffer to allocate was
fitting exactly in the allocated size. The condition was wrong and
needed to be >= instead of >.
Bug: angleproject:2562
Change-Id: Ide36bc3baadafdc1ffa40416b46998dc455caecf
Reviewed-on: https://chromium-review.googlesource.com/1075293
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
22695bf5
|
2018-05-22T15:52:08
|
|
Vulkan: Support cube mimaps generation
Bug: angleproject:2502
Change-Id: I953d99d04608cec04aad824b8b38f388ed1e4c2b
Reviewed-on: https://chromium-review.googlesource.com/1069544
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
316c6065
|
2018-05-29T10:49:45
|
|
Vulkan: Call GraphResource instead of GraphNode.
We don't need to use the CommandGraphNode class directly. This CL
consolidates our code so we never call the GraphNodes class directly.
Instead we call operations on GraphResource. This should simplify the
interaction with APIs from the various graph and dependency management
classes in the Vulkan back-end.
A new concept of 'starting' vs 'appending' commands is introduced.
Appending tries to avoid starting new command buffers when possible.
Should not change how the graphs are constructed, and mostly be a
refactoring change. There may be minor behaviour changes to some
commands.
Bug: angleproject:2539
Change-Id: Ia971e5cacb1164b9b3b22fa4a0a55b954d81f10e
Reviewed-on: https://chromium-review.googlesource.com/1052068
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
|
|
64ac5d9e
|
2018-05-22T10:39:47
|
|
Vulkan: Quick rename of member variable in DynamicBuffer
The new name mNxtAllocationOffset instead of mNextWriteOffset makes more sense.
Also merged the 2 offset tracking vars since the user of DynamicBuffer
should know to flush or invalidate correctly.
Bug: angleproject:2480
Change-Id: If7a04b633794484ad88e73fd6f802fcfe0e3705a
Reviewed-on: https://chromium-review.googlesource.com/1069107
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Luc Ferron <lucferron@chromium.org>
|
|
534b00db
|
2018-05-18T08:16:53
|
|
Vulkan: readPixels improvement - use DynamicBuffer
Reintroduce the change that was previously reverted here:
https://chromium-review.googlesource.com/c/angle/angle/+/1064770
This includes a tentative fix the issue on Android that prompted the revert,
we need to call invalidate on the mapped memory range before we read it on
the host side.
Bug: angleproject:2480
Change-Id: Id637bafa2845628ae38483c6fc8e6d7f26ad2d3e
Reviewed-on: https://chromium-review.googlesource.com/1066229
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
a9ab0f37
|
2018-05-17T17:03:55
|
|
Vulkan: Fix DynamicBuffer usages, need to use specific alignment
The alignment used to allocate VkBuffers in the VkBuffer needs to be at
least the size of the nonCoherentAtomSize defined in the limits of the
VkDevicePhysicalProperties. The latest roll of the
vulkan-validation-layers added that check and caused a bunch of errors.
This is fixing them.
Bug: angleproject:2565
Change-Id: Ia2ad506dce7966adb6220c52ea891903922c47d0
Reviewed-on: https://chromium-review.googlesource.com/1064950
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
18e323ab
|
2018-05-11T16:54:17
|
|
D3D11: Fix out-of-range access with robust access.
When using a vertex buffer with DYNAMIC usage, with robust buffer
access enabled, we would sometimes read out-of-bounds when using very
large values for the index range. An unchecked signed addition would
overflow and lead to reading a negative offset.
Fix this problem by keeping the value size_t whenever possible. Also do
clamped casts when converting to a smaller values.
Also adds a regression test.
Bug: chromium:842028
Change-Id: Ie630ac857c6acfc0bace849a03eebfbaa2fbe89a
Reviewed-on: https://chromium-review.googlesource.com/1055928
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
90968360
|
2018-05-04T08:47:22
|
|
Vulkan: Incomplete textures support
2D multisample is out of scope since its ES 3 only.
Bug: angleproject:2499
Change-Id: Id5f81d713a2882ba2a91b7d3f281d71a3e9289f4
Reviewed-on: https://chromium-review.googlesource.com/1046786
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
61859817
|
2018-05-09T14:17:39
|
|
Vulkan: Fix use-after-free with DynamicBuffer.
The implementation of DynamicBuffer before my changes could have some
issues in the following use case:
- Allocate buffer 1 for Texture 1 (with size as big as the full buffer
size)
- Allocate buffer 2 for Texture 2 (triggers creation of a new underlying
BufferVk and releases the buffer 1 to the Renderer)
- Render with Texture 2 (texture 1 hasn't been flushed yet)
- swap buffers (causes garbage in the renderer to be cleaned up)
- Try rendering with Texture 1, and you'll get an error stating that
the buffer we're trying to copy is not valid (because its already been
freed).
This set of changes:
- Add a new test that specifically triggers this case.
- enables the texture.filtering.cube* tests in dEQP.
- Fixes the issue by adding a manual releasing pattern of the buffers
in DynamicBuffer.
Bug: angleproject:2505
Change-Id: I207ce4a694016766f008cca67d82b252f460e0df
Reviewed-on: https://chromium-review.googlesource.com/1052551
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Luc Ferron <lucferron@chromium.org>
|
|
a932b6b5
|
2018-05-01T07:53:17
|
|
Vulkan: Fix in DynamicBuffer, allocating too many buffers for no reason
-Enables more dEQP tests in functional.texture.filtering
-texture.filtering.cube.* tests don't work yet, another CL will be
targeted at fixing that after this one.
Bug: angleproject:2505
Change-Id: Ic634e0deafa54e8e8ebd0efbdae14263ffdbcef0
Reviewed-on: https://chromium-review.googlesource.com/1037183
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Luc Ferron <lucferron@chromium.org>
|
|
33e05bab
|
2018-04-23T15:12:34
|
|
Vulkan: Bugfix in TextureVk::setSubImage and DynamicBuffer
Bug 1) The offset wasn't plumbed through for setSubImage.
Bug 2) The DynamicBuffer allocation sometime allocates a bit more
than requested, but we were using the size requested as the next offset
instead of the actual allocated size. This could get us in a situation
in certain corner cases where the next allocation would be done on the
said buffer instead of using a new allocation as it should.
Also enables a bunch of new texture_specification_* tests that were
unable to run successfully without these 2 bug fixes.
Found a weird issue on WIN AMD only and suppressed these tests for now.
Will investigate part of the same bug number as a separate change.
Bug: angleproject:2495
Bug: angleproject:2492
Change-Id: I490b1bf2d1795b7a1033365e29eac12a8bc50bff
Reviewed-on: https://chromium-review.googlesource.com/1024380
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Luc Ferron <lucferron@chromium.org>
|
|
66410530
|
2018-04-20T12:47:45
|
|
Vulkan: Textures mipmaps support
Note that generate mipmaps is not yet supported, but uploading mipmaps
is. This also enables 64 tests in dEQP gles2 to validate the changes.
While trying to enable tests in functional.texture.mipmap.*, I found
an issue where the graph ends up in an invalid state and triggers and
assert in onReadResource in ContextVk.cpp:188. It seems like an
unrelated bug to mip maps, I will investigate to enable these tests
separately in a following CL.
Bug: angleproject:2479
Change-Id: If51776d8ef3d994bee620d6a1cf982bb51838ff0
Reviewed-on: https://chromium-review.googlesource.com/1022232
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
0cb6dc4c
|
2018-04-16T10:36:39
|
|
Vulkan: Fix texture descriptor set alloc count.
We were reserving half the required descriptor sets for our pool. This
fixes the counting and ensures we won't regress by adding a test.
Also enables the cube map texture sample, and removes an UNIMPLEMENTED
warning that was spurious.
Bug: angleproject:2318
Change-Id: I371cd7c5b42e1ce980cce7bb0ef04885db72b614
Reviewed-on: https://chromium-review.googlesource.com/1014165
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
a4fa9c27
|
2018-04-13T07:00:56
|
|
Vulkan: drawElements with GL_LINE_LOOP and an offset
Also enables a test in LineLoopTest that validates this case.
Bug: angleproject:2473
Change-Id: Icb4c5735c11be40cdeceaa051f5a5cef33fd22c6
Reviewed-on: https://chromium-review.googlesource.com/1011669
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
20fa8d5c
|
2018-04-15T10:09:32
|
|
Vulkan: Implement cube map texture sampling.
This changes the TextureVk class to have a queue of staging
copies, instead of a single copy at a time. This will allow
us to upload multiple sub regions of a texture image at once
when we need to resolve the Image at sampling time.
Enables the remainder of the texture.format tests, and all
non-mipped tests in the texture.size tests. Also updates the
expectations with the bug number for mipmap support.
Bug: angleproject:2318
Change-Id: Ie55f8f2dc24d7b133ad735e37f0f78937f022b5b
Reviewed-on: https://chromium-review.googlesource.com/980775
Reviewed-by: Luc Ferron <lucferron@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
a912046d
|
2018-04-12T13:11:03
|
|
Vulkan: DrawElements with line loops client side memory support
- Also enables 6 new tests in LineLoopTests.cpp in angle_end2end
Bug: angleproject:2458
Change-Id: I4aec12b0ac780e81e6811f1199a5acaf17d9b982
Reviewed-on: https://chromium-review.googlesource.com/1010411
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Luc Ferron <lucferron@chromium.org>
|
|
983c429f
|
2018-04-10T13:05:45
|
|
Vulkan: Lineloops edge base bugfix and new tests
The dynamic buffer we are using in the LineLoopHelper wasn't able
to support switching between different allocation sizes. Fix this by
simply using a min alignment of the maximum allocation size we can
reach.
Adds 2 new tests to validate these calls in StateChangeTest.cpp
Bug: angleproject:2458
Change-Id: I9d224e7dcfcd7627010832ca30dd9e1b9eceea4e
Reviewed-on: https://chromium-review.googlesource.com/1007335
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
22f12fed
|
2018-04-08T14:23:40
|
|
Vulkan: Rename vk::LineLoopHelper.
This more closely follows the general pattern laid out by the naming
in vk_helpers.h. It also changes the dynamic buffer that the helper
wraps to be stored by-value since the header include order problem is
fixed.
Bug: angleproject:2318
Change-Id: I1de9e1edee2125d3afd490b4f9c99cf70c61215c
Reviewed-on: https://chromium-review.googlesource.com/1001654
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Luc Ferron <lucferron@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
9cceac42
|
2018-03-31T14:19:16
|
|
Vulkan: Update resource dependency semantics.
This removes passing the Serial around to several methods, so that
dependency management is a bit more automatic.
This makes life a bit easier when dealing with state updates when
resources are in use by Vulkan.
The FramebuffeVk no longer stores an extra serial of the last draw,
instead it will trigger creation of a new writing node on a state
change update.
Bug: angleproject:2318
Change-Id: Ie58ec66e6e8644ba4d402c509255c3795d363dd3
Reviewed-on: https://chromium-review.googlesource.com/985201
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
|
|
6c7ab7fe
|
2018-03-31T14:19:15
|
|
Vulkan: Reorganize helper classes.
This renames ResourceVk to vk::CommandGraphResource, which should help
clarify its usage. This also moves LineLoopHandler, ImageHelper, and
the DynamicBuffer and DynamicCommandPool classes into a new vk_helpers
module. This file contains helper classes that manage other resources.
Also this makes DynamicBuffer and DynamicDescriptorPool no longer
inherit from CommandGraphResource. In the future, only Impl objects
will be allowed to be graph resources.
Bug: angleproject:2318
Change-Id: I0fa23da2ac853d90f3c822547a4a314f247cc757
Reviewed-on: https://chromium-review.googlesource.com/985200
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
|