This implements EXT_clip_control for the D3D11 renderer, so that I can
use a reversed-Z depth buffer with ANGLE.
Tested with
angle_deqp_gles2_tests.exe --deqp-egl-display-type=angle-d3d11 --deqp-case=dEQP-GLES2.functional.clip_control.*
and
angle_end2end_tests.exe --gtest_filter=*D3D11*
Bug: angleproject:6554
Change-Id: I1d11cd04a6654c28530b11104470f0cad0009abe
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3218659
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
According to spec, GL_MAP_PERSISTENT_BIT_EXT indicates that
it is not an error for the GL to read data from or write data
to an immutable buffer while it is mapped.
Bug: b/188685164
Change-Id: I899a978dbf9c1d1ad3489063028fd5500c4bd5e1
Signed-off-by: Hailin Zhang <hailinzhang@google.com>
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3151278
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
After the CL
https://chromium-review.googlesource.com/c/angle/angle/+/2965780
the build with GCC failed with error:
/third_party/angle/src/libANGLE/Display.h:325:37: error: declaration of
'typedef class std::__1::set<gl::Context*> egl::Display::ContextSet'
changes meaning of 'ContextSet' [-fpermissive]
/third_party/angle/src/libANGLE/Display.h:75:7: note: 'ContextSet'
declared here as 'using ContextSet = class std::__1::set<gl::Context*>'
To fix the error the double declaration of ContextSet is removed.
Bug: angleproject:5878, chromium:819294
Change-Id: Id9e52061af53ea18dd5d13b960daaa67a14f61ca
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3038804
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Binding descriptor sets that use VK_WHOLE_SIZE with a dynamic offset
results in the VUID-vkCmdBindDescriptorSets-pDescriptorSets-01979
validation error.
Updated the updateDefaultUniformsDescriptorSet function to use the
uniform's size instead of using VK_WHOLE_SIZE.
Bug: angleproject:5924
Tests: dEQP-GLES31.functional.shaders.multisample_interpolation.*
SimpleStateChangeTest.UniformUpdateTest*Vulkan
UniformTestES3.MatrixUniformUpload*Vulkan
Change-Id: Ie4633af61d59a9401f599d336a5b9040cdf18004
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2950309
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Add LunarG, Inc. and Mark Lobodzinski to the CONTRIBUTORS file
and LunarG, Inc. to the AUTHORS file.
Bug: None
Change-Id: Id3f9ff2075498532280d4a652a5fffa85dd77f45
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2945696
Reviewed-by: Ian Elliott <ianelliott@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Ian Elliott <ianelliott@google.com>
This change adds Collabora, Ltd. to the AUTHORS file as described in the
ContributingCode guide.
Also adds Collabora, Ltd. and myself to CONTRIBUTORS.
Bug: angleproject:5516
Change-Id: Ie24ef8ec01720d9d207d36c4a4c21fab96d08dcd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2690949
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
When building with VS2019 (using is_clang=false) multiples of the
following error are given:
../../src/common/mathutil.cpp(75): error C4244: '=':
conversion from 'double' to 'float', possible loss of data
(This is due to pow(), when passed an int for the second param, widens
the first param to a double then returns a double).
Since the code was being changed the opportunity was taken to:
- add missing unit tests for the two 999E5 conversions
- optimise out the common pow() functions
The unit tests were written against the original implementation, then
the optimisations added and verified against the original results.
Bug: angleproject:5521, dawn:602
Change-Id: Ic9e5eaedbe3fc7ceeed697898823b76dffcd989a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2624888
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Adds the PowerVR VendorID into the accepted vendor list, and prevent
basic GL line emulation from being ran on PowerVR hardware as it's
not required on those platforms, yet causes CTS failures when enabled.
Fixes a variety of line failure tests across OGLES3/3.1 test suites
seen on PowerVR hardware.
Bug: angleproject:5145
Change-Id: I7383f1c09d026b8d33e6fbda66418c5f8b7f90bd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2462094
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
GCC fails to automatically map the initializer assignment for
initializing the angle::PackedEnumMap. So this change adds the
type hint ImageMemoryBarrierData to the second part of the pairs
passed to construct the PackedEnumMap.
GCC error:
./../third_party/angle/src/libANGLE/renderer/vulkan/vk_helpers.cpp:387:1: error: could not convert ‘{{rx::vk::ImageLayout::Undefined, {"Undefined", ...}}}’ from ‘<brace-enclosed initializer list>’
to ‘const angle::PackedEnumMap<rx::vk::ImageLayout, rx::vk::{anonymous}::ImageMemoryBarrierData>’
387 | };
| ^
| |
| <brace-enclosed initializer list>
Bug: chromium:819294
Change-Id: I314c43c0795e54cabd891205ee935c6354d11658
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2401778
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Android reserves specific TLS slots to store thread specific
values. Given that the Context object gets queried on every
call we leverage Android's ASM code to improve the speed of
this operation.
TLS_SLOT_OPENGL is an unused slot in Android and using that
in combination with the ASM code,rather than using the
pthread API, allows angle to store and retrieve thread specific
context object much more efficiently.
Bug: angleproject:4717
Change-Id: I27a117fe82e62407e01c8c372918b866aaea9ee5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2231883
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Added a number of names that were missing from CONTRIBUTORS.
Bug: angleproject:1944
Change-Id: I5e8e2d13494b5ded7dec7a094218e4aef90d9da3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2235931
Reviewed-by: Ian Elliott <ianelliott@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Tobin Ehlis <tobine@google.com>
Type decorations may be ignored when using multiple OpAccessChains.
Bug: angleproject:4492
Change-Id: I2e51af600394a69cb5f7e02228ca7e4fd1c826e0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2105529
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
In generateMipmaps, remove hard coded depth of 1, shift depth
like every other dimension.
Remove MipmapsForTexture3D test pixel value check, in es spec3.2 8.14.4
"No particular filter algorithm is required, though a box filter is recommended."
It's implementation-dependent. In current angle implementation, will
choose VK_FILTER_LINEAR/VK_FILTER_NEAREST according to vkdeice support.
Bug: angleproject:3983
Test: MipmapTestES3.MipmapsForTexture3D/ES3_Vulkan
Test: dEQP-GLES3.functional.samplers.single_tex_3d.diff_max_lod
Test: dEQP-GLES3.functional.samplers.single_tex_3d.diff_min_lod
Test: dEQP-GLES3.functional.samplers.multi_tex_3d.diff_max_lod
Test: dEQP-GLES3.functional.samplers.multi_tex_3d.diff_min_lod
Change-Id: I5e73f8c743053aeb521b5e0b3e372bbe77e57ad2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2076740
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
In gl::ReadPixels(), ValidateReadPixels() will try to
flush staged updates before readPixels. In the case
where a texture was initialized with null RGBA data,
no Framebuffer dirty bits are set, and thus the staged
clear would never be flushed from the staged updates.
1. Add robust init in TextureVk::initImage to ensure
image is initialized.
Test: ./angle_end2end_tests --gtest_filter=\
RobustResourceInitTest*_Vulkan_AllocateNonZeroMemory
2. Update stageSubresourceRobustClear() to
kEmulatedInitColorValue in the case where robust resource
was initialized without full RGBA format to update
init value of robust resource.
Test: texture-attachment-formats.html in
webgl_conformance_vulkan_passthrough_tests.
3. Revert "Suppress Vulkan RobustResourceInit tests."
Revert commit a8e6a46312.
Reason for revert: re-enable related robust tests.
Bug: angleproject:4255
Change-Id: I79f20e0c02c2f1b1cd68ab590f0f765229f9e780
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1985503
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
When running flatland on android-10.0.0_r21 (Pixel 3), libgui's ~EglImage calls
eglTerminate which grabs angle's EGL entry point mutex. The path continues
to libvulkan where eventually another egl call happens (eglDestroyImageKHR) and
it will attempt to take the mutex at the entry point again. So we try to get the
mutex multiple times from the same thread.
Change this mutex to a recursive_mutex to allow for this re-entry of EGL calls
Tests: android-10.0.0_r21/frameworks/native/cmds/flatland
Bug: angleproject:4354
Change-Id: If8a817df45e9f58d5f06884510350e17d7127fa9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2029218
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
gl.xml was modified as two enums were missing from their proper group.
dxgi_support_data.json was fixed to not expect BC4 and BC5 on FL9_3
Bug: angleproject:3149
Change-Id: Ieb97a8cf8e92258c1b44e090e823fac227997174
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2033068
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
Found two issues when native OVR_multiview and OVR_multiview2 extensions are generated.
1. OVR_multiview got replaced by the OVR_multiview2 in the translated shader (ESSL & GLSL)
2. Duplicate #extension OVR_multiview2 (for Fragment & Vertex) and 'layout (num_views=x)' (for Vertex) got generated into the translated shader.
Bug: angleproject:4247
Change-Id: I9a550883eeb326d95af4557578f8202a9493f4ec
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1983802
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Rafael Cintron <rafael.cintron@microsoft.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Broadcom's vendor ID wasn't listed anywhere.
Fixed the sort order of vendor names in a number
of places also.
Bug: angleproject:4218
Change-Id: Iddc504fa35833ac14375cb77e7a2b1cc405f0e80
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1972714
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Logs information listed at:
https://opengles.gpuinfo.org/listcapabilities.php
in CSV format
The list from gpuinfo doesn't include capabilities
introduced by extensions
Test: angle_end2end_tests.exe --gtest_filter=*PrintGLESCapabilities*
Bug: angleproject:4093
Change-Id: I59c82879ee2e3486269aa0cb40e2ee6c6e646ec5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1917443
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
VK_IMAGE_USAGE_STORAGE_BIT is always enabled for vkImage, this
increases memory bandwidth in some platforms.
This CL changes the behavior to enable VK_IMAGE_USAGE_STORAGE_BIT
when necessary.
Bug: angleproject:3904
Test: angle_end2end_tests
Test: angle_deqp_gles2_tests
Change-Id: I8ffd37efa8d99d04328fa6232de0755be3273d9e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1857799
Commit-Queue: Sunny Sun <sunny.sun@arm.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
ANGLE always enables the Mipmap. The fix does redefining
the image with mipmaps and replace the origin one only
when it is necessary.
Bug: angleproject:3737
Change-Id: Ia33a16fd7feae303fb114988059c4eec58c4232d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1750627
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Ian Elliott <ianelliott@google.com>
This CL adds a new D3D11on12 device option which runs the D3D11
API on top of D3D12. This is done to aid in preliminary
investigations into the feasibility of creating a full D3D12
backend implementation.
Bug: angleproject:3919
Change-Id: I0ad4250eb3c93b0b74274c904aac74f03753c7ad
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1814404
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
- 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>
- 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>
Per spec, in eglCreateContext when client version attributes are invalid - set
EGL_BAD_ATTRIBUTE. Set EGL_BAD_MATCH when config is not compatible.
Rename config variables in ValidateCompatibleConfigs to distinguish context
from surface configs. Context config handled differently when EGL_NO_CONFIG.
Bug: angleproject:3755
Test: angle_end2end_tests --gtest_filter=EGLCreateContextAttribsTest*
Change-Id: Iaea57653cf643ff60c8d4eabd3f022306bf1f4ca
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1747298
Reviewed-by: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
GL_HALF_FLOAT and GL_HALF_FLOAT_OES have different
values and only the latter is valid in GLES 2.0.
However, angle_deqp_khr_gles2_tests expects these
two enums to be treated as interchangable. This
is a bug in deqp, so the affected tests should
be expected to fail until the bug is fixed.
Bug: angleproject:3451
Test: dEQP.KHR_GLES2/core_internalformat_texture2d_*_half_float_*
Change-Id: If3a8078e592b18c60c883dfebd246435761a4423
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1743051
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
- 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>
This reverts commit 134d6eed2a.
Reason for revert: glmark2 is unable to start on Android-Q when using ANGLE as the driver.
Original change's description:
> Vulkan: pipeline cache not populated as blob cache is not set
>
> 1. Use vkMergePipelineCaches in eglSetBlobCacheFuncsANDROID as
> blob cache callbacks are set after eglInititalize.
> 2. Use a more proper way to save the cache data to disk.
>
> Bug: angleproject:3318
> Change-Id: Ieb5d10ab93e7afb2aab4446b387d7f36c878a686
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1559671
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Commit-Queue: Jamie Madill <jmadill@chromium.org>
TBR=syoussefi@chromium.org,jmadill@chromium.org,fei.yang@arm.com
# Not skipping CQ checks because original CL landed > 1 day ago.
Bug: angleproject:3318
Change-Id: I51e49bf103142e80b2c9028b3af6d3bb58cf6348
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1683820
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
1. Use vkMergePipelineCaches in eglSetBlobCacheFuncsANDROID as
blob cache callbacks are set after eglInititalize.
2. Use a more proper way to save the cache data to disk.
Bug: angleproject:3318
Change-Id: Ieb5d10ab93e7afb2aab4446b387d7f36c878a686
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1559671
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
The issue occurs that binds the same buffer and calls glDrawElements
with the same indices. The offset has been reset in the
VertexArrayVk::syncState(), but it doesn't check the actual value
in the ContextVk::setupIndexedDraw().
Also corrected case where update via BufferSubData wasn't being
sent to the HW.
Bug: angleproject:3362
Change-Id: I0f7d2fc162bc8f1c36cb09ba689fd27b482b9035
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1666345
Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
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>
Some NVIDIA D3D11 drivers are buggy and interprets the level passed to
GetDimensions as being relative to 0, rather than the SRV's MostDetailedMip.
A test is added which reads from non-zero base level integer texture. When the
workaround is not being used, reads outside the first quadrant return black.
Bug: chromium:679639
Change-Id: I5282a1ba207b2d553d1836f9460ec09cb5590ea6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1591594
Commit-Queue: Kimmo Kinnunen FI <kkinnunen@nvidia.com>
Reviewed-by: Kimmo Kinnunen FI <kkinnunen@nvidia.com>
Changed the mapping between gl::BufferUsage flags
and D3DBufferUsage flags. Only gl::BufferUsage::DynamicDraw
gets mapped to D3DBufferUsage::DYNAMIC now. This reflects
a better mapping between GL and D3D.
BUG=angleproject:3366
Change-Id: I5062f91fdb3664339e2c259b399d5f47401675d6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1569465
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
changes include:
1) GL_OVR_multiview to GL_OVR_multiview2 extension directive change
2) Removal of all references to side by side. We no longer support multiple views in a single 2DTexture. Only 2DTextureArray's are supported
3) WebGL 2 (ES3) is required for multiview
Bug: angleproject:3341
Change-Id: Ie0c1d21d7610f8feebdb2e4d01c6947f57e69328
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1552023
Commit-Queue: Rafael Cintron <rafael.cintron@microsoft.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
This commit adds support for querying the GL_BUFFER_DATA_SIZE of
GL_ATOMIC_COUNTER_BUFFER in the D3D renderer.
Bug: angleproject:1729
Test: angle_end2end_tests
Change-Id: Id6aae0d92c5e0960b2b245ba7d83970b04ba4eed
Reviewed-on: https://chromium-review.googlesource.com/c/1399143
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
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>
Generating static objects within a function results in multithread safe
code. This code generates the static objects upon the first execution of the
line which declares the object. This results in high runtime cost for
synchronization and a bigger code size.
Instead introduce a new function uint32_t GetPackedTypeInfo(GLenum type)
which returns a packed representation for the Type class. This
representation is usually returned in a register on the assembly level.
As a result we save constant storage for the TypeInfo object and one
indirection when reading any value from this object. The Type constructor
accepts the packed representation and unpacks it an inline function. For
fields which are not used the compiler also applies dead code
elimination which reduces the cost furthermore.
As a result of this change the cost of GetTypeInfo is reduced by a
factor of 4-5.
Bug: angleproject:2974
Change-Id: I8ed0bf2f09d087fa4cffa04f82e3b7f8c183fe30
Reviewed-on: https://chromium-review.googlesource.com/c/1340221
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Enable SpriteVisuals to work along side HWNDs so that Angle rendered content can be
hosted with Windows::UI::Composition APIs or XamlIslands in desktop Win32 applications.
Includes a whitebox test, verified Win7 compatibility
For more info see:
https://docs.google.com/document/d/1ggv6H-aK1a3pXNMTtMF6h0Bv0rulIeBpBxBBCJYR6Zs/edit?usp=sharing
Bug: angleproject:2947
Change-Id: Id005739553be2a6268cd4543f1b07aaf89760422
Reviewed-on: https://chromium-review.googlesource.com/c/1236844
Commit-Queue: James Clarke <james.clarke@microsoft.com>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>