|
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>
|
|
bcef3224
|
2018-04-13T15:19:11
|
|
Move client attribs mask to front-end.
The Vulkan and GL back-ends both had a client attributes mask.
This consolidates them into the front-end, where it can also
be used in the validation layer.
Also includes a fix which was incorrectly setting the enabled
mask in setVertexAttribFormatImpl.
Bug: angleproject:1391
Change-Id: I5e45c1e2a56b30a36dec1482d170592c30a16d40
Reviewed-on: https://chromium-review.googlesource.com/1008272
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Luc Ferron <lucferron@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>
|
|
c1e0268a
|
2018-04-11T11:02:55
|
|
Vulkan: drawArrays followed by drawElements bugfix
Also add a test in StateChangeTest.cpp to validate the behavior.
Bug: angleproject:2458
Change-Id: I58848772c0b4f71aaa3ee187778e49fa08e6800d
Reviewed-on: https://chromium-review.googlesource.com/1007320
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Luc Ferron <lucferron@chromium.org>
Commit-Queue: Luc Ferron <lucferron@chromium.org>
|
|
a56467e0
|
2018-04-11T16:19:41
|
|
VertexArray: Use switch macro for faster iteration.
Has a small but noticeable impact on performance on a microbenchmark.
Seems to improve a synthetic score by about 1%. Should have a very
small improvement in real-world performance.
Note that the odd formatting is an idiosyncrasy of clang-format.
Bug: angleproject:2389
Change-Id: I888bf101c6d8b80a0fbafdb9c5a84205c9c8fee6
Reviewed-on: https://chromium-review.googlesource.com/962963
Reviewed-by: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: 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>
|
|
4416247c
|
2018-04-06T13:20:45
|
|
Vulkan: Enable point sprite end2end tests
Bug: angleproject:2447
Change-Id: I92a6ed730dd2048b055d32d1f149a29172c7f38a
Reviewed-on: https://chromium-review.googlesource.com/999822
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Luc Ferron <lucferron@chromium.org>
|
|
26084d0a
|
2018-04-09T13:44:04
|
|
Vulkan: Create TextureVk's Image lazily.
This defers the actual Image initialization until the Image is used
as either a Framebuffer Attachment or OpenGL Texture object. This
will allow us to construct an Image from multiple sub resources, like
when we're initializing a mip chain, or a cube map texture.
Also adds a helper "hasDepthOrStencilBits" function to angle::Format.
Bug: angleproject:2318
Change-Id: Ife861560216581a90fc6da32a583f69886c7daea
Reviewed-on: https://chromium-review.googlesource.com/985202
Reviewed-by: Yuly Novikov <ynovikov@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>
|
|
b8e39660
|
2018-04-04T11:41:42
|
|
Vulkan: Remove Observer from LineLoopHandler.
This can now use the VertexArrayVk dirty bits. It also
seems as though there are a couple caching bugs with the
LineLoopHandler.
Bug: angleproject:2389
Change-Id: I8af73f4acf56768ed9c68395349ba96acfbe9666
Reviewed-on: https://chromium-review.googlesource.com/989259
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Luc Ferron <lucferron@google.com>
|
|
c3755fc5
|
2018-04-05T08:39:13
|
|
Vulkan: Move Streaming data to VertexArrayVk.
Instead of the ContextVk owning the translations for the various
attributes, make the VertexArrayVk own them. This way they can
handle the dirty bit state notifications directly instead of
needing their own Observers.
Bug: angleproject:2389
Change-Id: I5e571ba6c563e820a4c0d5f92db35031e6f2428a
Reviewed-on: https://chromium-review.googlesource.com/989258
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
f3614370
|
2018-03-31T14:19:14
|
|
Vulkan: Rename StreamingBuffer to DynamicBuffer.
This makes it consistent with DynamicDescriptorPool, and gives a bit
more precise definition.
Bug: angleproject:2318
Change-Id: I8953113165ebe2d0dcfc0fc923d94280180442ce
Reviewed-on: https://chromium-review.googlesource.com/985199
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Luc Ferron <lucferron@chromium.org>
|
|
32fd63bc
|
2018-03-31T11:20:35
|
|
Vulkan: Use DrawCallParams in draw methods.
This cleans up some of the vertex streaming logic.
Bug: angleproject:2389
Change-Id: I8ed2f8acd06bbdd97db40acac35e5692112a3efe
Reviewed-on: https://chromium-review.googlesource.com/989257
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
0946393d
|
2018-04-04T05:26:59
|
|
Move Buffer Subject/Observer to front end.
This makes BufferImpl into an Observer Subject. It also refactors
the Vertex Array updates for the D3D11 backend use more of a dirty
bit coding style.
This change makes it so Buffer contents changes trigger front-end
dirty bits from the back-end, which may be undesirable.
Bug: angleproject:2389
Change-Id: Iac8ce1171284a86851c18cd1373ddf24fcefe40b
Reviewed-on: https://chromium-review.googlesource.com/979812
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
5d232d53
|
2018-04-01T19:57:19
|
|
Fix conditions for updating element array buffer.
It was skipping elementArrayBufferOverride->onReadResource()
if mCurrentElementArrayBufferResource was null.
BUG=angleproject:2389
Change-Id: If33a11d35225daf572796abc8c18f6d6df758b48
Reviewed-on: https://chromium-review.googlesource.com/989408
Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Luc Ferron <lucferron@chromium.org>
|
|
0af5b86a
|
2018-03-27T20:19:33
|
|
Return gl::Error from VertexArray::syncState().
No functional change.
When we add vertex data format conversion to Vulkan we will need to be
able to return an error from VertexArray::syncState().
BUG=angleproject:2405
Change-Id: I4b537946ecbb6593280b6510c5cd8d8e3c65e8dd
Reviewed-on: https://chromium-review.googlesource.com/982897
Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Luc Ferron <lucferron@chromium.org>
|
|
e858cb1d
|
2018-03-27T09:44:32
|
|
Split VAO dirty bits to speed iteration.
Using > 64 bits (we had over 90) would use a much slower dirty bit
iteration. Speed this up by splitting the dirty bits into two levels.
The first top level only has a single dirty bit per attrib, per
binding, and one bit for the element array buffer. The next level has
separate dirty bits for attribs and bindings.
The D3D11 back-end doesn't actually care about individual dirty bits
of attribs or bindings, since it resets entire attributes at a time,
but the GL back-end only refreshes the necessary info.
Improves the score of a simple state change microbenchmark by 15% on
the D3D11 and GL back-ends with a no-op driver. Real-world impact will
be smaller.
Also includes a test suppression for an NVIDIA bug that surfaced when
we changed the order of that GL commands were sent to the driver.
BUG=angleproject:2389
Change-Id: If8d5e5eb0b27e2a77e20535e33626183d372d311
Reviewed-on: https://chromium-review.googlesource.com/556799
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
7a06ac1b
|
2018-03-15T10:17:04
|
|
Vulkan: Dynamic update of uniforms
- This change enables us to update uniforms indefintely using
VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC descriptor types.
- Enables 219 new dEQP tests in the uniform_api namespace.
- Creates a new white box test to validate new buffer allocation.
Bug: angleproject:2392
Change-Id: I8146e6104a6b7727f63265a4671577d251a8fca8
Reviewed-on: https://chromium-review.googlesource.com/965929
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
e3dc5dd0
|
2018-03-16T07:37:21
|
|
Vulkan: Add 2 features to StreamingBuffer
This is prerequisite work to dynamic uniform buffer updates.
1- Alignment parameter to be able to allocate by chunks of this
alignment.
2- Out boolean to indicate if a new VkBuffer has been assigned
on the allocate operation.
Bug:angleproject:2392
Change-Id: If346e13200455febbe78045e908ae89c9dc93cdb
Reviewed-on: https://chromium-review.googlesource.com/965612
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
a53d0e18
|
2018-02-13T00:06:06
|
|
Vulkan: support indices in client memory.
glDrawElements will now work with indices and/or vertex data in client memory,
as well as in a buffer object.
Enable corresponding tests.
BUG=angleproject:1683
Change-Id: Iefb9796a48b21ed6f9a837b08b0ad3218ff6dd6b
Reviewed-on: https://chromium-review.googlesource.com/915721
Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
6dd4a92a
|
2018-03-02T16:35:13
|
|
Vulkan: track attributes in client memory.
To support indexed draws it's useful to have a cheap query for the
presence of vertex attribute data in client memory.
This patch adds a bit mask to keep track of such attributes.
It also lets us simplify VertexArrayVk::streamVertexData() slightly.
BUG=angleproject:1683
Change-Id: I871bfb885112650b025e110c383db3c391eafb90
Reviewed-on: https://chromium-review.googlesource.com/947927
Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Jamie Madill <jmadill@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>
|
|
a8e868f2
|
2018-01-28T23:32:25
|
|
Vulkan: use correct vertex stride.
It was passing the attribute size, not the stride, so it worked only
when they were the same.
Enable corresponding tests.
BUG=angleproject:2310
Change-Id: Ie3ab13567c16c302aa9aeda5d059e5fd4eb92b4e
Reviewed-on: https://chromium-review.googlesource.com/875304
Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Jamie Madill <jmadill@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>
|
|
17448956
|
2017-01-05T15:48:26
|
|
Vulkan: vertex attributes in client memory.
Support vertex data stored in client memory passed to glVertexAttribPointer.
Only GL_FLOAT data is supported at this time. Includes a simple test.
BUG=angleproject:1683
Change-Id: I3bc0cdefe02b02c046b0e85822019a0f1762235e
Reviewed-on: https://chromium-review.googlesource.com/425137
Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: 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>
|
|
efb5a5c8
|
2018-01-29T15:56:59
|
|
Vulkan: Fix swaps done right after a clear.
We were missing a dependency insertion between the Framebuffer and
its attachments, only during clear operations. Also renames a few
methods to make them more consistent.
Bug: angleproject:2264
Change-Id: Ic3af5b34b6de900ea2cc1b765f8d3d69f7f9a131
Reviewed-on: https://chromium-review.googlesource.com/891985
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
ffa4cbb6
|
2018-01-23T13:04:07
|
|
Vulkan: Implement the Pipeline cache.
This currently keeps a cache of every PSO compiled and does not trim
the cache or evict old members on memory pressure. This will be done
as a follow-up.
Improves the speed of the Draw Call microbenchmark 50x when using a
single state change.
Bug: angleproject:2163
Change-Id: I2cceb38ca57ae639f36a944f4571b627481b92da
Reviewed-on: https://chromium-review.googlesource.com/876954
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
112a3a8e
|
2018-01-23T13:04:06
|
|
Vulkan: De-couple Program from VertexArrayVk dirtyiness.
The VertexArrayVk is responsible for filling out the packed shader
input info in ANGLE's packed PipelineDesc info structure. This
packed info structure is used for Pipeline init and caching lookup.
The prior design had this info depend on the active inputs in the
current Program. This was undesirable because then, on a Program
change, the ContextVk would have to call into the VertexArrayVk
to invalidate this info.
Instead, keep a working copy of the VertexArrayVk bits and only
update the bits corresponding to dirty vertex attributes. This
simplifies the cached state management a little bit for ContextVk.
This also means we don't have to update the cached copy in the
VertexArray on a change in VertexArray binding.
Bug: angleproject:2163
Change-Id: I5ba74535367aed74957d17bdc61f882508562d0e
Reviewed-on: https://chromium-review.googlesource.com/881703
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
|
|
3c424b48
|
2018-01-19T12:35:09
|
|
Vulkan: Add vk_cache_utils.h.
This file contains the Pipeline and RenderPass cache utils.
Also renames renderervk_utils.h to vk_utils.h and the format utils
file.
Refactoring change only.
Bug: angleproject:2163
Change-Id: I5113a9a2c6f0b0960d38e6c2d8e391fa2d9f5f6a
Reviewed-on: https://chromium-review.googlesource.com/876505
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
f2f6d379
|
2018-01-10T21:37:23
|
|
Vulkan: Add PipelineDesc.
The PipelineDesc class is a 512-byte packed description of the entire
Vulkan pipeline state. It uses the alignas keyword and some static
asserts to verify that the structures are packed. This ensures that
when ANGLE uses MurmurHash to hash the entire struct, and memcmp to
check for identity, that there are no garbage padding bits.
This CL does not implement the Pipeline cache, but it will help, since
now we have a packed type that can be used as the key to a hash map.
Bug: angleproject:2163
Change-Id: I16efa927f08d30d89a9c4c8943edd211c6878ac8
Reviewed-on: https://chromium-review.googlesource.com/829893
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@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>
|
|
da854a27
|
2017-11-30T17:24:21
|
|
Vulkan: Clean up VAO cached resources.
We can actually store a pointer to the base ResourceVk instead of
BufferVk for updating serials. This will work a little nicer with
streaming vertex data, which won't have a BufferVk but will have an
accessible ResourceVk pointer.
Also add an element array resource pointer for serial update. This was
missing and could lead to incorrect behaviour. Also change the types
of the caches from std::vector to gl::AttribArray, which is a
std::array.
Bug: angleproject:2264
Change-Id: Ibd79b7676b5dbc3875ae9d110be477d228e01c5c
Reviewed-on: https://chromium-review.googlesource.com/798170
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@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>
|
|
e1f3ad4d
|
2017-10-28T23:00:42
|
|
Vulkan: Add vk::GetImpl helper.
Using reflection helpers, we can avoid having to pass the return
type to the GetImpl method.
BUG=angleproject:2200
Change-Id: Id160fbdf0ea8b3de2f219d3cc92394c678189a48
Reviewed-on: https://chromium-review.googlesource.com/742371
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
ebf7299e
|
2017-10-13T14:09:45
|
|
Vulkan: Minimal dirty bits for ContextVk.
Currently this won't speed up performance much, if at all, since we
don't even really support state changes. It sets the stage for using
a pipeline cache later, with better state change support. It also
makes implementing descriptor sets for Textures a bit simpler, since
we can just update descriptor sets when the dirty bits tell us of a
Texture change.
Add cache structures to VertexArrayVk and ContextVk so we only need
to update the structures before we create a new pipeline. When we
support pipeline caching, we will most likely be updating a compact
representation for fast cache query.
BUG=angleproject:1898
BUG=angleproject:2167
Change-Id: Id545f2c67c06d8b6e8b7eb63ca70464f6b9a51f6
Reviewed-on: https://chromium-review.googlesource.com/713586
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
|
|
bd159f06
|
2017-10-09T19:39:06
|
|
Vulkan: Use minimal dirty bits in VertexArrayVk.
This should slightly reduce draw call overhead.
BUG=angleproject:1898
Change-Id: I0e515bf2868f237f1d6948c12942f8cb6637c0c0
Reviewed-on: https://chromium-review.googlesource.com/707690
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
492f58ec
|
2017-10-09T19:41:33
|
|
Rename VertexArrayImpl::mData to mState.
Refactoring change only.
BUG=angleproject:1898
Change-Id: I9f55651f923ff930c395a9bb575b4f86ad5d9cbd
Reviewed-on: https://chromium-review.googlesource.com/707689
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
4928b7ca
|
2017-06-20T12:57:39
|
|
Proliferate gl::Context everywhere.
This gives the D3D back-end access to the GL state almost anywhere.
This uses the onDestroy hook for Textures to push errors up from
destructors, although they still don't quite make it to the Context.
There are places, such as in EGL object (Context/Surface) destruction,
where we end up calling through to GL implementation internals without
having access to a gl::Context. We handle this via a proxy Context
to a Display, basically a null context, that has access to impl-side
state like the Renderer pointer if necessary. It does not have access
to the normal GL state.
Also Pass gl::Context to RefCountObject::release(). Since we're using
destroy() methods now, we should not ever call the destructor directly.
BUG=angleproject:1156
Change-Id: Ie4c32ad6bf6caaff0289901f30b5c6bafa2ce259
Reviewed-on: https://chromium-review.googlesource.com/529707
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@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>
|
|
72106562
|
2017-03-24T14:18:50
|
|
Vulkan: Only re-create pipeline on state change.
This speeds up the simple perf test, but it is a very simple
optimization that does not have a cache of pipelines or anything
sophisticated.
BUG=angleproject:1898
Change-Id: Iec126bc73bf28f8bb33662a2f70670588f010d72
Reviewed-on: https://chromium-review.googlesource.com/444850
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
dd43e6cd
|
2017-03-24T14:18:49
|
|
Pass Context to VertexArray and Framebuffer syncstate.
This will enable more Vulkan-friendly idioms like clearing the
vulkan pipeline caches correctly on GL state changes immediately
because we have access to the ContextVk.
BUG=angleproject:1898
Change-Id: I16c848d8abdde8e26a38d384e565cec8548a66d0
Reviewed-on: https://chromium-review.googlesource.com/459079
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>
|