|
f0b02054
|
2020-08-06T20:55:05
|
|
Add a Vulkan feature to compress float32 vertex formats.
Use the vertex conversion pipeline in VertexArrayVk to detect
static vertex data and convert float32 vertices to float16. This
feature is useful for determining if an allication is vertex
bandwidth bound and seeing what gains could be had by using smaller
attributes.
This feature could be implemented in ANGLE's frontend but new
infrastructure for converting and storing the converted attributes
would need to be added to gl::VertexArray. Our backends already
have the functionality needed to handle unsupported attribute formats
and this can be repurposed for compressing vertex formats.
Bug: b/167404532
Bug: b/161716126
Change-Id: I9a09656a72e8499faa4124adf876d7261c8341c9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2342285
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
f61272fb
|
2020-06-17T11:38:37
|
|
Add support for VK_KHR_sampler_ycbcr_conversion
This adds ability for applications to import Android Hardware Buffers
(AHBs) as OpenGL images which in turn can be sampled from and/or
written.
This was specifically tested with the common use case of importing a
buffer created by an media decoder and using that as a texture source to
include that video content on the screen. Tested with:
- Angry Birds 2 video player (for ads) requires YUV conversion.
- Basic Media Decoder example:
https://github.com/android/media-samples/tree/master/BasicMediaDecoder
Bug: b/155487768
Change-Id: I9255450f81aa4daa2aace7205d4f6c3f225abcca
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2175103
Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
cb2b5136
|
2020-01-10T11:04:38
|
|
Vulkan: Simplify format table generation
Remove the "override" table. That gets in the way of some solutions.
If a format cannot be supported by a native Vulkan format as indicated
in the "map" table, then check fallbacks.
Also add support for native RGBA4 and R5G5B5A1 support. Previously
those formats would be emulated with RGBA8 due to the override, but
now code will check if the native format is available and use it.
Bug: angleproject:4282
Change-Id: Ib33ea40543d91a2c2a95075b277f825a8822037c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1994538
Reviewed-by: Tobin Ehlis <tobine@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
f567bac0
|
2019-12-20T09:29:35
|
|
Vulkan: Add fallback for D32_UNORM for Swiftshader
Swiftshader does not have support for D24_S8 (typical fallback for
32bit DEPTH_COMPONENTS) but does have D32_FLOAT, so add fallback to
that format. This then allows ANGLE to support OES_depth_texture
extension when using Swiftshader which is needed to allow Vulkan
swiftshader to replace GL swiftshader.
Bug: angleproject:4232
Change-Id: Iaf04fcf0bea8d9cca0b9e7a18e3351ce8c704355
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1986413
Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Tobin Ehlis <tobine@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
beacd8c8
|
2019-10-17T14:34:02
|
|
Vulkan: Rename format fields.
Renames 'angleFormat' to 'intendedFormat'. Also renames 'bufferFormat'
and 'imageFormat' to 'actualImageFormat' and 'actualBufferFormat'. This
renaming should make it clearer to the reader what the meaning of the
different format fields are. Intended format is the front-end format
and the actual formats are the formats we pass to Vulkan. Also updates
the documentation.
Bug: angleproject:4009
Change-Id: If61bf7250e88f7ed3d452718574c963d718e27b2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1866077
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
8400d05c
|
2019-08-07T14:52:54
|
|
Vulkan: Support the vertex_type_2_10_10_10_rev format
- Modify the python script and json file to generate the code which
adds the function for vertex_type_2_10_10_10_rev. These functions
handle the loading and conversion for vertex_type_2_10_10_10_rev.
- Modify ConvertVertex.comp and ConvertVertex.comp.json to perform
a GPU based conversion for vertex format of type 2_10_10_10_rev
- Modify BindingIsAligned function to check that both stride and
binding offset is aligned to the format size when the component
size is not aligned to 8 bits.
- Modify deqp3 expectations file to enable type_2_10_10_10_rev format
vertex array tests.
Bug: angleproject:3193
Test: dEQP-GLES3.functional.vertex_arrays.single_attribute.*2_10_10_10*
Change-Id: I2358d0d8888f7dfd7eac999dc150f643167de817
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1709035
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
765ee7b7
|
2019-06-19T14:19:52
|
|
Vulkan: support for new vertex attribs in GLES 3.0
Fixes handling of packed vertex formats, adds new overrides for 32-bit
[SU](NORM|SCALED) vertex types, and handles half-precision floats
correctly.
Pixel 2 does not natively support certain 10-10-10-2 vertex formats;
this change does not add support for them.
Test: ./angle_deqp_gles3_no_gtest --deqp-egl-display-type=angle-vulkan -n 'dEQP-GLES3.functional.vertex_arrays.*'
Test: ./angle_end2end_tests --gtest_filter='AttributeLayout*/ES3_Vulkan'
Test: ./angle_end2end_tests --gtest_filter='VertexAttribute*/ES3_Vulkan'
Bug: angleproject:3193
Change-Id: I5ae4edd743e86e3e89e2697034c04dc4d9ecd1f9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1668230
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: James Dong <dongja@google.com>
|
|
c5c937e1
|
2019-06-19T16:20:57
|
|
Vulkan: Support R11G11B10_FLOAT and R9G9B9E5_SHAREDEXP
The keys in vk_format_map.json were incorrect. The format table
generation script is enhanced to give an error in such a case. This
revealed a number of entries with no corresponding angle format, which
are also removed.
Bug: angleproject:2898
Bug: angleproject:3190
Change-Id: I32caf2d2a8abb6f76b25436725670a8e84d576fb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1666700
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
d7d42395
|
2019-05-06T13:15:35
|
|
Format all of ANGLE's python code.
BUG=angleproject:3421
Change-Id: I1d7282ac513c046de5d8ed87f7789290780d30a6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1595440
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
0631e19b
|
2019-04-18T16:09:12
|
|
Vulkan: Rename Vulkan "Texture" format to "Image"
Also adds some comments to vk_format_utils.h.
Bug: angleproject:3372
Change-Id: I529b9b189e4cdfd400c3c981a47139727d9954ab
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1565062
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
0f34f3f2
|
2019-03-11T10:18:57
|
|
Use auto_script in run_code_generation.
Cleans up the generator scripts to prepare for listing outputs in the
generated hashes file. Also reorganizes the scripts somewhat to make
them a bit more maintainable.
Bug: angleproject:3227
Change-Id: If40946c2004941d3f6cd51d5521c7db8cc0b52df
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1512052
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: 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>
|
|
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>
|
|
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>
|
|
7b5fc46b
|
2018-03-09T15:54:33
|
|
Vulkan: Add Vk format overrides table.
This generalizes the overriding mechanism in gen_Vk_format_table.py.
Instead of defining overrides inline, we keep the vk_format_map as a
1:1 mapping from angle format to vk format, and use the overrides map
to specify any additional emulation or features we need to support
OpenGL textures on Vulkan.
This will simplify the implementation for Depth/Stencil formats by
making the generator script a bit easier to work with.
No code changes, generator script refactor only.
Bug: angleproject:2357
Change-Id: I7132d991795eb91d6ad838481c52545c891215bc
Reviewed-on: https://chromium-review.googlesource.com/957433
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
|
|
5164b797
|
2018-03-06T09:10:12
|
|
Vulkan: Support GL_LUMINANCE and GL_LUMINANCE_ALPHA
The dEQP tests cannot be turned on before immediate data for drawElements
is supported.
Bug:angleproject:2364
Change-Id: Id5fd6fbc0c74f2dba08341f36ca0091d540f4ed8
Reviewed-on: https://chromium-review.googlesource.com/951402
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Luc Ferron <lucferron@chromium.org>
|
|
1d7be50a
|
2017-10-29T18:06:50
|
|
Vulkan: Upgrade RGB8 textures to RGBA8.
It's unlikely any real hardware supports this format. Hack in a fixed
fallback format for RGB8. We could consider implementing conditional
support by checking the VkPhysicalDevice properties.
This extends the Vulkan format support info in the RendererVk class
to distinguish between a Buffer and Texture format. This is closely
related to how Vulkan has separate format support bits for Linear
Textures, Optimal Textures, and Buffers. We probably won't need to
keep separate caps for Linear/Optimal, but it makes sense for Buffers
to eventually use the same format tables.
BUG=angleproject:2207
Change-Id: I8d427a99db15b314b13dd99f31aa1ac5055f0881
Reviewed-on: https://chromium-review.googlesource.com/742376
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
|
|
6a89d227
|
2017-11-02T11:59:51
|
|
Vulkan: Refactor format table.
This moves the Vulkan format table to dynamically generated, but
keeps it easily indexed. Because Vulkan format support is not able
to be fully determined until runtime, we'll need a dynamic way to
build the table. The most straight-forward way seems to be to keep
a copy of the full table in the Renderer. Initializing it once at
startup makes it a bit slower to init, but saves us from any threading
shenanigans with lazy init when (and if) we ever support multi-
threaded Contexts.
BUG=angleproject:2207
Change-Id: Ib1ac879daa562c7ad1a965390be401fa2314e42c
Reviewed-on: https://chromium-review.googlesource.com/742374
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
abaab233
|
2017-01-10T12:37:37
|
|
Vulkan: Introduce vk::Format.
BUG=angleproject:1319
Change-Id: I88bcc6caa5d29565728848bada1563e47e383b29
Reviewed-on: https://chromium-review.googlesource.com/367753
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|