|
14f4817c
|
2018-04-11T08:43:28
|
|
Vulkan: Simplify viewport / scissor updates
Stop tying the viewport and the scissor together. Instead, we simply
use a very large (0->maxInt) scissor when scissor isn't enabled
and we use the clipped scissor to the renderArea size when its
enabled.
Bug: angleproject:2443
Change-Id: If7454793a050b1833c7d3166ea6b380192085c8f
Reviewed-on: https://chromium-review.googlesource.com/1006996
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
d17bdfe5
|
2018-04-05T13:50:10
|
|
Vulkan: 3 Final bugfixes to enable all dEQP depth_stencil tests
- The scissor when clearing should not be clipped against the viewport.
- The render pass was created with a render area == to the current
viewport, but the viewport can be changed by the tests multiple times
per render pass, so we should always keep the renderArea to the full
framebuffer instead.
- Enables an additional 163 dEQP tests.
- We should clip the scissor to the framebuffer dimensions instead of
the viewport. Its valid to do a cmdClearAttachments outside the
viewport, but not outside the full framebuffer's dimension.
Bug: angleproject:2443
Change-Id: I79168e9f0c782d6dec77470fef938b85ad7a8794
Reviewed-on: https://chromium-review.googlesource.com/998448
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Jamie Madill <jmadill@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>
|
|
dd196e0b
|
2018-04-04T11:41:44
|
|
Vulkan: Implement color mask and depth mask bits
These two features are heavily used in the
functional.depth_stencil_clear.* dEQP tests.
Enable a bunch of color/depth/stencil clear tests, however there is
still 2 tests in particular that are giving me trouble. I will work
on them separately in a subsequent change.
Bug: angleproject:2443
Bug: angleproject:2455
Change-Id: Ic93420c7b525b424e9641f78265e264ddb163ab1
Reviewed-on: https://chromium-review.googlesource.com/996035
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
364a9557
|
2018-03-29T09:44:51
|
|
Vulkan: Implement stencil test support
All the fragment_ops.depth and the fragment_ops.depth tests in dEQP are
now working, but not the fragment_ops.depth_stencil. Still debugging
these separately and will come up with a fix for them in another
commit.
Bug: angleproject:2443
Change-Id: I84c3a22f612fb6dcf30598434f96c2100fd29f9c
Reviewed-on: https://chromium-review.googlesource.com/993654
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
bc54342b
|
2018-03-30T10:43:19
|
|
Vulkan: Make RenderTargetVk use ImageHelper.
Bug: angleproject:2318
Change-Id: I9bc4bb7f5bcd3029a31c8570809f253cf5e4b12a
Reviewed-on: https://chromium-review.googlesource.com/980773
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
|
|
93edca16
|
2018-03-30T10:43:18
|
|
Vulkan: Add an Image helper class.
This class wraps a lot of the common functionality of a vk::Image.
It keeps an associated DeviceMemory and ImageView.
Eventually we can probably merge this class with RenderTargetVk. We
can also use it to implement the same functionality between
Renderbuffer and Texture and abstract different storage types, like
2D and Cube.
Bug: angleproject:2318
Change-Id: I39239f47b483cfb96290a15b06edd264f7f4bb34
Reviewed-on: https://chromium-review.googlesource.com/980772
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
0cec82a5
|
2018-03-14T09:21:07
|
|
Vulkan: Implement basic depth/stencil buffers.
This implements basic depth/stencil states and clearing.
This also implements "fallback" texture formats in the texture
generation. Fallback formats are those that are chosen at runtime for
replacements for main formats which lack driver support. They are
different from override formats, which are always used because we
assume there is no driver support.
The Vulkan spec only asserts that one of the two of D32 or D24 has
mandatory support. In the case of AMD, D24 is not supported fully, and
we need the fallback format support emulation.
Bug: angleproject:2357
Change-Id: Ic86cede3c69ff9893a06b3a55c3b5d2d897fa55f
Reviewed-on: https://chromium-review.googlesource.com/916701
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
|
|
64e5ed2a
|
2018-03-09T16:32:32
|
|
Vulkan: Fix scissor clears + enable dEQP tests
Vulkan does not support receiving out of bounds numbers for the scissor
region but no validation errors are sent. This change clips the region
received to fit the current viewport and it fixes
many dEQP tests.
Bug:angleproject:2356
Change-Id: I5dcf739366ba1f62b56593eaaccedf5f14d0c200
Reviewed-on: https://chromium-review.googlesource.com/957758
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Luc Ferron <lucferron@chromium.org>
|
|
1505c750
|
2018-03-09T11:28:23
|
|
Vulkan: Fix issue in blending factor conversions
The blend factor were not converted correctly from GL enum types to
their VK equivalents. I found this by running many dEQP tests related
to blending.
Bug:angleproject:2346
Change-Id: I3c332bb5e5c44d2bec4ff9d62e0df2421507e136
Reviewed-on: https://chromium-review.googlesource.com/956241
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
5242d5bf
|
2018-02-15T07:14:35
|
|
Vulkan: Implement scissored clears.
Bug: angleproject:2356
Change-Id: I33888f9b4ebaf4b0b5af4ad59b12ad963325a790
Reviewed-on: https://chromium-review.googlesource.com/921882
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
e4c5a23b
|
2018-03-02T21:00:31
|
|
Vulkan: Always use LOAD for RenderPass attachments.
The RenderPass load/store ops allow us to specify how we want to use
the data from the attachments. Previously we had the load op set to
CLEAR always, which would prevent us from doing multiple kinds of
operation. Using LOAD should conversatively work in any situation
as long as we can ensure each Image is cleared before we use it.
To this effect this patch also inserts a preliminary clear into each
Texture or Renderbuffer Image's initialization. We already had this
for Surfaces.
In the future we'll improve this by inserting proper load/store ops,
but this unblocks a lot more functionality in the interim.
Bug: angleproject:2361
Change-Id: I7610eaa39d81b23dd74b4a24b7f28a66a6dfffc6
Reviewed-on: https://chromium-review.googlesource.com/948782
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
f618c9e5
|
2018-02-15T14:45:40
|
|
Vulkan: Add depth/stencil surfaces.
This change lets us create egl::Surfaces from a D24S8 config. This is
a bit hacky, because the spec only mandates 24 -or- 32 bit depth
support, but not both or either individually. Will need follow-up work
for proper EGL config setup.
A single depth buffer is allocated for the entire set of swapchain
images and is used with each. This also might be a problem if we're
rendering to multiple frames at the same time. We'll likely have to
revisit this in the future as well.
This adds a new RenderTargetVk to the SurfaceVk class which points to
the Depth/Stencil image. Since ImageViews must refer to either the
depth or stencil, but not both, we'll need to address this when we
get to implementing depth/stencil texture reads in shaders.
Bug: angleproject:2357
Change-Id: Ibed0eed7e1d0efb272758dbfc79fa2c5aa93997f
Reviewed-on: https://chromium-review.googlesource.com/919761
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
f8be756e
|
2018-02-06T15:59:11
|
|
Vulkan: Implement blend states and add a simple test for it
Bug: angleproject:2346
Change-Id: I462a2cb29ceda5563f48b4a3cc1d0aa20f4a49fc
Reviewed-on: https://chromium-review.googlesource.com/907169
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
00155d58
|
2018-02-06T10:48:47
|
|
Vulkan: Implement scissor test and add a simple test for it
Bug: angleproject:2338
Change-Id: I699189fcd41feca1656c8553fdf4c1078421524d
Reviewed-on: https://chromium-review.googlesource.com/904861
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
ceb7190b
|
2018-02-05T15:18:47
|
|
Vulkan: Fix bug in reuse of vertex input bindings
Fix bug that used previously used vertex bindings. Now we
use the current program mask to only initialize the vulkan
pipeline with the active vertex input bindings.
+ adjust dEQP expectations
Bug: angleproject:2334
Change-Id: Ie6176eee99f87dc7a95f664d28e8312b9cb274bc
Reviewed-on: https://chromium-review.googlesource.com/902434
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Luc Ferron <lucferron@chromium.org>
|
|
5dd4ad89
|
2018-01-29T13:53:43
|
|
Vulkan: Add a perf test for the Pipeline cache.
This micro-benchmark can be used to measure the performance impact
of changing the Pipeline cache. For instance, we can check if changing
the size of the hash key affects performance significantly.
Also updates the build files so angle_perftests can see vulkan.h, and
makes the Vulkan headers an explicit source set.
This test currently shows that a lot of time is spent in PMurmurHash,
with some time also spent in memcmp.
Bug: angleproject:2163
Change-Id: Ie8bb3e31d58590f373d28cbbb59f7e372b80cc29
Reviewed-on: https://chromium-review.googlesource.com/884882
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@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>
|