|
216f73d0
|
2019-04-12T13:32:30
|
|
Vulkan: add uniform buffer object support
Support for layout qualifiers in interface blocks are added. All
interface blocks are adjusted to either be in std140 or std430.
In the Vulkan backend, a new descriptor set is added for UBOs. A dirty
bit is added for UBO updating and pipeline layouts and descriptor
bindings are updated.
Bug: angleproject:3199, angleproject:3220
Change-Id: I271fc34ac2e1e8b76dee75e54a7cff0fe15fe4ee
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1565061
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
892d1805
|
2019-03-27T14:21:34
|
|
Vulkan: Have the WindowSurfaceVk own the submit semaphores.
Chaining of submit semaphores is only needed for window surfaces because they
are required for the first usage of the swap chain image and final present
of the image.
Move ownership of the submit semaphores from RendererVk to WindowSurfaceVk and
update all calls to finish and flush to be piped through a ContextVk which
tracks the currently bound window surface.
BUG=angleproject:2464
Change-Id: I4b3083124d7910a5dee297afc219e3a3f28057f2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1542257
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
2660b503
|
2019-03-21T12:08:40
|
|
Vulkan: Restore CommandBuffer to namespace vk
Moved vk::CommandBuffer and vk::SecondaryCommandBuffer to vk::priv:: and
aliased vk::CommandBuffer to one or the other. This allows the rest of
the classes to continue seeing vk::CommandBuffer as they used to do.
Used a special alias for the primary command buffer that gets submitted
(vk::PrimaryCommandBuffer).
Bug: angleproject:3136
Change-Id: I61236fd182230991db7395d05e3da3be5e3f45be
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1534456
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
134425c7
|
2019-03-15T17:02:17
|
|
Vulkan:Integrate SecondaryCommandBuffers
Integrate the custom SecondaryCommandBuffer type into the CommandGraph
nodes by adding new ANGLE_USE_CUSTOM_VULKAN_CMD_BUFFERS define that can
be set in the BUILD gn args with angle_enable_custom_vulkan_cmd_buffers
set to "true."
Initially the custom cmd buffers are disabled by default.
This adds some support functions to SecondaryCommandBuffer to make the
integration easier by matching the wrapped cmd buffer interface:
initialize(), end(), valid().
Bug: angleproject:3136
Change-Id: Ib910554583192550757bb8ce89914e3ea8737988
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1526556
Commit-Queue: Tobin Ehlis <tobine@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
e3981cf7
|
2019-02-27T11:05:15
|
|
Vulkan:Add SecondaryCommandBuffer class
SecondaryCommandBuffer is a CPU-side command buffer construct intended
to delay allocation/construction of GPU-side command buffers until
absolutely necessary.
Initially ANGLE was batching commands into Vulkan secondary command
buffers and then submitting those command buffers when rendering was
required. On at least some devices we saw two areas of overhead that
SecondaryCommandBuffers are intended to reduce:
1. Commands in secondary cmd buffers taking longer than equivalent
commands in a single primary cmd buffer.
2. Allocation/free/reset overhead of the secondary command buffers was
a hotspot for some workloads.
Bug: angleproject:3136
Change-Id: Ife8ffe2968eee423d89ff433d62596c432156661
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1492016
Commit-Queue: Tobin Ehlis <tobine@google.com>
Reviewed-by: Jamie Madill <jmadill@google.com>
|
|
4a41914b
|
2019-02-05T08:50:30
|
|
Vulkan: Add trace markers
Add systrace markers for various RendererVk::finish paths in order to
quickly identify cause of finishes. Also added marker to commandPool
destroy which is currently a known hotspot on some devices.
Bug: angleproject:2528
Change-Id: I5a2fc741679a58445d71a2edd6204cf9e869d236
Reviewed-on: https://chromium-review.googlesource.com/c/1454277
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
1f750d1e
|
2019-01-16T13:27:16
|
|
Even more inlining and micro-optimization.
Improves perf by about 3-4% on the Vulkan VBO state change test.
Bug: angleproject:3014
Change-Id: If4415e503cd883cf7de6387bf1ebbca0e5fc994e
Reviewed-on: https://chromium-review.googlesource.com/c/1393907
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
611bbaab
|
2018-12-06T01:59:53
|
|
Vulkan: Convert vertex attributes in compute
In this commit, VertexArrayVk::convertVertexBuffer() is renamed to
VertexArrayVk::convertVertexBufferCpu() to explicitly show it does a CPU
readback. A new VertexArrayVk::convertVertexBuffer() function is added
that has the same functionality in gpu (with some assumptions, where the
CPU fallback is used should those assumptions fail). Currently, the
only requirement is that buffer offset/stride are divided by the
component size.
ConvertVertex.comp is the shader responsible for this conversion, and it
implements the functionality in renderer/copyvertex.inc, minus a few
functions that are not used in the Vulkan backend.
Bug: angleproject:2958, angleproject:3009
Change-Id: I8ec9a5f4672509bcf7b9e352cd27663970ad4653
Reviewed-on: https://chromium-review.googlesource.com/c/1364451
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@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>
|
|
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>
|
|
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>
|
|
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>
|
|
ae108bd1
|
2018-10-18T15:00:38
|
|
Use angle::Result in front-end (Part 5)
Refactors gl::Buffer and implementation.
Bug: angleproject:2491
Change-Id: Ic6860dac2faf33067965e7117ea8e98dc6a8dc7a
Reviewed-on: https://chromium-review.googlesource.com/c/1283310
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@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>
|
|
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>
|
|
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>
|
|
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>
|
|
9d84ccba
|
2018-09-12T18:09:02
|
|
Vulkan: renderer->finish() before reading buffers.
Have to call renderer->finish() before reading a buffer otherwise you can
get stale data.
Enable IndexBufferOffsetTest.UInt8Index/ES2_VULKAN which now works.
Disable LineLoopTest.LineLoopUShortIndexBuffer/ES2_VULKAN which stopped
working on Windows with Intel GPU.
BUG=angleproject:2659
Change-Id: I1e21b0e1dacd3368923caf18e767e34ab696eef6
Reviewed-on: https://chromium-review.googlesource.com/1227032
Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
62114aae
|
2018-08-28T09:36:46
|
|
glBufferSubData: Exit early if size is zero
glBufferSubData is calling vkMapMemory with a size of zero is invalid.
Check for that and exit early if found.
Bug: angleproject:2790
Change-Id: I965badeb3aa2cec1adc24dd7ff5695f8aa3e553d
Reviewed-on: https://chromium-review.googlesource.com/1194610
Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
e452382a
|
2018-07-19T16:10:53
|
|
Vulkan: convert/align vertex data from buffers
When we get a buffer with vertex data in an unsupported format or
alignment, correct that as we copy it to a DynamicBuffer, then use
the copy. Enable tests.
BUG=angleproject:2405
Change-Id: I2132abea4d936f6b53d9209be7f99a0e2d8de219
Reviewed-on: https://chromium-review.googlesource.com/1141277
Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Geoff Lang <geofflang@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>
|
|
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>
|
|
2b06054d
|
2018-07-03T14:48:13
|
|
Vulkan: Insert a barrier after buffer copy
According to the spec(section 18.1), all copy commands are treated
as transfer operations for the purposes of synchronization
barriers. Some tests are flaky on Intel platform without such
barriers.
Bug: angleproject:2663
Bug: angleproject:2664
Change-Id: Ic8bc9a0eb000670342c0df0449257324f04ad1f8
Reviewed-on: https://chromium-review.googlesource.com/1124103
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
6ed167a9
|
2018-06-13T13:45:55
|
|
Vulkan: Implement conversion to uint16 for drawElements with ubytes
Bug: angleproject:2646
Bug: angleproject:2659
Change-Id: If3c7a2b77d6acd18c8ca2522a427a43e10ed6db2
Reviewed-on: https://chromium-review.googlesource.com/1099420
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
57707e5f
|
2018-06-14T14:50:36
|
|
Vulkan: Fix a state notification change that was wrong
That state change should really be in the frontend and not in each
backend.
Bug: angleproject:2594
Change-Id: I9d9396563ce42a41587b954892d6b4c6002c5072
Reviewed-on: https://chromium-review.googlesource.com/1101252
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
49aacad5
|
2018-06-12T08:33:59
|
|
Vulkan: Support the indices offset in drawElements calls
Also fixes an issue in buffer copy synchronization.
Bug: angleproject:2645
Change-Id: Ibca7052daaf1e6fe37913c8a8216ec33c66426b6
Reviewed-on: https://chromium-review.googlesource.com/1096911
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Luc Ferron <lucferron@chromium.org>
|
|
c57ee259
|
2018-05-30T19:53:48
|
|
Vulkan: Clean up object releasing APIs.
This cleans up the confusing releaseResource/releaseObject pair in the
RendererVk class. It also makes getQueueSerial private in ResourceVk
but keeps a public isResourceInUse API for external use.
Bug: angleproject:2539
Change-Id: I6b4f24db16e36130a85ef03fc2c3b26d8d9e1fba
Reviewed-on: https://chromium-review.googlesource.com/1069291
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
|
|
5dca651f
|
2018-05-30T10:53:51
|
|
Vulkan: Make Resource's updateSerial private.
This simplifies the API from the calling resource classes. This method
is called internally instead. beginWriteResource and
appendWriteResource both call updateSerial internally.
Additionally this removes hasStartedRenderPass and instead returns a
boolean from appendToStartedRenderPass indicating success.
Bug: angleproject:2539
Change-Id: Idcf72e6a80dde90e83dabc64644051bb536c6b12
Reviewed-on: https://chromium-review.googlesource.com/1066554
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
8c361c7f
|
2018-05-18T14:36:06
|
|
Vulkan: Remove one API from CommandGraphResource.
'checkResourceInUseAndRefreshDeps' can be implemented using other
APIs. This simplifies the API surface in CommandGraphResource.
Bug: angleproject:2539
Change-Id: I55350ab352c50961736327a867e8403d3b38506b
Reviewed-on: https://chromium-review.googlesource.com/1052070
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@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>
|
|
d7518622
|
2018-03-27T09:44:31
|
|
Buffer11: Refactor Subject/Observer pattern.
Instead of having a direct/static observer distinction, add two
messages for 'Contents Changed' and 'Storage Changed'. This makes
Buffer11 itself the subject with two different message handling
cases in the onSubjectStateChange methods.
Bug: angleproject:2389
Change-Id: I645cd4b7cc7ce51cb7f48a01c7fc72939cbe89fe
Reviewed-on: https://chromium-review.googlesource.com/957940
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
879f90d2
|
2018-03-01T11:45:20
|
|
Vulkan: Avoid recopying the data every time we draw line loops
Use the Observer pattern to get notified when the BufferVk we've copied our data
from is changing. We will only recopy the data if anything has changed, but otherwise
we'll keep drawing with the same index buffer we've created previously.
Bug: angleproject:2335
Change-Id: Ib65677b4d5ec90c46a5e3b975fffd1fddeed59e7
Reviewed-on: https://chromium-review.googlesource.com/948622
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
78e39b3f
|
2018-02-26T07:42:44
|
|
Vulkan: Line loops for indexed draw calls
Bug: angleproject:2335
Change-Id: Iabd6ae8181c6d3fb487f953a6fbf699db568a1c9
Reviewed-on: https://chromium-review.googlesource.com/941261
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
06a87ec8
|
2018-02-25T22:07:27
|
|
Vulkan: Fix offsets in BufferVk::setDataImpl.
We were using a src offset instead of a dest offset. The staging
buffer should always start at the zero offset, while the dest
buffer (the real buffer) should use the offset argument to
Buffer*Data.
Bug: angleproject:2374
Change-Id: I9ee702709d9c15945935f4eae25f308b71e0d1e8
Reviewed-on: https://chromium-review.googlesource.com/937022
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
|
|
df4b6316
|
2018-01-18T18:22:19
|
|
Vulkan: Add unmap in BufferVk::getIndexRange.
There was a map() without a corresponding unmap().
Add a test which does multiple indexed draws, triggering the problem.
BUG=angleproject:2310
Change-Id: Id33d66f24de2005ec3f9958d33ab4c2630b49dc5
Reviewed-on: https://chromium-review.googlesource.com/875318
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
|
|
1f46bc12
|
2018-02-20T16:09:43
|
|
Vulkan: Add CommandGraph class.
This also renames CommandBufferNode to CommandGraphNode. It also
renames some of the intenal members to more closely represent the
tree relationships (parents/children). This should clean up the
command graph classes and make them a bit easier to understand.
Bug: angleproject:2361
Change-Id: I024bffcc7f4157c78072ef902a3c40a07a08b18a
Reviewed-on: https://chromium-review.googlesource.com/922121
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
57fbfd80
|
2018-02-14T12:45:34
|
|
Vulkan: Pass RendererVk to Allocate helpers.
Passing the Renderer pointer instead of the Context pointer makes
these methods a bit easier to work with from the "EGL" sections of
the code. This is a refactoring-only change to aid the Depth/Stencil
implementation.
Bug: angleproject:2357
Change-Id: Icbcc72a1daff4edd947a21672744498781cfc064
Reviewed-on: https://chromium-review.googlesource.com/919523
Reviewed-by: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
0e65454d
|
2018-02-07T14:50:06
|
|
Vulkan: Fix circular dependency with resource updates.
The old implementation would try to keep recording draw commands to
the same framebuffer write operation even if the vertex array buffer
data changed. This would lead to a broken dependency graph. Fix this
by forcing any current render operations to create a new node in this
case, giving a correct command graph.
Old design:
- render (creates a CommandBufferNode A)
- update buffer (creates a CommandBufferNode B which happens after A)
- render (to CommandBuffer A, and gives a circular dependency with B)
New design
- render (CommandBufferNode A)
- update buffer (CommandBufferNode B, happens after A)
- render (CommandBufferNode C, happens after B)
This also renames some methods to try to clarify them.
Bug: angleproject:2350
Change-Id: I6559bed4ed3f58f68771662422c5bef6a505282b
Reviewed-on: https://chromium-review.googlesource.com/907416
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
57dd97aa
|
2018-02-06T17:10:49
|
|
Vulkan: Add helper for allocating image memory.
Also refactors some memory index searching code that was duplicated.
This will lead the way to having more code reuse for our Renderbuffers
implementation in Vulkan, and for other types of Texture.
Bug: angleproject:2347
Change-Id: I49cbd77328c01f945d66f92e6ec4ba7c552abeff
Reviewed-on: https://chromium-review.googlesource.com/904684
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
49ac74bd
|
2017-12-21T14:42:33
|
|
Vulkan: Implement command re-ordering.
This introduces a new CommandBufferNode class. Nodes are linked
together to form a graph based on their dependencies. When the app
triggers a readback or swap, the graph is flushed entirely. This
sends the queued ANGLE Vulkan work to the Vulkan queue which is
then processed on the GPU with the right dependencies.
This design allows us to save on some unnecessary RenderPass creation
and also allows us to know what load/store ops to use. It also allows
us to take advantage of the Vulkan automatic RenderPass transitions
for performance. Load/Store ops and automatic transitions will be
implemented in later patches.
Bug: angleproject:2264
Change-Id: I0e729c719e38254202c6fedcede4e63125eb4810
Reviewed-on: https://chromium-review.googlesource.com/780849
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
8a57b468
|
2017-12-28T12:25:03
|
|
Re-land "Vulkan: Roll loader/validation layers SDK. (2/2)"
Second re-land fixes git.bat access on developer machines.
Re-landing with upstream fixes to the layers so they no longer
need to copy the parameter validation errors to the current
working directory of the layer generation. Also includes fixes
for the GCC build.
This hasn't been updated in a while, so there are many changes.
It should also include better validation for memory barriers.
Also includes updated builds for SPIRV Tools and glslang.
A few pull requests need to land before landing this in ANGLE.
This second step re-enables Vulkan and includes the updated build.
Includes a workaround for parameter_validation.h no longer being
auto-generated, and the stale file clobbering the build.
Also includes a fix for an incorrect memory barrier.
Bug: angleproject:2237
Change-Id: Ic1a3ad7458bb743d7279a1af9334693ab6cb59d6
Reviewed-on: https://chromium-review.googlesource.com/845859
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
06f86377
|
2017-12-22T19:28:35
|
|
Revert "Re-land "Vulkan: Roll loader/validation layers SDK. (2/2)""
This reverts commit 755a9317ff1ec983f2704fc9f4619cac49992960.
Reason for revert: Broke local win build. crbug.com/797253
Original change's description:
> Re-land "Vulkan: Roll loader/validation layers SDK. (2/2)"
>
> Re-landing with upstream fixes to the layers so they no longer
> need to copy the parameter validation errors to the current
> working directory of the layer generation. Also includes fixes
> for the GCC build.
>
> This hasn't been updated in a while, so there are many changes.
> It should also include better validation for memory barriers.
>
> Also includes updated builds for SPIRV Tools and glslang.
> A few pull requests need to land before landing this in ANGLE.
>
> This second step re-enables Vulkan and includes the updated build.
>
> Includes a workaround for parameter_validation.h no longer being
> auto-generated, and the stale file clobbering the build.
>
> Also includes a fix for an incorrect memory barrier.
>
> Bug: angleproject:2237
> Change-Id: I1ed87ecfa84f51ee1edf6a8581d9b3c8f9a6f26e
> Reviewed-on: https://chromium-review.googlesource.com/834429
> Commit-Queue: Jamie Madill <jmadill@chromium.org>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
TBR=fjhenigman@chromium.org,jmadill@chromium.org
Change-Id: I605d72207d64c7d0853678595e255b74ad69d887
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: angleproject:2237
Reviewed-on: https://chromium-review.googlesource.com/842918
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Commit-Queue: Zhenyao Mo <zmo@chromium.org>
|
|
755a9317
|
2017-12-21T14:34:05
|
|
Re-land "Vulkan: Roll loader/validation layers SDK. (2/2)"
Re-landing with upstream fixes to the layers so they no longer
need to copy the parameter validation errors to the current
working directory of the layer generation. Also includes fixes
for the GCC build.
This hasn't been updated in a while, so there are many changes.
It should also include better validation for memory barriers.
Also includes updated builds for SPIRV Tools and glslang.
A few pull requests need to land before landing this in ANGLE.
This second step re-enables Vulkan and includes the updated build.
Includes a workaround for parameter_validation.h no longer being
auto-generated, and the stale file clobbering the build.
Also includes a fix for an incorrect memory barrier.
Bug: angleproject:2237
Change-Id: I1ed87ecfa84f51ee1edf6a8581d9b3c8f9a6f26e
Reviewed-on: https://chromium-review.googlesource.com/834429
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
647dca76
|
2017-12-15T21:31:00
|
|
Revert "Vulkan: Roll loader/validation layers SDK. (2/2)"
This reverts commit f15f9cec318b5b0042cca7f819b1df9dbd1872ee.
Reason for revert:
Causing a compile failure on the Fuchsia config, due to a path
difference. Will fix upstream and re-land, since it's breaking the
auto-roller.
https://chromium-review.googlesource.com/c/chromium/src/+/829878
FAILED: clang_x64/gen/third_party/angle/src/vulkan_support/angle/vulkan/parameter_validation.cpp
python ../../third_party/vulkan-validation-layers/src/scripts/lvl_genvk.py -o clang_x64/gen/third_party/angle/src/vulkan_support/angle/vulkan -registry ../../third_party/vulkan-validation-layers/src/scripts/vk.xml parameter_validation.cpp -quiet
Error: Could not find vk_validation_error_messages.h
[906/1359] ACTION //third_party/angle/src/vulkan_support:vulkan_gen_object_tracker_cpp(//build/toolchain/linux:clang_x64)
FAILED: clang_x64/gen/third_party/angle/src/vulkan_support/angle/vulkan/object_tracker.cpp
python ../../third_party/vulkan-validation-layers/src/scripts/lvl_genvk.py -o clang_x64/gen/third_party/angle/src/vulkan_support/angle/vulkan -registry ../../third_party/vulkan-validation-layers/src/scripts/vk.xml object_tracker.cpp -quiet
Error: Could not find vk_validation_error_messages.h
Original change's description:
> Vulkan: Roll loader/validation layers SDK. (2/2)
>
> This hasn't been updated in a while, so there are many changes.
> It should also include better validation for memory barriers.
>
> Also includes updated builds for SPIRV Tools and glslang.
> A few pull requests need to land before landing this in ANGLE.
>
> This second step re-enables Vulkan and includes the updated build.
>
> Includes a workaround for parameter_validation.h no longer being
> auto-generated, and the stale file clobbering the build.
>
> Also includes a fix for an incorrect memory barrier.
>
> Bug: angleproject:2237
> Change-Id: Iae611764870281ed6aa7b187ec0c4e44226c722a
> Reviewed-on: https://chromium-review.googlesource.com/759197
> Commit-Queue: Jamie Madill <jmadill@chromium.org>
> Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
TBR=fjhenigman@chromium.org,jmadill@chromium.org,cwallez@chromium.org
# Not skipping CQ checks because original CL landed > 1 day ago.
Bug: angleproject:2237
Change-Id: I9bc60860668c1da773b6e2fdb83ecc20215e9125
Reviewed-on: https://chromium-review.googlesource.com/830926
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
f15f9cec
|
2017-12-13T15:02:24
|
|
Vulkan: Roll loader/validation layers SDK. (2/2)
This hasn't been updated in a while, so there are many changes.
It should also include better validation for memory barriers.
Also includes updated builds for SPIRV Tools and glslang.
A few pull requests need to land before landing this in ANGLE.
This second step re-enables Vulkan and includes the updated build.
Includes a workaround for parameter_validation.h no longer being
auto-generated, and the stale file clobbering the build.
Also includes a fix for an incorrect memory barrier.
Bug: angleproject:2237
Change-Id: Iae611764870281ed6aa7b187ec0c4e44226c722a
Reviewed-on: https://chromium-review.googlesource.com/759197
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
|
|
acf2f3ad
|
2017-11-21T19:22:44
|
|
Apply Chromium style fixes.
This addresses several minor code quality issues that are validated
in Chromium, but not yet applied to ANGLE:
* constructors and destructors must be defined out-of-line
* auto is not allowed for simple pointer types
* use override everywhere instead of virtual
* virtual functions must also be defined out-of-line
Slightly reduces binary size for me (~2k on Win, 150k on Linux).
Bug: angleproject:1569
Change-Id: I073ca3365188caf5f29fb28d9eb207903c1843e6
Reviewed-on: https://chromium-review.googlesource.com/779959
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
7f738d4e
|
2017-11-20T17:06:27
|
|
Vulkan: Refactor CommandBuffer helper class.
This makes the base vk::CommandBuffer class as close to the Vulkan
API as possible. It moves the extra functionality and state tracking
to a CommandBufferAndState helper class.
Also no longer stores a reference to a CommandPool in a CommandBuffer.
Eventually we won't need to free CommandBuffers explicitly, since they
can be freed en-masse by deallocating the CommandPool on a flush.
Bug: angleproject:2200
Change-Id: I5095fe89e8da935ff8273b1a402ccfd6a3ffe0df
Reviewed-on: https://chromium-review.googlesource.com/778184
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
6226b8df
|
2017-11-09T13:08:30
|
|
Vulkan: Fix missing index buffer usage.
The newer validation layers picked up this missing bit.
BUG=angleproject:2237
Change-Id: I5bb2f1db3a4e284c003de0f5b23f7f613056af3a
Reviewed-on: https://chromium-review.googlesource.com/760637
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
|
|
336129f6
|
2017-10-17T15:55:40
|
|
Use a packed enum for buffer targets.
BUG=angleproject:2169
Change-Id: I4e08973d0e16404b7b8ee2f119e29ac502e28669
Reviewed-on: https://chromium-review.googlesource.com/723865
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
9776035d
|
2017-11-09T13:08:29
|
|
Vulkan: Implement Buffer updates.
This allows the app to update Buffer data while the data is in use
by the GPU. For instance, uploading new vertex attribute data after
a draw call.
It introduces a StagingBuffer helper class, similar to StagingImage.
These classes are somewhat temporary and could be redesigned.
BUG=angleproject:2200
Change-Id: If8634b1411779b16c2bd22cce18a5f37ed958d1c
Reviewed-on: https://chromium-review.googlesource.com/756959
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
8724e254
|
2017-10-28T10:44:40
|
|
Vulkan: Fix re-creating buffer storage.
BUG=angleproject:2200
Change-Id: Id60e857517cce9c0bfa272e4e6a399f236e395f7
Reviewed-on: https://chromium-review.googlesource.com/741548
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
25301b60
|
2017-10-28T20:59:31
|
|
Remove WrappedObject::retain.
With resources being mostly deleted by the Renderer along with a
serial number, the retain move semantics weren't very useful.
Refactoring change only.
BUG=angleproject:2200
Change-Id: I7b72b1decfa7604cdd767e7d9b5213b9383eb240
Reviewed-on: https://chromium-review.googlesource.com/742369
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
e88ec8ee
|
2017-10-31T17:18:14
|
|
Vulkan: Refactor GarbageObject.
Instead of allocating a small bundle for deferred deletion, store a
small triple of {Serial,VkHandle,HandleType}. The HandleType can be
used in a generic way to release the VkHandle, without needing to
store a pointer and use a virtual call.
BUG=angleproject:2200
Change-Id: I30925c2f50fd11dafb1b986ced7d279a7dde827b
Reviewed-on: https://chromium-review.googlesource.com/741163
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
|
|
ba2eaea2
|
2017-10-13T14:09:34
|
|
Refactor vk::Buffer memory allocation.
Add the code that finds the right memory information into a shared
location. This will allow it to be reused with other points in the
code.
BUG=angleproject:2167
Change-Id: I72d0522e134666d0a00921cb5ef6bc093473afdf
Reviewed-on: https://chromium-review.googlesource.com/717189
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
2e568cfb
|
2017-09-18T17:05:22
|
|
Add generator for packed GL enums.
For testing this also converts two unimportant GLenums, gl::BufferUsage
and gl::CullModeFace.
BUG=angleproject:2169
Change-Id: If1e86a97d0fed3fd567303aca6506ec579503076
Reviewed-on: https://chromium-review.googlesource.com/688000
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
d03a849d
|
2017-10-03T15:46:06
|
|
Vulkan: Implement very basic DrawElements.
This implements getIndexRange for index validation, without any
caching. Vulkan does support a version of robust access, but it would
require the robust context creation attribute. Also, it differs slight
from the OpenGL spec.
Also note that this implementation does not create the index buffer
with the correct usage bits, but seems to work and doesn't produce an
error in the validation layers. We should probably update them.
This CL also doesn't impement index support for immediate data,
offsets, or the unsigned short index type.
BUG=angleproject:2167
Change-Id: I580930f85e23034b483f3ece62eb1faf8024d624
Reviewed-on: https://chromium-review.googlesource.com/681874
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
035fd6b3
|
2017-10-03T15:43:22
|
|
Vulkan: Implement very basic textures.
This is a quick implementation which supports only one backing Image
and one type of ImageView at a time, for 2D texture only.
It also implements a helper class for finding compatible memory pools.
It's possible we can keep a cache of memory pool indexes given the
guarantees the Vulkan spec has on compatible memory types (see the
documentation for VkMemoryRequirements).
BUG=angleproject:2167
Change-Id: I1d7a8eaec90f240273ad75194e23430d6d4c5dc1
Reviewed-on: https://chromium-review.googlesource.com/680000
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
|
|
33510107
|
2017-09-20T10:39:18
|
|
Pass gl::Context to more Buffer methods.
This will allow us to pull out the Renderer from the Context in more
places in Buffer11, for state update. Impacts a few method calls in
a few places.
BUG=angleproject:2151
Change-Id: I1360caea65a94d3de4cd9f52d1b74b10439b02b3
Reviewed-on: https://chromium-review.googlesource.com/673136
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
c4d18aac
|
2017-03-09T18:45:02
|
|
Use ErrorStream everywhere
Eliminates one more usage of FormatString and its static initializer.
Add more ErrorStream types
and replace gl::Error and egl::Error with them.
BUG=angleproject:1644
Change-Id: Ib498d0ae4b81a332ec71aed7cf709993b154e6bb
Reviewed-on: https://chromium-review.googlesource.com/505429
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
c564c070
|
2017-06-01T12:45:42
|
|
Pass gl::Context to impl methods instead of ContextImpl.
In some cases we might have to call back into the GL layer, passing
the Context, and if we just have a ContextImpl pointer this isn't
possible. It also removes the need for SafeGetImpl.
BUG=angleproject:2044
Change-Id: I6363e84b25648c992c25779d4c43f795aa2866d6
Reviewed-on: https://chromium-review.googlesource.com/516835
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
876429b7
|
2017-04-20T15:46:24
|
|
Update gl2.h and update entry points.
Some method signatures were updated. Types like GLclampf and GLvoid
were replaced with other equivalents.
BUG=angleproject:1309
Change-Id: I05e8e2072c5a063d87ad96a855b907424661e680
Reviewed-on: https://chromium-review.googlesource.com/475011
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
5deea723
|
2017-02-16T10:44:46
|
|
Vulkan: Don't store device handles in wrapped objects.
BUG=angleproject:1684
Change-Id: I0ec11ec79f2e9893600a8ffd8cdbfc6040fb6f70
Reviewed-on: https://chromium-review.googlesource.com/426402
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
5f56ddb9
|
2017-01-13T17:29:55
|
|
Buffer: Pass Context to all impl methods.
This allows us to retrieve Device handles for Vulkan, and could allow
us to avoid storing some pointers for other back-ends.
BUG=angleproject:1684
Change-Id: Iccd5b97cf1c3a332d62a38ad0fcf21c352270439
Reviewed-on: https://chromium-review.googlesource.com/426400
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
df68a6f0
|
2017-01-13T17:29:53
|
|
Vulkan: Implement a simple graphics pipeline.
BUG=angleproject:1580
Change-Id: Iceaed896db22dc9eefa3f1bee7d6142fcfb20368
Reviewed-on: https://chromium-review.googlesource.com/412267
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
b8353b01
|
2017-01-25T12:57:21
|
|
Vulkan: Simple buffer creation.
This is necessary to initialize vertex arrays.
BUG=angleproject:1579
Change-Id: Ic5a232d5cdfaa75b41241901de842e62ff3b173f
Reviewed-on: https://chromium-review.googlesource.com/406645
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
8f775607
|
2016-11-03T16:45:34
|
|
Introduce a gl::BufferState class.
This state can share vital pieces of information with the impl.
The most elementary state is the buffer size, which then the
impl doesn't need to replicate.
BUG=angleproject:1579
Change-Id: I341393c64a6e49de65c1d53b1bad2fa143209862
Reviewed-on: https://chromium-review.googlesource.com/406644
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
29639857
|
2016-09-02T15:00:09
|
|
D3D11: Work around Intel uniform buffers bug.
When copying from a staging buffer to a uniform buffer, the first
upload would be incorrect. Work around this by trying to upload
directly to a uniform buffer on the first BufferSubData call.
BUG=chromium:593024
Change-Id: I0df3a1422b962bf3ece5d445f435df01e3544b67
Reviewed-on: https://chromium-review.googlesource.com/368774
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
9e54b5af
|
2016-05-25T12:57:39
|
|
Add Vulkan stubs.
Currently enabled for Windows by default.
BUG=angleproject:1319
Change-Id: I87921c579bee466465fb1e3f629bb3a40fdff659
Reviewed-on: https://chromium-review.googlesource.com/328730
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|