|
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>
|
|
9e2953c2
|
2020-09-23T07:57:22
|
|
Vulkan: Enable OES_texture_storage_multisample_2d_array
The implementation for OES_texture_storage_multisample_2d_array
already exists. This patch just enables the appropriate capability flag
only if the underlying Vulkan ICD supports standardSampleLocations
Bug: angleproject:3583
Tests: angle_end2end_tests
--gtest_filter="*TextureMultisampleArrayWebGLTest*Vulkan"
dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample_array.*
dEQP-GLES31.functional.state_query.texture_level.texture_2d_multisample_array.*
Change-Id: I2ea89041d9aa8c7d94c9ba732f12528c809807ac
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2416979
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
|
|
84bd9dad
|
2020-08-26T22:01:44
|
|
Vulkan: Allow pbuffer usage if no window support
Vulkan allows rendering to non-swapchain images, so pbuffers can always
be supported on every config. With this change, if the window system
does not support a configuration, EGL_WINDOW_BIT is removed from the
config instead of dropping the config entirely.
Bug: chromium:1034840
Change-Id: Ib972ed8ddf7660c327123fa83ae0674456cf2a35
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2378921
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: back sept 10 - Jamie Madill <jmadill@chromium.org>
|
|
7e815c77
|
2020-07-08T13:43:40
|
|
Implement EXT_shadow_samplers
Bug: angleproject:4863,b/161716126
Change-Id: I6beb45d91f59a851787c9f40b40266fb985198d5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2288330
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: back sept 10 - Jamie Madill <jmadill@chromium.org>
|
|
1dcb3eb2
|
2020-08-06T15:02:34
|
|
Vulkan: Don't expose MSRTT on Mac/SwiftShader
Frequently causes failures as such:
[...:ERROR:drawing_buffer.cc(854)] Initialization failed to allocate backbuffer.
[...:INFO:CONSOLE(197)] "Unable to initialize webgl context.", source: (197)
Bug: chromium:1112986
Bug: angleproject:4937
Change-Id: I5058f78434c0ac49345fe1167043f2dca759b1b9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2341350
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
fc4bd898
|
2020-08-03T16:29:06
|
|
Vulkan: Support ANGLE_external_objects_flags
With this extension, it is possible to import Vulkan images into ANGLE
(similar to EXT_external_objects) while specifying the Vulkan create and
usage flags used to create that image. This can be used by the
application to drop usage flags it does not need to improve performance,
or add create flags as it requires.
Bug: angleproject:4912
Bug: fuchsia:52759
Change-Id: Ia568973b19670999dd0e69f6ac5548e8ef0c3eec
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2335020
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Michael Spang <spang@chromium.org>
|
|
f776eb9c
|
2020-08-01T23:45:24
|
|
Vulkan: EXT_multisampled_render_to_texture2 support
The previous change that implemented EXT_multisampled_render_to_texture
already provisioned this extension in the Vulkan backend. This change
implements the front-end for this extension and enables it in the Vulkan
backend.
Bug: angleproject:4836
Change-Id: I7080260972e61727c5716051c236f635668cb67b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2330510
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
|
|
dcc56215
|
2020-07-19T01:12:09
|
|
Vulkan: Implement GL_EXT_multisampled_render_to_texture
This change allows the use of resolve attachments in the Vulkan backend.
GL_EXT_multisampled_render_to_texture is implemented using this feature.
The infrastructure for specifying resolve attachments is designed with
eventual support for GL_EXT_multisampled_render_to_texture2 in mind as
well as optimizations to glBlitFramebuffer() and multisampled
backbuffers.
Proper support for glRenderbufferStorageMultisampledEXT is still missing
from this change. All tests use this for the depth/stencil attachment
and don't read back the data. Currently, the depth/stencil attachment
is created as a normal multisampled image.
Bug: angleproject:4836
Change-Id: I110a7f63312ae61a657b6094adf7d97c92bd5843
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2304170
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
3f851efa
|
2020-07-24T14:54:37
|
|
Vulkan: Fix overflow in maxCombinedUniformComponents
The value is capped to INT_MAX to avoid overflow when queried with
glGetIntegerv().
Bug: angleproject:4554
Bug: angleproject:4788
Change-Id: I36d52fc608ef5adc2bc0b73e379db66cbfd9bb54
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2318046
Reviewed-by: Mohan Maiya <m.maiya@samsung.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
16856027
|
2020-07-08T13:47:33
|
|
Support EXT_shader_texture_lod on Vulkan.
Bug: angleproject:2899,b/161716126
Change-Id: Ia850cbda948c8f6da9ced0bf46fd7f8371125032
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2288333
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
92ffd40e
|
2020-07-08T18:25:55
|
|
Vulkan: Disable GL_EXT_robustness extension on Mali
Vulkan doesn't have a mapping extension to
GL_EXT_robustness, so we need to disable it.
Bug: angleproject:4823
Change-Id: If7b66c0eb7ba14b9349925af64ec2efcec9985a4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2287092
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
5474304a
|
2020-06-24T11:29:58
|
|
Vulkan: Handle overflow in maxCombinedUniformComponents computation
Certain vendors support large number of uniform buffer components.
The calculation of maxCombinedUniformComponents overflows when
captured in a 32bit lvalue. Update it to a 64bit variable.
Bug: angleproject:4788
Tests: dEQP-GLES3.functional.state_query.integers64.max_combined*
Change-Id: I355910218c56347c98a5dfa7359b00be7b40871a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2264849
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
e7ae237e
|
2020-06-12T23:52:09
|
|
Vulkan: ANGLE_copy_texture_3d support
Bug: angleproject:4748
Test: CopyTexImage*Vulkan:Texture3DCopy*Vulkan:Texture2DArrayCopy*Vulkan
Test: dEQP.KHR_GLES3/copy_tex_image_conversions_required_cubemap*cubemap*
Change-Id: Ifdc3d455ca8c9e732d0adf4afa9e2809d780ae18
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2246320
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
340da145
|
2020-06-16T10:58:47
|
|
Vulkan: Disable 1xMSAA on integer formats too
This was pending swiftshader support for 4xMSAA support for integer
formats, which is long done.
Bug: angleproject:4197
Change-Id: I843a9674e20a48b5387bd67b8c0efc8617841382
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2248198
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Ian Elliott <ianelliott@google.com>
|
|
4f343f3e
|
2020-05-13T14:11:51
|
|
Reland "Add support for GL_CHROMIUM_texture_filtering"
This is a reland of 38780ae3921d2570316119a881adfb9520e7e296 modulo the
changes to disable VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT, as
this was causing problems. With this landed, the extension will not work
on SwiftShader until we find a way to allow this extension through the
validation layers.
Bug: b/146423360
Bug: b/154620295
Change-Id: Ie09fc507c01a47be3bb227bc78771660170ba5d3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2199639
Commit-Queue: Antonio Maiorano <amaiorano@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
8f6d1af9
|
2020-03-19T14:35:48
|
|
Vulkan: Implement EXT_texture_format_sRGB_override
Implemented support for EXT_texture_format_sRGB_override
This is done by creating new imageviews for textures with sRGB
overridden that reinterpret the format to its sRGB counterpart.
As preparation for this, textures that use this feature are
reallocated with VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT. This will
have a performance cost for textures that use this feature, but
should have no performance cost for regular textures, since they
will not have this bit set.
Bug: angleproject:4561
Test: angle_end2end_tests --gtest_filter=SRGBTextureTest.*Vulkan*
Change-Id: Iba25f1f2b0a7227959c1cb4ba6e3ca8311c20d06
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2152145
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
3b82fdcf
|
2020-05-12T23:44:07
|
|
Revert "Add support for GL_CHROMIUM_texture_filtering"
This reverts commit 38780ae3921d2570316119a881adfb9520e7e296.
Reason for revert:
Breaks SWANGLE-VK:
05-12 23:42:28.612 22836 22861 D libEGL : dlopen_ext from APK (libEGL_angle.so) success at 0x79f4485a10
05-12 23:42:28.617 22836 22861 D libEGL : dlopen_ext from APK (libGLESv1_CM_angle.so) success at 0x79f4485eb0
05-12 23:42:28.619 22836 22861 D libEGL : dlopen_ext from APK (libGLESv2_angle.so) success at 0x79f4485c60
05-12 23:42:28.624 14223 14223 D StatusBar: disable<e i a s b h r c s > disable2<q i n >
05-12 23:42:28.633 14014 14057 V DisplayPowerController: Brightness [0.19986142] reason changing to: 'automatic', previous reason: 'automatic [ dim ]'.
05-12 23:42:28.635 22836 22861 D vulkan : searching for layers in '/data/app/~~0AfWfBsFEO78tqKlnanevg==/org.khronos.gl_cts-NOs3SGclHqlbcqe-08gHrw==/lib/arm64'
05-12 23:42:28.635 22836 22861 D vulkan : searching for layers in '/data/app/~~0AfWfBsFEO78tqKlnanevg==/org.khronos.gl_cts-NOs3SGclHqlbcqe-08gHrw==/base.apk!/lib/arm64-v8a'
05-12 23:42:28.632 22836 22836 W .khronos.gl_cts: type=1400 audit(0.0:218): avc: denied { ptrace } for scontext=u:r:zygote:s0 tcontext=u:r:untrusted_app_25:s0:c512,c768 tclass=process permissive=0 b/77925912 app=org.khronos.gl_cts
05-12 23:42:28.636 14014 14034 I EventSequenceValidator: Transition from ACTIVITY_LAUNCHED to ACTIVITY_FINISHED
05-12 23:42:28.637 22836 22861 F SwiftShader: external/swiftshader/src/Vulkan/libVulkan.cpp:425 vkCreateInstance TRACE_ASSERT: pCreateInfo->pNext sType = 1000247000
--------- beginning of crash
05-12 23:42:28.637 22836 22861 F libc : Fatal signal 6 (SIGABRT), code -1 (SI_QUEUE) in tid 22861 (.khronos.gl_cts), pid 22836 (.khronos.gl_cts)
Original change's description:
> Add support for GL_CHROMIUM_texture_filtering
>
> Chromium enables a custom extension, GL_CHROMIUM_texture_filtering, when
> using SwiftShaderGL, to enable high precision filtering. This change
> makes it so ANGLE also handles this same extension when using the
> SwiftShaderVK backend, by enabling the new
> VK_GOOGLE_sampler_filtering_precision custom extension.
>
> Bug: b/146423360
> Bug: b/154620295
> Change-Id: I69cafc1ccf5970a3d220ac7e13ec3c8fdd4a9643
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2185822
> Commit-Queue: Antonio Maiorano <amaiorano@google.com>
> Commit-Queue: Jamie Madill <jmadill@chromium.org>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
TBR=geofflang@chromium.org,jmadill@chromium.org,amaiorano@google.com
# Not skipping CQ checks because original CL landed > 1 day ago.
Bug: b/146423360, b/154620295
Change-Id: I803d7a7baac81cf178b59c4bf2789346ec1d3f87
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2197168
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Tim Van Patten <timvp@google.com>
|
|
e7b9118b
|
2020-05-11T17:49:30
|
|
Vulkan: Set maxShaderImageUniforms zero on some Mali GPUs
Some Mali GPUs don't support vertexPipelineStoresAndAtomics
feature, so the maxShaderImageUniforms should be set zero.
Bug: angleproject:4629
Change-Id: I754506dd27c75b3dfd5ab695e24a680f683ca78a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2195424
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
38780ae3
|
2020-05-06T16:05:02
|
|
Add support for GL_CHROMIUM_texture_filtering
Chromium enables a custom extension, GL_CHROMIUM_texture_filtering, when
using SwiftShaderGL, to enable high precision filtering. This change
makes it so ANGLE also handles this same extension when using the
SwiftShaderVK backend, by enabling the new
VK_GOOGLE_sampler_filtering_precision custom extension.
Bug: b/146423360
Bug: b/154620295
Change-Id: I69cafc1ccf5970a3d220ac7e13ec3c8fdd4a9643
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2185822
Commit-Queue: Antonio Maiorano <amaiorano@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
daed369c
|
2020-05-05T14:24:26
|
|
EGL: Add support for GL_EXT_EGL_image_array extension
Add support for creating 2D array EGLImages. 2D array
textures are core in GLES3.0. Enable the eglImageArray
bool that controls exposure of the extension for all
contexts >= GLES3.0
Bug: angleproject:4604
Tests: angle_end2end_tests --gtest_filter=ImageTest.*2DArray*
Change-Id: Iebc1ad184fe7209ca89d620290337438ac251c56
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2176109
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
4262ea04
|
2020-01-31T22:59:13
|
|
Vulkan: Add gles1 conformance support.
For Khnoros CTS1 support, ANGLE needs to add conformant and
rendererType for OpenGL ES1 version.
Bug: angleproject:4457
Change-Id: I58ac4672352d3d42e4b8403b80f86154b6a76edc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2160515
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
5578fc84
|
2020-04-22T09:34:30
|
|
Vulkan: Disable EXT_texture_sRGB_R8
Due to a dEQP bug, EXT_texture_sRGB_R8 cannot be exposed before
EXT_texture_sRGB_decode is available. This change disables
EXT_texture_sRGB_R8 on the vulkan backend.
Bug: angleproject:3609
Test: dEQP-GLES31.functional.srgb_texture_decode.skip_decode.sr8.*
Change-Id: I261c80986484e489f6903eb54ac6865433050bfa
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2161985
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
|
|
dadd1986
|
2020-04-21T01:50:00
|
|
Implement GL_APPLE_clip_distance
- Built-in variable gl_ClipDistance has been added to compiler.
- Desktop GL: gl_ClipDistance is supported since GL 3.0. Enable/Disable
each gl_ClipDistances[i] works out of the box via glEnable().
- Vulkan/Metal: Use uniform variable to control writing to each
gl_ClipDistance. One bit flag controls one element in the gl_ClipDistance
array. The writing to the disabled element in vertex shader will be
ignored, and turned into zero assignment instead.
- Direct3D/Mobile GL: Not implemented yet.
- Added ClipDistanceTest to gl_tests and compiler unittests.
- GL_APPLE_clip_distance is a subset of GL_EXT_clip_cull_distance, so
GL_EXT_clip_cull_distance could be implemented in future if needed.
Bug: angleproject:4452
Change-Id: I571ac8b56826989808a680226a04bec4cf59988e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2084324
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
96c26c68
|
2020-04-03T07:52:52
|
|
Add support for NV_shader_noperspective_interpolation
Added support for GL_NV_shader_noperspective_interpolation on
the Vulkan and Desktop OpenGL backends
Bug: angleproject:4388
Test: angle_end2end_tests --gtest_filter=ShaderInterpTest.NoPerspective/*
Change-Id: I12473830c0ea8b4fffeae9c4a8ec92d979c8e18c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2107234
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
74e816bf
|
2020-03-26T17:40:25
|
|
Vulkan: Expose extension for ETC1 usage with subimage updates
This CL implements the GL_EXT_compressed_ETC1_RGB8_sub_texture
extension, which was added to relax restrictions on using
ETC1_RGB8_OES for subimage updates.
Test: Temple Run on Android
Bug: b:152512564
Change-Id: I78cfd7dfd54fab36dee59a93b3ec3bfce17e73e4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2123232
Commit-Queue: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
ca2b6e1f
|
2020-03-19T16:30:21
|
|
Vulkan: Implement EXT_shader_non_constant_global_initializers
Enables the translator to handle non-constant global initializers in
all essl versions iff the shader enables the extension to do so.
Bug: angleproject:4468
Test: angle_end2end_tests --gtest_filter=ShaderNonConstGlobalInitializerTest.*
Change-Id: I8f138c12fc83d2f38ff8f45ca9133222b01e4087
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2102959
Reviewed-by: Tobin Ehlis <tobine@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
|
|
dd4e09ef
|
2020-03-20T14:54:36
|
|
Update conditions for exposing ASTC extensions.
Add commenents to explain the Vulkan ASTC situation.
Expose GL_KHR_texture_compression_astc_sliced_3d when the HDR profile
exists.
Bug: angleproject:4447
Change-Id: I00a86cb3c44873a28397aab33a47fb363d4ecfe9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2112283
Reviewed-by: Alexis Hétu <sugoi@chromium.org>
Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
91f44a9a
|
2020-03-20T12:08:24
|
|
ASTC: LDR support doesn't imply HDR support
There are SwiftShader related failures related to enabling the
textureCompressionASTCHDRKHR feature without properly checking if the
VK_EXT_texture_compression_astc_hdr extension is available, so HDR support
shouldn't be enabled only based on the LDR support being enabled.
Bug: angleproject:4447
Change-Id: Icde34892c9e2efff4b71e8c4e960c2fcff786700
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2080594
Commit-Queue: Alexis Hétu <sugoi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
62b72552
|
2020-03-20T07:51:26
|
|
Add support for EXT_EGL_image_external_wrap_modes
Allows for more wrap modes to TEXTURE_EXTERNAL_OES textures
Test: angle_end2end_tests --gtest_filter=ExternalWrapTest.*
Bug: angleproject:4443
Change-Id: I37bde091b166d7471c13c14fd6b0174136b52ecf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2103433
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
a3cf06ac
|
2020-03-12T13:15:48
|
|
EGL: populate EGL_NATIVE_VISUAL_ID values for Android
When generating the default EGL configs, populate
EGL_NATIVE_VISUAL_ID with AHARDWAREBUFFER formats.
Bug: angleproject:4469
Change-Id: Ifde9df0497cbd4e01219ab6067acd8d97f8460e4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2101577
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
|
|
b1b6a171
|
2020-03-10T14:20:36
|
|
Vulkan: Disable robustness support
Swiftshader does not currently have the ability to behave in a way
for ANGLE to support KHR_robustness. Disable for now until that
functionality is available.
Bug: angleproject:3058
Bug: swiftshader:145
Change-Id: I1c1b8147f6b9cf6f8d0da633dfe0f61ebfab5175
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2097053
Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Ian Elliott <ianelliott@google.com>
|
|
35785308
|
2020-02-24T17:37:55
|
|
Vulkan: reserve extra varyings
when basicGLLineRasterization or supportsTransformFeedbackExtension is enabled.
updated with MaxVaryingWithFeedbackAndGLline
adding test to validate pixel value (disabled for macos)
Bug: angleproject:4273
Change-Id: Ie3d3516fd3806c0d622fb402ba8223d302206f73
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2071237
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
c4197713
|
2019-06-03T19:23:02
|
|
Implement glImportMemoryZirconHandle & glImportSemaphoreZirconHandle
Implement import of fuchsia external objects passed by zircon handle. This
works exactly the same as with file descriptors.
Bug: angleproject:3492
Change-Id: I4d46917dfc5902f00c94550158a9f8073097f0a4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1642334
Commit-Queue: Michael Spang <spang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
709f6285
|
2020-02-20T08:56:17
|
|
Vulkan: Enable FenceNV extension without graph.
Bug: angleproject:4029
Change-Id: I6b3f469b692010e373b9c82b689966da98b8a6cc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2065918
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
b79b57e0
|
2020-02-13T17:59:16
|
|
Vulkan: expose ANGLE_compressed_texture_etc
Bug: angleproject:4399
Change-Id: I51cd304c8726c985c5f70b78bd98c8af19d2a80d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2053889
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
|
|
25b7b846
|
2020-02-05T10:22:18
|
|
Vulkan: Command graph linearization (Step 3).
Implements queries with the new command graph syntax. The T-Rex
capture benchmark uses queries so this fixes several errors.
Bug: angleproject:4029
Change-Id: Ia785f8e31257116aa3c75032dd66471b49926a78
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2021003
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tobin Ehlis <tobine@google.com>
|
|
20b1259a
|
2020-02-05T17:08:05
|
|
Vulkan: Command graph linearization (Step 2).
ES 2.0 is feature complete.
Passes all of the angle_end2end_tests with the new linear command
recording method. Also runs the T-Rex benchmark without any obvious
glitches. Likely has issues with creating too many RenderPasses. ES3
is mostly untouched.
Bug: angleproject:4029
Change-Id: Ic5acf3d768495fbffd07b07bf0a6f2b5787c51f8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2012900
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
33027d3e
|
2020-01-28T16:08:02
|
|
Enable GL_OES_depth_texture_cube_map with Vulkan backend
GL_OES_depth_texture_cube_map depends on depthTextureOES,
but adds the same new texture format/type requirements as
GL_OES_packed_depth_stencil, so instead of adding a
specific check for GL_OES_depth_texture_cube_map, the
Vulkan backend checks for a combination of
GL_OES_depth_texture and GL_OES_depth_texture_cube_map
to enable GL_OES_depth_texture_cube_map.
ANGLE has no specific checks for whether a format is
"cubemappable", but Vulkan has no restrictions of the
format of cubemaps, so if the proper formats are
supported, creating a cube of any of these formats
should be implicitly supported.
Bug: angleproject:4293
Change-Id: I968dbe8869ba0f50de18dd41f1195e847c06b520
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2026027
Commit-Queue: Alexis Hétu <sugoi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
6d6b91a6
|
2020-01-21T15:58:19
|
|
Enable GL_NV_fence with Vulkan backend
Implemented FenceNVVk, based on the existing vk::SyncHelper class.
Bug: angleproject:4295
Change-Id: I3f44a66e27ce3bd24461894dae4757b25321a6a4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2013880
Commit-Queue: Alexis Hétu <sugoi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
94de306d
|
2020-01-14T16:18:56
|
|
Extensions suffixes
Added NV/OES suffixes to relevant Extensions members.
Bug: angleproject:3104
Change-Id: Ia1798157086230bde8d11c6fcb4fe93211e996ab
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2013168
Reviewed-by: Alexis Hétu <sugoi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
4efa82ed
|
2020-01-17T01:00:38
|
|
Vulkan: Avoid INT_MAX resource limits
dEQP queries resource limits in all formats, including float. When
INT_MAX is queried as float, the resulting value is INT_MAX+1 due to
floating point imprecision. dEQP casts this value back to int for
verification, and trips up on the resulting negative number.
This change limits every ridiculously-large limit to INT_MAX/2 instead
of INT_MAX.
Bug: angleproject:4309
Change-Id: I11018c2c5a0c8bfb410928b0a4c34c526fab2269
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2006813
Commit-Queue: Ian Elliott <ianelliott@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Ian Elliott <ianelliott@google.com>
|
|
942d9152
|
2019-12-23T15:31:52
|
|
EGL: Add support for EGL_KHR_gl_colorspace extension
If the Vulkan backend supports VK_EXT_swapchain_colorspace extension,
enable the option for applications to create surfaces with non-linear
formats. Not all formats have non-linear versions and is platform
specific.
Tests: dEQP-EGL.functional.wide_color.*
angle_deqp_egl_tests --use-angle=vulkan --deqp-gl-context-type=egl --deqp-case=dEQP-EGL.functional.wide_color.*
Bug: angleproject:2514
Change-Id: I441ee797cceef92c84473bfa18605c4fd8180de1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1951963
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
52dae168
|
2019-12-19T12:03:30
|
|
Vulkan : Fix maxVertexOutputComponents
GL_MAX_VERTEX_OUTPUT_COMPONENTS should mirror Vulkan's
reported maxVertexOutputComponents; this shouldn't include
any gl_Position adjustments. It was previously set as
maxVaryingVectors * 4.
The workaround for AMD that reserved an extra varying
due to driver instability is no longer required (see:
https://chromium-review.googlesource.com/c/angle/angle/+/1980272)
Bug: angleproject:4233
Change-Id: I8d7b8eafa7edd4c56005dad039fe69e072692fca
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1975851
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
abc8f277
|
2019-12-19T10:47:31
|
|
Vulkan: Disallow multisampling with a sample count of 1
GLES uses a sample count of 0 to indicate non-multisampling, and a
sample count of 1 or greater to indicate multisampling. While the
Vulkan specification seems to support multisampling with a sample count
of 1, the following spec language effectively disallows it (even when
the underlying Vulkan driver supports it):
If the image was created with VkImageCreateInfo::samples equal to
VK_SAMPLE_COUNT_1_BIT, the instruction must have MS = 0.
The following GLES 3.1 dEQP tests use shaders that look for the sample
position, with a sample count of 1:
dEQP-GLES31.functional.texture.multisample.samples_1.*
For Vulkan drivers that fully support multisampling with a sample count
of 1, these tests pass, but get Vulkan validation errors because of the
above spec language.
This was discussed in the Khronos-private issue tracker (see:
https://gitlab.khronos.org/vulkan/vulkan/issues/1925). The Vulkan
working group wondered if ANGLE could live with not supporting a sample
count of 1 (but upgrading such requests to the next-largest supported
sample count, per the GLES specification). This change implements that
approach.
Bug: angleproject:4197
Bug: angleproject:4212
Change-Id: I009ba47b48efe5af464011c7c15022fc01f45e76
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1974842
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Commit-Queue: Ian Elliott <ianelliott@google.com>
|
|
d674e1e5
|
2019-12-12T14:47:24
|
|
Vulkan: EXT_gpu_shader5: non-const offset in textureGatherOffset
This change includes preparatory work for textureGatherOffsets as well,
though that requires special handling which is addressed in a follow-up
change. This special handling is due to the fact that this family of
functions is the only built-in with an array parameter, and our built-in
table generation doesn't handle it correctly.
Bug: angleproject:3569
Change-Id: Ic1c8dd03878a184be00f578ab9fc42af8f6e47ea
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1965435
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Jiajia Qin <jiajia.qin@intel.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
795a3559
|
2019-12-03T11:31:18
|
|
Vulkan: EXT_gpu_shader5 support: precise
The precise keyword is used in tessellation shaders but introduced in
this extension.
EXT_gpu_shader5 introduces a handful of features to shaders. This
change only implements the `precise` keyword.
Bug: angleproject:3569
Change-Id: I2252b79098eb8ba2d2faa040d7eaed7548b7051e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1939851
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
a57c1fb6
|
2019-11-26T15:08:26
|
|
Vulkan: Large builtins overflow during string construction in glslang
It is fixed in the glslang that the string size expands to 200,
so remove the workaround in the commit 4c7db77.
Bug: angleproject:4120
Change-Id: Iacc17259a68b3c92763c309a61b7fd87b130edc6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1936074
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Ian Elliott <ianelliott@google.com>
|
|
a825eb70
|
2019-11-21T11:37:17
|
|
Implement BaseVertex draw calls for Vulkan, OpenGL, NULL contexts.
This adds support for the following functions:
- glDrawElementsBaseVertex
- glDrawRangeElementsBaseVertex
- glDrawElementsInstancedBaseVertex
Bug: angleproject:3582
Bug: angleproject:3402
Bug: angleproject:4166
Change-Id: I83770f62e3a918c0965fd4ca8c7d9e598b8b4154
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1929083
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
4c7db77e
|
2019-10-31T15:42:31
|
|
Vulkan: Set limitation on maxComputeWorkGroupCount
According to Table 20.45 and Chapter 17 in the ES 3.1 spec, MAX_COMPUTE_WORK_GROUP_COUNT
is get as a GLint by using GetIntegeri_v. However, it is an unsigned integer
in the Vulkan. It needs to set limitation on maxComputeWorkGroupCount[] during
translating.
1. Change the data type to GLint stored in Caps.
2. Ensure that the limitation is set during initialization.
3. Add workaround for angleproject:4120
Bug: angleproject:4066
Change-Id: I1659ba1d560e30b9599cace0feeab8a18890c3ff
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1890586
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Ian Elliott <ianelliott@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
d8531638
|
2019-11-14T09:04:24
|
|
Vulkan: Ensure consistent limits for texture & framebuffer
GLES 3.1 requires that the maximum framebuffer width & height be
at least as large as the maximum texture size. Vulkan doesn't have
that requirement and for SwiftShader the values are different
(4096 for FB, 8192 for texture). Use the smaller of the two to
keep things consistent.
Test:
angle_deqp_gles31_tests --use-angle=swiftshader --gtest_filter=dEQP-GLES31.functional.state_query.integer.max_framebuffer_*
Bug: angleproject:4102
Change-Id: Ie04a5272084c5f6a19ac06d952281b7df9fe9a06
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1917130
Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tobin Ehlis <tobine@google.com>
|
|
dfc20daf
|
2019-10-28T13:51:42
|
|
Plumb more logic for ANGLE_get_image.
Also implements and tests validation / negative API.
Bug: angleproject:3944
Change-Id: I3385a4255f4fab6a12eee2abfa5ffcce2107359a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1879961
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
d192e933
|
2019-09-27T10:27:10
|
|
Vulkan: Support binding texture levels as a rendertarget
This CL refactors how TextureVk handles rendertargets. It removes
the single rendertarget that previously supported 2D, and expands
the layer/level list of rendertargets to handle all cases.
Bug: angleproject:3184
Bug: angleproject:3996
Test: Texture2DTestES3.FramebufferTextureChangingBaselevel/ES3_Vulkan
Test: FramebufferRenderMipmapTest.RenderToMipmap/ES2_Vulkan
Test: FramebufferRenderMipmapTest.RenderToMipmap/ES3_Vulkan
Test: ComputeShaderTest.ImageStoreMipmapSlice/ES3_1_Vulkan
Change-Id: I466d0389cc6744994f88c40cc388fca694b53a99
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1854895
Reviewed-by: Ian Elliott <ianelliott@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
ee08d924
|
2019-10-10T08:56:12
|
|
Vulkan: Enable GL_OES_EGL_image_external_essl3
GL_OES_EGL_image_external_essl3 support was added a while back.
This patch just enables it for the Vulkan backend
Bug: angleproject:2668
Test: ./angle_end2end_tests --gtest_filter=ImageTestES3*Vulkan
Change-Id: I6b8b1f63ed6e9faafe668ad9a73fc7fbc9c17670
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1852190
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
cea73963
|
2019-10-10T11:56:45
|
|
Vulkan: Base max renderbuffer size on max framebuffer size
maxRenderbufferSize was based on max2DTextureSize, which is
larger in SwiftShader than maxFramebufferX. This was causing
the dEQP-GLES3.functional.shaders.builtin_functions.precision.*
tests to create rendertargets that were too large for what
SwiftShader supports. Adding checks for maxFramebufferX values
on top of the max2DTextureSize check fixes all the tests.
Bug: angleproject:3990
Change-Id: I006d2ddeb0f7e582d6aef88457cfb292efd5a05c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1852709
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
1850492e
|
2019-10-02T08:23:03
|
|
Vulkan: Disable OES_vertex_type_10_10_10_2 on GLES 2.0
- Because of the difference in the SNORM to FLOAT conversion formula
between GLES 2.0 and 3.0, OES_vertex_type_10_10_10_2 is disabled
when the context version is lower than 3.0.
- Modify test conversion formula to be compliant with GLES 3.0 equation
Bug: angleproject:3868
Test: angle_end2end_tests --gtest_filter=VertexAttributeTest*Packed*Vulkan
Change-Id: I8b85d8146ee05353bc40fa0022f05d6634c33110
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1792197
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
71c1138d
|
2019-08-16T12:23:04
|
|
Vulkan: Emulate instanced attrib divisor
This sets instancedArrays[ANGLE|EXT] extenstions as always
supported regardless of underlying Vulkan HW's max vertex attrib
divisor.
Then detect instances where app sets a divisor that isn't supported
by hardware and emulate those cases. Emulations is accomplished by
copying the instanced attribs to a new buffer where each attrib is
present once per instance, using the attrib divisor value as a
factor to replicate the attribs, and then setting the actual divisor
value for the draw to "1".
Also, we only store 8 bits for the divisor used in the PSO, so this
code also handles emulation of the case where divisor is > 255.
This is passing all of the drawInstanced/Elements dEQP tests
where divisor has to be emulated.
Also enabled end2end InstancingTestES3 for Vulkan backend.
Bug: angleproject:2672
Change-Id: I9932f9eab49b16a19e8bbd35dacaf3b5a27a213f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1758689
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Commit-Queue: Tobin Ehlis <tobine@google.com>
|
|
a0159c03
|
2019-09-02T14:49:07
|
|
Vulkan: Implement basic geometry shader feature
Enable the default behavior of the geometry shader
Bug: angleproject:3571
Test: dEQP-GLES31.functional.geometry_shading.input.basic_primitive.points
dEQP-GLES31.functional.geometry_shading.input.basic_primitive.lines
dEQP-GLES31.functional.geometry_shading.input.basic_primitive.line_loop
dEQP-GLES31.functional.geometry_shading.input.basic_primitive.line_strip
dEQP-GLES31.functional.geometry_shading.input.basic_primitive.triangles
dEQP-GLES31.functional.geometry_shading.input.basic_primitive.triangle_strip
dEQP-GLES31.functional.geometry_shading.input.basic_primitive.triangle_fan
Change-Id: I65708d19bbfe6a0ad8ca392a1d6b3609b1410ef4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1793753
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
fea65766
|
2019-09-19T09:30:38
|
|
Vulkan: Add support for OES_vertex_type_10_10_10_2
- Add support to CPU/GPU convert vertex formats
- Add test cases for type conversion in angle_end2end_tests
- Fix a bug in shader script by adding a ceil when calculating bytes
Bug: angleproject:3192
Test: angle_end2end_tests --gtest_filter=VertexAttributeTest*Packed1010102*
Change-Id: I57bab9fc1c1041cd734746d0e52a33717b635ec0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1788495
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
|
|
bf4268a3
|
2019-09-17T13:33:56
|
|
Fix misc VS2019 bool conversion warnings
BUG=angleproject:3921
Change-Id: I06de5131f98b27c2556ed60dd7228c9cfa154802
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1811858
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
d9456b25
|
2019-09-11T08:21:14
|
|
Vulkan: Enable further dEQP 3.1 tests
As TimVP pointed out, a previous change enabled some previously-skipped
texture gather 2d_array tests. Enabling them.
Bug: angleproject:3605
Bug: angleproject:3189
Change-Id: I3ad190131339a04441fdd05e23ff3b7ac724dc83
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1797655
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Tobin Ehlis <tobine@google.com>
|
|
79ad0411
|
2019-09-09T15:05:37
|
|
Vulkan:Pass through min/max program texel offset
The Vulkan min/maxTexelGatherOffset VkPhysicalDeviceLimits correspond to
OpenGL's GL_MIN/MAX_PROGRAM_TEXTURE_GATHER_OFFSET params. Pass them
directly through.
Bug: angleproject:3605
Change-Id: Ic6a22bbe30ee2b0baaeaa62b6e26dc844c2ad82d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1793357
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Tobin Ehlis <tobine@google.com>
|
|
912e52d8
|
2019-08-23T00:25:09
|
|
Vulkan: Storage image support
Image bindings are placed after atomic counters in the "resources"
descriptor set.
There are two issues yet to be addressed:
- GL can create a 2D (array) view of a 3D image, but this is not allowed
in Vulkan. If this cannot be made possible, emulation needs to be
done.
https://github.com/KhronosGroup/Vulkan-Docs/issues/1033
- GL can create an image view of a texture with a different format and
have the data reinterpreted. This is not currently done.
Bug: angleproject:3563
Change-Id: I95c4d92c50bb033212a9a67f3f2d6f97c074c7bf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1767366
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
8933de85
|
2019-08-28T13:04:47
|
|
Vulkan: Expose EXT_instanced_arrays
Implemented in
https://chromium-review.googlesource.com/c/angle/angle/+/1452740
was missing exposure from the Vulkan backend.
Bug: angleproject:3105
Change-Id: If82e6f3dfa5ff8fafbc401258a5e324ea311123d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1773906
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
cd31f286
|
2019-06-25T14:22:41
|
|
Implement Draw base vertex and base instance functions
This patch implements functionality of glDrawArraysInstancedBaseInstanceANGLE,
glDrawElementsInstancedBaseVertexBaseInstanceANGLE,
glMultiDrawArraysInstancedBaseInstanceANGLE,
and glMultiDrawElementsInstancedBaseVertexBaseInstanceANGLE
Workaround for OpenGL driver on Mac:
gl_VertexID on Mac with AMD GPU doesn't include baseVertex value.
So replace gl_VertexID with (gl_VertexID + angle_BaseVertex) if any.
Workaround for Vulkan GLSL:
gl_InstanceIndex on Vulkan includes baseInstance. So replace
gl_InstanceIndex with (gl_InstanceIndex - angle_BaseInstance) when
angle_BaseInstance is declared.
Bug: chromium:891861, angleproject:3402
Change-Id: Ia1d94b5d4d7da7e635468c05c962c4f7eb1b1919
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1750126
Commit-Queue: Shrek Shao <shrekshao@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
3b46885e
|
2019-07-30T16:50:36
|
|
Vulkan: Implement EXT_texture_type_2_10_10_10_REV
- Expose GLES 3.0 feature of 2_10_10_10_REV texture type
on GLES 2.0 as EXT.
- Handle alpha channel value as 1.0 when used with RGB format.
- Add test for "RGB+UNSIGNED_INT_2_10_10_10_REV" case into TextureUploadFormatTest.
BUG=angleproject:3232.
Test:
dEQP-GLES2.capability.extensions.uncompressed_texture_formats.GL_EXT_texture_type_2_10_10_10_REV
dEQP-GLES2.functional.fbo.completeness.renderable.texture.*2_10_10_10_rev
dEQP-GLES3.functional.fbo.completeness.renderable.texture.*2_10_10_10_rev
KHR-GLES2.core.internalformat.*2_10_10_10_rev*
KHR-GLES3.core.internalformat.*2_10_10_10_rev*
Change-Id: Iac00517971f9242161115c7256117a69093fb5df
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1732618
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
7e48c9eb
|
2019-08-06T17:17:19
|
|
Add explicit integer casts
WebKit uses the -Wshorten-64-to-32 flag which warns on these cases.
Bug: 3439
Change-Id: I8c1de60da0f173ca2036e2120e79b857f5f2775f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1740866
Commit-Queue: James Darpinian <jdarpinian@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
99f494e4
|
2019-08-05T13:53:41
|
|
Vulkan: Enable GL_NV_pixel_buffer_object extension
Now that PBOs are implemented, expose the NVIDIA PBO extension.
Bug: angleproject:3233
Change-Id: Ie69e49fb0cefad7b55abcc57b2cb3284c196b158
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1737277
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Ian Elliott <ianelliott@google.com>
Commit-Queue: Ian Elliott <ianelliott@google.com>
|
|
c13ca2af
|
2019-07-17T15:46:29
|
|
Vulkan: Allow more than one atomic counter buffer binding
dEQP assumes there are more than one atomic counter buffers available.
This is technically not a requirement by the standard, but nevertheless
could be what applications expect as well.
This change adds support for multiple atomic counter buffer bindings.
This is done by declaring an array of storage buffers for the atomic
counter buffers (instead of declaring only one) and passing the
(binding, offset) pair around to functions instead of just the offset.
The atomic counter is found by indexing `binding` into the storage
buffer array first before indexing `offset` into its `uint[]`.
ProgramVk's default uniform collection is also fixed not to include
atomic counter uniforms.
A remaining issue is that atomic counter buffer offsets don't have
alignment requirements in GLES, but Vulkan does for storage buffers.
Similar to emulated transform feedback buffer offsets, these should be
sent to the shader through uniform values. This will be done in a
follow up change.
Bug: angleproject:3566
Change-Id: I5600225c24c38f1a8ecf5c64388073055733197d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1707931
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
4c118cb3
|
2019-07-31T16:35:07
|
|
Vulkan: Add support for OES_vertex_half_float
Expose GLES 3.0 feature of half_float vertex on GLES 2.0 as an extension.
Bug: angleproject:3191
Test: dEQP-GLES2.capability.extensions.vertex_data_formats.GL_OES_vertex_half_float
Change-Id: Ia093b66f9c32c81946b2cbc15ff227baea4bfb02
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1728749
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Mohan Maiya <m.maiya@samsung.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
626a7280
|
2019-07-08T15:11:59
|
|
Vulkan: Implement framebuffers without attachments
It is possible to render to a framebuffer object that has no
attachments. However, the rasterization of primitives is always
based on the area and characteristics of the bound framebuffer.
These characteristics (size, number of samples, etc.) would normally be
defined by the attached images. If no images are attached, these
characteristics are defined by their default values.
Bug: angleproject:3579
Test: dEQP-GLES31.functional.fbo.*no_attachments*
Test: dEQP-GLES31.functional.state_query.framebuffer_default.*
Change-Id: I9580b924ac810db573cd8df96273fbb01bbb1f73
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1690688
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Commit-Queue: Tim Van Patten <timvp@google.com>
|
|
020abb8b
|
2019-07-24T11:33:49
|
|
Vulkan: invalidate translation buffers for SSBOs
Translation buffers weren't being marked dirty after running a compute
shader in which they are bound as SSBOs.
This change invalidates all SSBOs after a draw or compute call.
Bug: angleproject:3739
Change-Id: I66b56df7e619b55afc7e3da6b5613b6d050e06bb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1717144
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: James Dong <dongja@google.com>
|
|
b82d8633
|
2019-07-15T11:23:08
|
|
Vulkan: Atomic counter buffer support
Vulkan doesn't treat atomic counters especially, and they are emulated
with atomic access to storage buffers.
A single atomic counter buffer binding per pipeline is supported. All
the atomic counters identify an offset within this buffer. The shader
is modified to include a storage buffer definition with
`uint counters[];` as the only field.
A compiler pass replaces atomic counter definitions with variables that
hold the corresponding offset parameter, as well as changing atomic_uint
types to just uint (as the offset). Where an atomic counter variable is
used, it is replaced with the offset variable (plus the array index, if
array). At the same time, built-in `atomicCounter*` functions are
replaced with a corresponding `atomic*` function and
`memoryBarrierAtomicCounter` is replaced with `memoryBarrierBuffer`.
Bug: angleproject:3566
Change-Id: Iefb3d47de6a5cb3072bfa0cb94a46ac6a886d369
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1704635
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
9ec3f51d
|
2019-07-19T13:06:16
|
|
Reland "Vulkan: Implement OES_get_program_binary extension"
Reason for revert: default uniform initialization was incomplete
This change has the following fixes:
1. Add missing default uniform initialization when loading
program binaries.
2. Re-enable OES Program Binary capabilities for Vulkan.
3. Added two angle end2end test,
- ProgramBinaryES3Test.BinaryWithLargeUniformCount
uses several uniforms across the vertex and fragment
shaders.
- ProgramBinaryES3Test.ActiveUniformShader tests
the difference between uniform static and active use
Bug: angleproject:3216
Bug: angleproject:3217
Bug: angleproject:3665
Tests: dEQP-GLES3.functional.shader_api.program_binary*
angle_end2end_tests --gtest_filter=ProgramBinary*
Change-Id: If6886f01241d65bb1e17a21cc3406533021072ee
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1699069
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
f92fc916
|
2019-07-15T22:39:23
|
|
Vulkan: Compute shader support
A DispatchHelper class is created as the equivalent of FramebufferHelper
as a command graph resource. There's currently a single dispatcher and
all dispatch calls are recorded on that. Context dirty bits are set up
in such a way that graphics and compute workloads are independently
handled, so that issuing a dispatch call wouldn't cause a framebuffer's
render pass to rebind resources.
Bug: angleproject:3562
Change-Id: Ib96db48297074d99b04324e44b067cfbfd43e333
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1688504
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
8b2bb18f
|
2019-07-10T17:12:25
|
|
Vulkan: Update capabilities with the necessary limits
Some of the necessary limits were not being defined correctly in the
native capabilities, causing some dEQP test failures.
Bug: angleproject:3676
Test: Applicable dEQP-GLES3 limits testing
Change-Id: If977da1edd7d55627c65cd81a6dcd42c63a3a6a6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1695934
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
d9c17107
|
2019-07-10T14:56:26
|
|
Add support for GL_OES_texture_compression_astc
This extension adds 3D compressed texture formats, something ANGLE has
not seen before. This requires tracking a compressed block depth for
validation and image size computations.
Update the ldr and hdr extension checks to be in line with the spec.
HDR requires LDR and is not detectable by texture formats alone.
Expose all of the ASTC extensions on the GL backend.
BUG=angleproject:3675
Change-Id: Id04c7c8ef8541e9556579536cdba899b64303caf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1695923
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
c3085ead
|
2019-07-11T15:07:29
|
|
Vulkan: Set texel offset limits
This was blocking compilation for any new texture builtin that used offsets.
Bug: angleproject:3622
Change-Id: I30b221741796b53f8e47e3aeeebfbde3f1976bd6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1699062
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
29fba5e0
|
2019-07-04T17:08:41
|
|
Vulkan: Prepare for variable-stage pipelines
Compute (single-stage pipeline) is upcoming, but this change prepares
GlslangWrapper to handle any number of stages (mostly). Additionally,
this change binds each resource to each stage based on whether it's
active, so that we don't hit the per-stage limit of resources by binding
every resource to every stage.
Bug: angleproject:3633
Bug: angleproject:3562
Change-Id: Ifebf691482846e0371c6e314f514226a4cfee258
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1689330
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
1cde0eab
|
2019-07-03T10:58:32
|
|
Vulkan: Add storage buffer support
The storage buffers are placed in the same descriptor set as uniform
buffers. Some refactoring is done to reuse code that handles UBOs to
handle SSBOs as well. A good number of tests still fail as they test
SSBOs in conjunction with compute shaders.
Bug: angleproject:3561
Change-Id: Ia33c1f68e6f6402c746f5919ede87b2c308cf81c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1687126
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
91295e1a
|
2019-07-08T13:31:58
|
|
Vulkan: Disable Program Binary Support
Reason for disabling: Crashes are seen on
Fuchsia. Some parts are missing to appropriately
support the extension.
Bug: angleproject:3216
Bug: angleproject:3217
Bug: angleproject:3665
Change-Id: I4a7775e023702861d5e801289d49f39702cb19bf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1691311
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
a1b6761e
|
2019-07-02T14:42:12
|
|
Vulkan: Add SSBO and combined resource limits
Fixes UBO limits as well, both to use the per-stage Vulkan limit and to
account for driver uniforms now being dynamic.
Bug: angleproject:3561
Bug: angleproject:3633
Bug: angleproject:3605
Bug: angleproject:3443
Change-Id: I07e34923cc1d132e965a0b9c0590c96fc561fab1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1685877
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
|
|
a8da8668
|
2019-07-02T12:21:26
|
|
Vulkan: Implement OES_get_program_binary extension
- Serialize and deserialize completed shader source of
program for saving out for glGetProgramBinary().
- Cleaned up some unnecessary includes in cpp files.
- Some refactoring within ProgramVk::ShaderInfo to minimize code
duplication.
- Added ProgramVk::ShaderInfo::saveShaderSource and
ProgramVk::ShaderInfo::loadShaderSource.
- Updated vk_caps_utils.cpp to enable getProgramBinary and add the
GL_PROGRAM_BINARY_ANGLE program binary format. This follows the pattern
for other backends.
Bug: angleproject:3216
Tests: dEQP-GLES3.functional.shader_api.program_binary*
angle_end2end_tests --gtest_filter=ProgramBinaryTest*
Change-Id: I927a27aaf9aa3d7fac550819ee80d2676ec1d1be
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1683099
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
66b5ff58
|
2019-06-28T14:34:22
|
|
texture3D: Implement functionality and enable for Vulkan
Also update test expectations for texture3D.
Bug: angleproject:3188
Change-Id: If8a8e0a83a86c48c2afb0c36534c1e9d4120fe47
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1682782
Reviewed-by: Ian Elliott <ianelliott@google.com>
Reviewed-by: Lingfeng Yang <lfy@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
da904484
|
2019-07-02T10:49:14
|
|
Vulkan: Implement glInvalidate[Sub]Framebuffer
Additionally, fixes an issue where the read framebuffer was affecting
the render pass desc given to the pipeline. This fix is included with
this CL as its test depends on glInvalidateFramebuffer.
This issue was revealed by 071d2a44 changing the order in which read and
draw framebuffers were synced. Previously, read was synced first,
dirtying the pipeline and then draw was synced fixing it. With the
order reversed, the read framebuffer is the last to changes the
pipeline, leaving it in an invalid state.
Bug: angleproject:3201
Bug: angleproject:3202
Change-Id: Ibebf732a3e3cc081e4865f79dcbaedb467fd9038
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1682468
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
0bfa5504
|
2019-06-03T10:40:10
|
|
Vulkan: Emulate Transform Feedback with vertex shader output
In ES 3.0 and 3.1, only non-indexed GL_POINTS, GL_LINES and GL_TRIANGLES
is supported for transform feedback. Without tessellation and geometry
shaders, we can calculate the exact location where each vertex transform
output should be written on the CPU, and have each vertex shader
invocation write its data separately to the appropriate location in the
buffer.
This depends on the vertexPipelineStoresAndAtomics Vulkan feature.
Bug: angleproject:3205
Change-Id: I68ccbb80aece597cf20c557a0aee842360fea593
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1645678
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
b91f87b6
|
2019-06-05T11:38:39
|
|
Vulkan: enable OES_element_index_uint for Vulkan
We already handle 32-bit indices, so this change enables the corresponding extension for ES 2.0.
Bug: angleproject:2902
Change-Id: Iccde1d4aac383a9c11edf851778ff315de8d4ad1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1646032
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: James Dong <dongja@google.com>
|
|
f2a1c384
|
2019-05-21T16:32:49
|
|
Vulkan: Implement multisampled framebuffers
Simultaneously implements ANGLE_framebuffer_multisample and ES3
multisampled framebuffers.
Additionally, implements ES3 framebuffer blitting where multisampled
framebuffers are involved.
Bug: angleproject:3203
Bug: angleproject:3204
Bug: angleproject:3200
Change-Id: I5694a30f71168e807688a9568e3742b81d907918
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1622667
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
431ef2fd
|
2019-05-21T17:13:08
|
|
Add support for EXT_blend_minmax
This is to add additional modes (MIN, MAX) to "BlendEquation".
- add cases for "GL_MIN" and "GL_MAX" into "PackGLBlendOp()" in
vk_cache_utils.cpp
- add enabling "blendMinMax" codes into vk_caps_utils.cpp
And, AUTHORS and CONTRIBUTORS are updated.
BUG=angleproject:2897
Tests: dEQP-GLES3.functional.fragment_ops.blend.*min*
dEQP-GLES3.functional.fragment_ops.blend.*max*
Change-Id: I13a1d6d28a104b18e21697f9f23d77e4eda2d1a6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1621582
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
b16d69c3
|
2019-05-13T16:28:27
|
|
Vulkan: Add support for surface multisampling
A multisample image is created for the surface if multisampling is
enabled. Prior to present, this multisample image is resolved into the
swapchain image.
FramebufferVk::readPixelsImpl similarly has got the ability to resolve
the region of interest into a temporary image prior to readback.
Tests are added to render a point, line and a triangle on a 4x
multisampled surface.
Bug: angleproject:3204
Change-Id: I34aca502fa1918b5cbf000ff11521c350372e051
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1610188
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
7b08d381
|
2019-05-09T00:52:04
|
|
Vulkan: Enable EXT_frag_depth
Natively supported with GLES3 dEQP tests already enabled and passing.
Bug: angleproject:3218
Change-Id: I5ff94e3b16d2025a58d5a448383049f9330dd46f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1600864
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
9fa248e1
|
2019-05-06T14:55:18
|
|
Vulkan: Implement EXT_draw_buffers
In GLES, color attachments are referenced by their indices. These
indices match between the API and GLSL. For example, if a shader has:
layout(location=0) out color;
layout(location=3) out roughness;
Then GLES would bind and enable GL_COLOR_ATTACHMENT0 and
GL_COLOR_ATTACHMENT3.
In Vulkan, the framebuffer object and the corresponding renderpass
define the color attachments, and they don't allow gaps in color
attachments as GLES does. A render subpass creates the mapping between
the color attachments as defined in the framebuffer and the attachments
used by the shader (with possible gaps).
This change packs the enabled GL color attachments for the sake of the
framebuffer, and sets the subpass up in such a way that the shaders
continue to use the same color output indices as GLES.
In the example above, we have the attachment indices as follows:
Status | GLES | GLSL | RenderPass | Subpass
enabled 0 0 0 0
disabled 1 - VK_ATTACHMENT_UNUSED
disabled 2 - VK_ATTACHMENT_UNUSED
enabled 3 3 1 1
That is, the array of color attachments in the Vulkan
framebuffer/renderpass is:
[0] = GL color attachment 0
[1] = GL color attachment 3
And the array of color attachment references in the Vulkan render
subpass is:
[0] = 0 (index 0 of the renderpass attachment array)
[1] = VK_ATTACHMENT_UNUSED
[2] = VK_ATTACHMENT_UNUSED
[3] = 1 (index 1 of the renderpass attachment array)
Bug: angleproject:2394
Change-Id: Ib6cd2b60882643ea152986eee453270d09cd4aed
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1595442
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
776694cd
|
2019-05-08T10:28:55
|
|
Change all ANGLE workarounds to use struct definition with info.
Change each workaround from a simple bool to a struct with info
including name, workaround set, description, and bug IDs. This will help
with future workaround integration with Chrome.
Bug: angleproject:1621
Change-Id: Ia27c180abaf845e280060c803e5994cc3152a057
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1593917
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
f5115ed4
|
2019-05-07T14:50:50
|
|
Vulkan: Enable standard derivatives extension
Enable standard derivatives by default for Vulkan.
Bug: angleproject:2903
Test: Validate Skia doesn't generate errors.
Test: CQ Runs
Change-Id: I7f180d4ca03c154db3e9562213127eca1ce65562
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1599857
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
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>
|
|
065f8dc3
|
2019-04-11T12:56:00
|
|
Vulkan: Set appropriate GL conformant bit for returned configs
The Khronos conformance tests only test configs that have the conformant
bit set. ANGLE is currently targetting OpenGL ES 2.0 conformance, so this
change is setting the EGL_OPENGL_ES2_BIT bit to indicate this.
ES 2.0 conformance reporting is being restricted by
ANGLE_VULKAN_CONFORMANT_CONFIGS_ONLY for official builds, but ES 3.0
conformance will be reported for builds without
ANGLE_VULKAN_CONFORMANT_CONFIGS_ONLY enabled.
Bug: angleproject:3374
Test: CQ Dry Run
Change-Id: Ie31f63c3ea3b7bddfceec80ebc28f079ffd363df
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1564717
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Tim Van Patten <timvp@google.com>
|
|
8f0210f7
|
2019-04-10T10:44:10
|
|
Always enable NPOT for Vulkan backend
Vulkan natively supports non power-of-two textures so indicate
that support for front-end.
Bug: angle-project:3239
Test: angle_deqp_gles2_tests --gtest_filter=dEQP.GLES2/functional_texture_completeness_2d_npot_t_repeat --use-angle=vulkan
Change-Id: Id9058b6e9afd1d43e5d74612f808ce39beafd35f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1561963
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
a0b00e97
|
2019-04-09T18:45:22
|
|
Vulkan: Expose GL_EXT_memory_object_fd & GL_EXT_semaphore_fd
If the vulkan driver has support for VK_KHR_external_memory_fd or
VK_KHR_external_semaphore_fd, add the GL versions of these to the vulkan
renderer's extensions.
Bug: angleproject:3289
Change-Id: I7f04b5cf883f93f6ccd579c2b75d6831b854bfd0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1552027
Commit-Queue: Michael Spang <spang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
194a9674
|
2019-04-05T09:20:46
|
|
Vulkan:Return HW's SUBPIXEL_BITS
Plumb the physical HW's subPixelPrecisionBits limit to be returned in
the query for GL_SUBPIXEL_BITS. Default value remains 4 for all other
backends.
Bug: angleproject:3351
Change-Id: I5564e5090e7211b8daeaa91ea30eceb23c5ea227
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1553967
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Tobin Ehlis <tobine@google.com>
|
|
56124e68
|
2019-03-26T15:02:30
|
|
Vulkan: remove dependency to inheritedQueries
If using vk::priv::SecondaryCommandBuffer. This would allow ES3 support
where inheritedQueries is not supported.
Bug: angleproject:3136
Change-Id: I10508058301ea6da8f3415cfdcc052500a67f810
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1538829
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tobin Ehlis <tobine@google.com>
|
|
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>
|