|
76bd848c
|
2019-02-13T13:00:44
|
|
Vulkan: Support ETC, S3TC and BPTC compressed textures
Fixes the format table so the correct Vulkan format for the types are
generated. Additionally, implements CHROMIUM_copy_compressed_texture as
well as other functions relevant to initializing compressed textures.
Bug: angleproject:2670, angleproject:2904
Change-Id: I682d36574262525027cddf8f329515f38cd77dc0
Reviewed-on: https://chromium-review.googlesource.com/c/1468048
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@google.com>
|
|
009696c5
|
2019-01-31T14:47:07
|
|
Vulkan: Support EGL_ANDROID_image_native_buffer on Android.
BUG=angleproject:2668
BUG=angleproject:3121
Change-Id: I0dfb2ec0737ebd963b0fadb78cf720a90874f00b
Reviewed-on: https://chromium-review.googlesource.com/c/1452264
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@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>
|
|
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>
|
|
96bd8fdf
|
2018-11-30T14:30:18
|
|
Vulkan: Fix format properties queries
When querying format properties (in vk::GetFormatProperties), the
mandatory feature support table was consulted to check whether a number
of texture features are present. If so, the entry from that table was
returned. The goal had been to speed up initialization by not issuing
device queries if possible.
That is, when vk::GetFormatProperties was called on a format, if it
supported that select few texture features, the VkFormatProperties entry
from the mandatory table would be returned.
However, that function found its way to other uses (such as querying
buffer format properties, or other image properties beyond the select
few). As a result, when the VkFormatProperties from the mandatory table
was returned, actual support for these other features was often not
tested and assumed false (unless they happened to be mandatory as well).
This commit reworks the format feature query functions such that the
specific features to be tested are provided when querying the format
properties. The mandatory table is consulted as before, and if the
entry doesn't contain those features, the device is queried and the
results cached.
Bug: angleproject:2958
Change-Id: I28d046eb63c3bd5173468aa4cb3e4c63c83e67b1
Reviewed-on: https://chromium-review.googlesource.com/c/1357152
Reviewed-by: Tobin Ehlis <tobine@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
092481ad
|
2018-11-08T00:25:50
|
|
Vulkan: prepare for ES3
This makes ES3_VULKAN() pass the instantiability test, allowing it to be
specified in end2end tests.
Bug: angleproject:2950
Change-Id: Ife70a22fb8193f9eebe64bec491a24b47bc76939
Reviewed-on: https://chromium-review.googlesource.com/c/1325729
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: 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>
|
|
115e8a26
|
2018-09-26T07:51:30
|
|
Vulkan: Store "is packed" in buffer formats.
This more easily allows us to compute the format alignment for use with
the vertex input stage.
Bug: angleproject:2797
Change-Id: If15281ce18fbed743b6a0c843cece4626bc4ce72
Reviewed-on: https://chromium-review.googlesource.com/1245841
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Jie A Chen <jie.a.chen@intel.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
3b1fe64f
|
2018-09-04T13:15:35
|
|
Vulkan: allow a list of fallback formats.
Allow a list of fallback formats as well as a single one in the format
map. The first supported format is used. No functional change.
BUG=angleproject:2655
Change-Id: Ica312b7899471a7a65184a6921713b79da056f31
Reviewed-on: https://chromium-review.googlesource.com/1214847
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
ba365939
|
2018-07-18T17:23:46
|
|
Rename angle::Format::ID to angle::FormatID.
This allow for predeclaring the enum. It solves some include dependency
issues.
Bug: angleproject:2729
Change-Id: Ibbbab0796e466c62848404ba277c5f454fd9ac62
Reviewed-on: https://chromium-review.googlesource.com/1142299
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
419acc8f
|
2018-06-24T19:57:31
|
|
Vulkan: Convert streamed vertex data as needed.
Add two members to vk::Format:
- vertex data copy function
- flag indicating if the function converts or not
Use the function when streaming vertex data so it gets converted if needed.
Add fallbacks for integer formats. These formats will now work everywhere,
as long as they are in client memory, not a buffer object.
Adjust test expectations accordingly.
BUG=angleproject:2405
Change-Id: I677221219d933c35740633a0ab7694293e218177
Reviewed-on: https://chromium-review.googlesource.com/1084328
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
d9618bf4
|
2018-06-24T19:57:31
|
|
Vulkan: prepare for buffer format fallbacks.
Generate code for buffer fallbacks as well as texture fallbacks.
No functional change.
BUG=angleproject:2405
Change-Id: I9f30a2cbb3cd9ba1d18474f99cba434b030b0232
Reviewed-on: https://chromium-review.googlesource.com/1113026
Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
2ad498eb
|
2018-06-20T13:19:01
|
|
Vulkan: get vertex formats from format table.
Use the Vulkan format table to look up the Vulkan format for vertex data.
This will let us support more vertex formats by adding them to the table.
It also eliminates one usage of gl::VertexFormatType.
No functional change.
BUG=angleproject:2405
BUG=angleproject:2531
Change-Id: I73eb69ccac50d427de3e7d5479f92bb17c49aed3
Reviewed-on: https://chromium-review.googlesource.com/1051028
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Luc Ferron <lucferron@chromium.org>
Commit-Queue: Frank Henigman <fjhenigman@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>
|
|
05cd6dfc
|
2018-05-24T15:51:29
|
|
Vulkan: generateMipmaps with vkCmdBlitImage when possible
Bug: angleproject:2502
Change-Id: Ib32a128a453749c59d751e996017a8a6e2a9972e
Reviewed-on: https://chromium-review.googlesource.com/1072550
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Luc Ferron <lucferron@chromium.org>
|
|
c4f27e4b
|
2018-03-31T14:19:18
|
|
Texture: Pass ImageIndex to relevant methods.
The Vulkan back-end will be using this helper struct, so make it
available everywhere. This cleans up a lot of the code for D3D.
Potentially in the future we could generate these in the entry
points if we supported packing multiple arguments into one.
Also changes a few parameter types to GLint for compatibility.
Also updates the Vulkan Texture implementation check the stored
vk::Format on setImage changes.
Bug: angleproject:2318
Change-Id: I57cea4a42483ab51859229517d783b58f206b8e7
Reviewed-on: https://chromium-review.googlesource.com/985203
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Luc Ferron <lucferron@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>
|
|
0aa1ffe3
|
2018-02-08T13:42:36
|
|
Vulkan: Autogen mandatory texture caps
* This commit includes a JS file to execute on the spec and
generate the JSON output of all the mandatory texture caps.
Bug: angleproject:2348
Change-Id: I57e969915bdd0e7104e00a73fd3743ff1ecf0a6d
Reviewed-on: https://chromium-review.googlesource.com/911615
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
d50537a7
|
2018-02-07T17:02:08
|
|
Vulkan: Texture caps map
We are generating the caps map using various bits from the results of
vkGetPhysicalDeviceFormatProperties. This contains all the information
required to fill out "renderable", "texturable" and "filterable".
Later we'll need to read from vkGetPhysicalDeviceImageFormatProperties as
well to get the sampleCounts.
The tests for now are not very meaningful since they use the same logic
as the caps code to build the expected results, however as soon as we'll
add the hard-coded list of mandatory texture caps, the test will be a good
validator that we are not breaking anything.
We only check the optimal set of flags since it is the most restrictive
set.
isTexturable = flags contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
isFilterable = flags contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
isRenderable = flags contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT OR
VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT
Bug: angleproject:2348
Change-Id: I9da0712190d2678d7e377d6fcd4ca83d23eefd38
Reviewed-on: https://chromium-review.googlesource.com/908712
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Geoff Lang <geofflang@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>
|