Граф коммитов

111 Коммитов

Автор SHA1 Сообщение Дата
Jian Li 8aa2006978 Skip some tests on Mali because of a known issue
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>
2020-03-19 15:44:35 +00:00
Amy Liu 5bb36cc03b Passing covgl/covgl
Fix the following gles1-API implementation codes and some validation functions:
glClearColorx
glClearDepthx
glDepthRangex
glGetFixedv
glGetTexParameterxv
glLineWidthx
glPolygonOffsetx
glSampleCoveragex
glTexParameterx
glTexParameterxv
ValidateMaterialCommon
ValidateFogx
ValidateFogxv
ValidatePointSizex
ValidateRotatex
ValidateTexEnvx
ValidateTexEnvxv

Bug: angleproject:4281
Change-Id: Ia1d9e53c3ffde2bc77b7ca7eaa0d790e8ca43f10
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2075341
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
2020-03-12 17:47:48 +00:00
Ancheng Qiao 90019cea5e Vulkan: Add depth to mipmap generation
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>
2020-03-03 17:23:55 +00:00
Xiaoxuan Liu b07816d62b Vulkan: Add robust init for NULL texture image.
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>
2020-02-28 20:43:58 +00:00
Brandon Schade 0a6e118d49 Change g_Mutex from std::mutex to std::recursive_mutex
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>
2020-02-09 15:08:10 +00:00
Alexey Knyazev 58fc8b11cf Implement RGTC (BC4, BC5) compressed texture formats
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>
2020-02-04 22:58:25 +00:00
Artem Bolgar ffdd58f5c0 Fixing OVR_multiview and OVR_multiview2 issues
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>
2020-01-15 19:07:46 +00:00
Eric Binet 5aed7c74b7 Narrow point size range clamping to affected versions
Bug: angleproject:2970
Change-Id: Ie14725b0cf30738d394320c24a72bc947135f5cf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1993204
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
2020-01-11 01:56:01 +00:00
Gary Sweet 7b55aac3b3 Add Broadcom as a known vendor
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>
2019-12-19 18:00:56 +00:00
Brandon Schade b8e748be6b Vulkan: Add an end2end test to log GLES capabilities
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>
2019-11-21 00:27:22 +00:00
Sunny Sun df41552841 Vulkan: Enable VK_IMAGE_USAGE_STORAGE_BIT when it is needed
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>
2019-11-05 05:02:48 +00:00
Josh Matthews 67527cb452 Fix compilation on UWP targets.
Bug: angleproject:4053
Change-Id: Iaa358c8ce61d0ebaae11672bfb6dac2d3e847be1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1881343
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
2019-11-05 03:04:38 +00:00
Xinyi He 052167bc15 Vulkan: Mipmap is unconditionally enabled in ANGLE
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>
2019-10-23 20:38:28 +00:00
Nathan Zabriskie 5d9c4ee328 Add D3D11on12 device option
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>
2019-10-10 02:07:39 +00:00
Jaedon Lee a0159c0348 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>
2019-09-27 12:25:46 +00:00
Mohan Maiya fea6576678 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>
2019-09-19 19:27:53 +00:00
Jaedon Lee 3b46885e19 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>
2019-08-23 15:28:26 +00:00
Jeff Vigil 265fdf0c5f EGL: Set errors per spec for eglCreateContext
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>
2019-08-16 19:03:34 +00:00
Mohan Maiya abce77a652 Add tex2d half float tests to expectations file
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>
2019-08-09 15:04:40 +00:00
Mohan Maiya 8400d05c09 Vulkan: Support the vertex_type_2_10_10_10_rev format
- Modify the python script and json file to generate the code which
adds the function for vertex_type_2_10_10_10_rev. These functions
handle the loading and conversion for vertex_type_2_10_10_10_rev.

- Modify ConvertVertex.comp and ConvertVertex.comp.json to perform
a GPU based conversion for vertex format of type 2_10_10_10_rev

- Modify BindingIsAligned function to check that both stride and
binding offset is aligned to the format size when the component
size is not aligned to 8 bits.

- Modify deqp3 expectations file to enable type_2_10_10_10_rev format
vertex array tests.

Bug: angleproject:3193
Test: dEQP-GLES3.functional.vertex_arrays.single_attribute.*2_10_10_10*
Change-Id: I2358d0d8888f7dfd7eac999dc150f643167de817
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1709035
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
2019-08-08 13:53:11 +00:00
Hyunchang Kim 4c118cb3d3 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>
2019-08-02 19:07:07 +00:00
Fei Yang a71549b112 Vulkan: Intermittent failures in many GLES2 CTS
The stage mask in vkCmdPipelineBarrier is incorrectly set.

Bug: angleproject:3473
Change-Id: I4fea5994a391b0db0f81183f1c4d4ba47d387acb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1631849
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
2019-07-22 17:37:04 +00:00
Cody Northrop 7d6923de4f Revert "Vulkan: pipeline cache not populated as blob cache is not set"
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>
2019-07-01 12:58:57 +00:00
Fei Yang 134d6eed2a 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>
2019-06-28 12:29:35 +00:00
Courtney Goeltzenleuchter b867bc6f10 Vulkan: Fix dirty element array buffer updates.
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>
2019-06-20 21:10:17 +00:00
Mohan Maiya 141a23f64f Add support for OES_depth24
Allow 24-bit depth as a valid Renderbuffer format.

Bug: angleproject:3229
Test: angle_end2end_tests --gtest_filter=DepthStencilFormatsTest.DepthBuffer/*
Change-Id: I166639ec0e000595dc55848e4b8b7bef627b6471
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1661050
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
2019-06-18 12:32:35 +00:00
Minkyu Jeong 431ef2fdd3 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>
2019-05-24 04:09:44 +00:00
Nick Shaforostov 8fb00484a4 fix a freeze when returning from fullscreen to maximized (nvidia only)
freeze happens after repetitive enter & exit full screen mode

Bug: angleproject:3431
Change-Id: Iea4cd75dc30cd17e53c0a7f1174e39b24d878d4b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1599617
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
2019-05-08 18:12:07 +00:00
Anders Leino f6cbe44a8d Use D3D11 GetDimensions driver workaround for 2D integer textures
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>
2019-05-07 11:23:24 +00:00
Sascha Kolodzey 50eb1e6f77 D3D: Update dynamic BufferUsage flags.
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>
2019-04-16 19:28:02 +00:00
Mingyu Hu 7d64c4863d GL_ANGLE_multiview has been renamed to GL_OVR_multiview2.
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>
2019-04-16 17:37:10 +00:00
Enrico Galli a3b2e71fbc ES31: Support for GL_BUFFER_DATA_SIZE on GL_ATOMIC_COUNTER_BUFFER in D3D
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>
2019-01-10 21:21:45 +00:00
Shahbaz Youssefi 8f1b7a66a5 Vulkan: Add DispatchUtilsVK
This class provides a set of compute-based internal utilities.
Currently, buffer clear and copy are implemented.  Other possibilities
include more efficient mip map generation, or specialized texture
operations.

VertexArrayVk::updateIndexTranslation() is updated to convert the
GL_UNSIGNED_BYTE index buffer to a GL_UNSIGNED_SHORT one using this
class to avoid a CPU readback.

The vk::Format class is augmented with a few flags (IsInt, IsUnsigned)
to be able to select the appropriate shader based on the format (float,
int or uint).

Bug: angleproject:2958,angleproject:3003
Change-Id: Ie35519deb3c32a3da5ccf74080c70092c9287f0a
Reviewed-on: https://chromium-review.googlesource.com/c/1336307
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
2018-12-05 21:41:45 +00:00
Markus Tavenrath 0d665139fe Don't generate TypeInfo objects as static objects within GetTypeInfo function
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>
2018-11-26 16:27:51 +00:00
James Clarke 99d0463cd9 Windows: add support for SpriteVisuals as a native window type.
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>
2018-11-02 15:53:57 +00:00
Joonatan Saarhelo 945dea36ab Clamp glClearDepthf and glDepthRangef
BUG=angleproject:2884

Change-Id: Ib1867fbd4c2ea3c3b29d2f987d384762f5851e8f
Reviewed-on: https://chromium-review.googlesource.com/c/1276585
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
2018-10-18 14:42:40 +00:00
Till Rathmann c1551dc2a7 D3D11 fix: Mipmapping was used although disabled via Sampler
When using a sampler the texture was created as if it has mipmaps,
regardless what you specified in GL_TEXTURE_MIN_FILTER via
glSamplerParameteri() -- mistakenly the default value
GL_NEAREST_MIPMAP_LINEAR or the value set via glTexParameteri() was
evaluated.
If you didn't provide mipmaps and didn't let the driver generate them
this led to not sampling your texture data when minification occurred.

BUG=angleproject:2772
TEST=angle_end2end_tests.Texture2DTestES3.MinificationWithSamplerNoMipmapping

Change-Id: I195147e208129c6fa8686bb0d9aea6931b2f20b1
Reviewed-on: https://chromium-review.googlesource.com/1175910
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
2018-08-15 19:04:20 +00:00
Rafael Cintron 05a449a795 Replace reinterpret_cast with safer or no cast
When casting types to one another in C++, the weaker the cast,
the better.

This change replaces instances of reinterpret_cast with static_cast
or no cast where it safe and correct to do so.

BUG=angleproject:2683

Change-Id: I99c9033614a65282ae1d78cf0f4b80fabd75877a
Reviewed-on: https://chromium-review.googlesource.com/1109396
Commit-Queue: Rafael Cintron <rafael.cintron@microsoft.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
2018-06-21 18:42:27 +00:00
Junliang Yan 021134691e PPC/s390: Fix GN error on PPC and s390
R=cwallez@chroimium.org, fjhenigman@chromium.org, geofflang@chromium.org, jmadill@chromium.org, ynovikov@chromium.org

Change-Id: Iae4cfeb4db83c777d3c9a0a4c115c583113c5b70
Reviewed-on: https://chromium-review.googlesource.com/1087567
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
2018-06-06 02:45:52 +00:00
Victor Costan 6c59e4a156 Migrate from <tr1/tuple> to <tuple> types.
Bug: 829773
Change-Id: I9bfe3c7b585acb7c91303f59ee448ce2d2dc2786
Reviewed-on: https://chromium-review.googlesource.com/999181
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Victor Costan <pwnall@chromium.org>
2018-04-09 07:25:38 +00:00
Jani Hautakangas f9176ce52c GLIBC fix: size_t requires include <stddef.h>
Compiling fails with some combinations of gcc and glibc.
'size_t' does not name a type in proc_table.h

Change-Id: Id79e033dc72d836788551e076ced6dbd706ce902
Reviewed-on: https://chromium-review.googlesource.com/995422
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
2018-04-05 20:32:02 +00:00
Dzmitry Malyshau b3b177d77f Update driver constants on program change. Comes with a new SamplerMetadataUpdateOnSetProgram test.
This is a fix for a graphics problem we've been seeing for a while with WebRender+Angle on Nvidia/Windows. The sampler metadata doesn't get updated properly for some of the draw calls, since it's not invalidated on program change (this is what the CL is fixing). Extra entries get filled with garbage data because the constant buffer is updated with `MAP_WRITE_DISCARD`, and only those samplers are updated that the current program has. This may generally occur undetected, if not for our `textureSize` calls that appear to go the NV-specific Angle workaround path that ignores our `baseLevel = 0` and instead picks the one from the driver constants (which contains garbage), leading to either zeroes returned or even crashing the driver sometimes...

BUG=angleproject:2399

Change-Id: Ie2bef32184e2305c7255299933b899eb3fffb7ab
Reviewed-on: https://chromium-review.googlesource.com/949412
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
2018-03-12 15:14:02 +00:00
Kai Ninomiya d63d0007c1 dontInitializeUninitializedLocals on Qualcomm only
SH_INITIALIZE_UNINITIALIZED_LOCALS triggers a very unpredictable crash
in the shader compiler on Qualcomm Adreno (at least 4xx) on Marshmallow.

Bug: angleproject:2046
Change-Id: I9a109f7ff442b4e9d3880d137f1a55a19105bcef
Reviewed-on: https://chromium-review.googlesource.com/705930
Commit-Queue: Kai Ninomiya <kainino@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
2017-10-09 22:32:58 +00:00
Jerome Duval d2e8792981 Enable Haiku in platform-specific headers.
1. src/common/platform.h updated to define ANGLE_PLATFORM_POSIX on Haiku.
2. include/EGL/eglplatform.h updated to add stubs typedefs for
platform-specific primitives for Haiku.

Change-Id: I28775e909ad9cabec1c474ff4fe0a241eb05d6a1
Reviewed-on: https://chromium-review.googlesource.com/573022
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
2017-07-17 17:47:55 +00:00
Brandon Jones 6cad566797 Improve Debugging Strings
This change replaces common string literals used for
error messages with const string variables mapped in
a new header file.

Additionally, more validation for WebGL naming scenarios
has been added, along with unit tests.

BUG=:angleproject:1644

Change-Id: Icff44a456aa78221c6df12b0454a7cc147a7d26e
Reviewed-on: https://chromium-review.googlesource.com/535974
Commit-Queue: Brandon1 Jones <brandon1.jones@intel.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
2017-07-05 19:09:55 +00:00
Andrei Volykhin a552707181 Add support for EXT_YUV_target
Add new sampler type "__samplerExternal2DY2YEXT"
to sample a YUV texture image and output color value
without any color conversion,
new additional type to specify color space standard formula and
built-in functions for yuv to rgb transformation.

Change-Id: I1780650fe84cd75191c1ca1e4118e89d585bfd92
Reviewed-on: https://chromium-review.googlesource.com/454697
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2017-03-22 20:50:14 +00:00
Jamie Madill 7bb425c64d Revert "D3D11: Clean up blendState code."
This reverts commit 786ad38767.

Reason for revert: 
Seems to have a bug with binding the BlendStates, causing a crash on
Intel.

https://luci-milo.appspot.com/buildbot/chromium.gpu.fyi/Win10%20Release%20%28Intel%20HD%20530%29/141

Failing WebGL 2 tests
WebglConformance_conformance2_reading_read_pixels_from_fbo_test
WebglConformance_deqp_functional_gles3_readpixel

Also generates D3D11 runtime warnings:
D3D11 ERROR: ID3D11DeviceContext::Draw: The renderTarget bound to slot 0 has a format (R8_UINT) that does not support blending. The Pixel Shader output signature indicates this output could be written, and the Blend State indicates blending is enabled for this slot. [ EXECUTION ERROR #376: DEVICE_DRAW_OM_RENDER_TARGET_DOES_NOT_SUPPORT_BLENDING]

BUG=angleproject:1632
BUG=chromium:688419

Original change's description:
> D3D11: Clean up blendState code.
> 
> Masked Clear Draw Changes:
> - Use universal blendstate object
> - Eliminate blendState cache for masked clears
> - Use rasterState and scissor rect for scissoring instead of adjusting vertex positions
> - VB contains only static position data (per vertex color removed)
> - Clear color(s) and depth clear values now passed in using a constant buffer
> - MultiColorclear shader used for float clears to workaround alpha rounding issues
> - Update shader compile script and shader source and bytecode headers
> - Remove unused shaders (source and bytecode headers)
> - Use com pointers where possible for D3D11 objects
> 
> BUG=angleproject:1632
> 
> Change-Id: I98e38451bd453f53b772fe93ec9dcceb4196ea58
> Reviewed-on: https://chromium-review.googlesource.com/413736
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Commit-Queue: Shahmeer Esmail <shahmeer.esmail@intel.com>
> Commit-Queue: Jamie Madill <jmadill@chromium.org>
> 

TBR=geofflang@chromium.org,jmadill@chromium.org,shahmeer.esmail@intel.com
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=angleproject:1632

Change-Id: Iea537505d8cce7241edaba1f1d9f404abb1d9a10
Reviewed-on: https://chromium-review.googlesource.com/437306
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
2017-02-03 18:10:51 +00:00
Shahmeer Esmail 786ad38767 D3D11: Clean up blendState code.
Masked Clear Draw Changes:
- Use universal blendstate object
- Eliminate blendState cache for masked clears
- Use rasterState and scissor rect for scissoring instead of adjusting vertex positions
- VB contains only static position data (per vertex color removed)
- Clear color(s) and depth clear values now passed in using a constant buffer
- MultiColorclear shader used for float clears to workaround alpha rounding issues
- Update shader compile script and shader source and bytecode headers
- Remove unused shaders (source and bytecode headers)
- Use com pointers where possible for D3D11 objects

BUG=angleproject:1632

Change-Id: I98e38451bd453f53b772fe93ec9dcceb4196ea58
Reviewed-on: https://chromium-review.googlesource.com/413736
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahmeer Esmail <shahmeer.esmail@intel.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
2017-02-03 00:27:55 +00:00
Xinghua Cao fb02830d8f The return type of imageSize(gimageCube) is int2, not int3
BUG=angleproject:1442

Change-Id: I18bee163e7c7ce159cd23d6136486c49b7d9ec94
Reviewed-on: https://chromium-review.googlesource.com/414950
Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
2016-11-28 16:27:49 +00:00
He Yunchao 29ab9ff8f6 translator: fix a typo in comment
Change-Id: Ibfd39bc478c4e9ddf40138ccf6bd37f247f83632
Reviewed-on: https://chromium-review.googlesource.com/413036
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
2016-11-22 15:52:26 +00:00