|
d26fb99e
|
2020-04-10T16:04:26
|
|
Add DrawBaseVertexVariants Tests
This tests different DrawElements*BaseVertex draw calls
from different extensions including OES_draw_elements_base_vertex,
EXT_draw_elements_base_vertex, and ANGLE_base_vertex_base_instance,
with various combinations of base vertex, base index values.
Bug: angleproject:4536
Change-Id: I3cd256522684c6040199d7704aac8575237dbd96
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2146292
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shrek Shao <shrekshao@google.com>
Commit-Queue: Shrek Shao <shrekshao@google.com>
|
|
cf2c8e60
|
2020-04-09T18:52:29
|
|
EGL: Relax test skip conditions for a few colorspace ImageTests
Relax test skip conditions for the following colorspace
ImageTests -
- SourceRenderbufferTargetTexture_Colorspace
- SourceRenderbufferTargetTextureExternal_Colorspace
- SourceRenderbufferTargetTextureExternalESSL3_Colorspace
For these tests, it is sufficient to check for support of
EGL_EXT_image_gl_colorspace extension
Bug: angleproject:3756
Tests: angle_end2end_tests --gtest_filter=ImageTest.SourceRenderbufferTargetTexture*_Colorspace*
Change-Id: I123fb14fc79e8f949a903b7586a0badf54297cfa
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2144549
Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
c68dfaf3
|
2020-04-01T16:36:25
|
|
Avoid GPU-GPU copy for StructuredBuffer
If uniform block is translated to StructureBuffer on D3D backend,
must do a GPU-GPU copy when updating uniform buffer. If buffer's
latest usage is StructuredBuffer, directly upload to structured
buffer.
Bug: angleproject:3682
Change-Id: I7303866d08705a43238732e5f5ae4858f0a33d63
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2131871
Commit-Queue: Xinghua Cao <xinghua.cao@intel.com>
Reviewed-by: Jiajia Qin <jiajia.qin@intel.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
405f8e7b
|
2020-02-24T17:38:10
|
|
Vulkan: Support Program Pipeline Objects
Add support for PPOs to the Vulkan back end.
Bug: angleproject:3570
Change-Id: I5403456929847c185467b008d810f31ecfcb60cc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2072652
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
c12c1f57
|
2020-04-03T01:33:54
|
|
D3D11: Skip setting BlendState for integer attachments
Some D3D11 drivers may produce unexpected results when blending is
apllied to integer attachments.
Minor cleanup: early exit for nullptr attachments.
New BlendIntegerTest in angle_end2end.
Bug: angleproject:4548, angleproject:4547, angleproject:4525, angleproject:4394
Change-Id: I236ac6db1f8dcaca54e9bc1b0803e1775fd75632
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2134448
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
dac5cc3b
|
2020-04-08T18:26:46
|
|
EGL: Add support for EGL_EXT_image_gl_colorspace extension
Add support for creating images with custom colorspace.
Bug: angleproject:3756
Tests: angle_end2end_tests --gtest_filter=ImageTest*
Change-Id: I9c332c012541c094728d9d9bde7add4189084a33
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2104088
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
|
|
2caf7ffd
|
2020-03-23T12:12:42
|
|
Address a TODO for instance uniform block
This patch resolves one TODO that Support to translate instance uniform
block containing only a large array member to Structured buffer on D3D
backend when necessary.
Bug: angleproject:4205
Change-Id: If2cd6cf633080820ea33e52269d7d86cd587c9ee
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2114912
Commit-Queue: Xinghua Cao <xinghua.cao@intel.com>
Reviewed-by: Jiajia Qin <jiajia.qin@intel.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
2a0c3596
|
2020-03-31T15:36:45
|
|
Vulkan: Clean up robust and emulated image clears.
This change consolidates image clears in multiple places into a single
site in ImageHelper initialization. It adds support for appending clear
image commands as well as prepend (the default). We prepend clears
because image initialization happens after data upload.
The Vulkan robust clear path now works like the other back-ends. The
change flushed out a bug where partially uninitialized CopyTexImage was
not correctly initializing a texture before triggering a full resource
clear. Texture::copyImage now uses a workaround where we first init the
image before clearing it. After the init we upload the new data.
We'll use the appending clears path when implementing deferred clears.
Bug: angleproject:4517
Change-Id: If9212f3b8cdd0fc8b7e729d364530801a644e164
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2130627
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
c9c4e4ed
|
2020-04-02T10:29:52
|
|
Track rendering feedback loops by-context.
This fixes an issue where feedback loops detection would trigger false
positives based on texture use in multiple contexts.
1) there are two contexts, C1 and C2, sharing resources
2) in C1, there is a texture T bound to GL_TEXTURE_2D, and a program in
use that will sample C1
3) in C2, a framebuffer is created and T is bound to it
This fix indexes each set of active bindings in an object by ContextID.
We can potentially redo this solution in the future if this proves to
have too much tracking overhead.
Includes a test writen by Ken Russell.
Bug: angleproject:4517
Change-Id: I67012e68947c42d863dca193972576c82d5f3712
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2134406
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Kenneth Russell <kbr@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>
|
|
dd00f16b
|
2020-04-02T14:04:44
|
|
Vulkan: Fix FBO cache when updating disabled attachments.
Fix this by consistently checking if the attachment is enabled when we
update the serials.
Also includes a regression test and more ASSERTs.
Bug: angleproject:4540
Change-Id: I154d23cad71f1674d893390f923f45c643a58925
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2134409
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Tobin Ehlis <tobine@google.com>
|
|
1e81dd4a
|
2020-04-01T17:46:58
|
|
Suppress failures after Win Intel driver upgrade.
Bug: angleproject:4533
Change-Id: I482c4caa79fb5fdc9cd4a068f7e7e05890121fa2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2130227
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
745e0712
|
2020-03-21T17:46:05
|
|
Vulkan: Enable CPU only buffers for PBOs
Add support for a CPU only buffer for PBOs that serve as
the destination for all host operations like MapBuffer*.
This removes the latency caused by waiting for the in-flight
GPU commands to be complete before handing over the buffer
to the app.
This change removes a ~6ms wait/sleep on the first call to
MapBuffer* in each frame of Manhattan
Bug: angleproject:4339
Tests: angle_end2end_tests --gtest_filter=BufferDataTest*Vulkan
Change-Id: I52016b160af8a670cc30f01c05e48f699521310f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2116874
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Tobin Ehlis <tobine@google.com>
|
|
7d8c2f2e
|
2020-03-26T22:44:15
|
|
Hide SwiftShader OS Window in dEQP and end2end tests
This prevents a race between starting Xvfb on test bots
and X11 calls in X11Window::setVisible(),
which used to cause flaky hangs on Linux SwANGLE bots.
Unfortunately, in order to hide SwiftShader OS window,
it must be a separate window from other backends,
so it is no longer possible to have a single window for all backends,
even if we don't reuse EGL Display.
The only platform that still uses a single OS Window is Android,
since there is only one system window per test application.
In addition, all the tests that make OS Window visible explicitly,
no longer do this for SwiftShader device.
Bug: angleproject:4434
Change-Id: I1a067c22bfeee9288046b9d9566740731c0d627c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2125945
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
dbb23ec3
|
2020-03-30T14:24:53
|
|
Vulkan: Remove swiftshader mipmap3d test skip
Bug: angleproject:3983
Change-Id: I9c487cc7db5d5e22a6cff00b40e4081498ab771f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2128207
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
05fa1a99
|
2020-03-30T22:02:16
|
|
Skip test flaky on SwANGLE bots
dEQP.EGL/functional_sharing_gles2_multithread_random_egl_server_sync_shaders_compile_9
EGLSurfaceTest.ResizeWindow
AttributeLayoutMemoryIndexed.Test
Bug: angleproject:4495, angleproject:4453, angleproject:4502
Change-Id: Iad5097412372acc8ac36c742445763451c8122ad
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2129181
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
b83b0f5e
|
2020-01-31T15:09:17
|
|
Add support for NV_read_depth, NV_read_stencil and NV_depth_buffer_float2 extensions
This cl adds the ability for the ReadPixels function to read other
attachments than the color attachment. Checks were added for both
depth and stencil attachments.
A new test was added (DepthStencilFormatsTest.DepthStencilReadback)
to test this new functionality. As the name mentions, it's used to
test reading from the depth and stencil attachments using ReadPixels.
Bug: angleproject:4295
Change-Id: I6fe9be11f05d6055a5883b4315f870e7c0ac41ad
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2031702
Commit-Queue: Alexis Hétu <sugoi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@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>
|
|
abaa3573
|
2020-02-20T10:23:02
|
|
Vulkan: Only calculate variable locations once
Variable locations and descriptor set/binding values are calculated
multiple times:
- Compiling GLSL->SPIR-V
- Creating the Vulkan pipeline layout
- Updating descriptor sets
These values should instead be calculated once and reused throughout
since they won't change without recompiling the shader program.
Bug: angleproject:3570
Change-Id: I5d8767b3b2e2f741aade7fec9991eea53ee2eb98
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2067101
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
d03b15b2
|
2020-03-26T17:22:18
|
|
Vulkan: Mask out Depth/Stencil RTs in feedback loops.
This should enable some cases of limited support for feedback loops
with depth/stencil buffers. For example with Manhattan and the Vulkan
back-end.
Increases the number of RenderPasses in Manhattan slightly. This will
regress performance slightly until we can work out a better solution
that is also conformant with the spec.
Bug: angleproject:4517
Change-Id: I2758e6b4c2a930474c09cdc0950f3b6c34541089
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2106670
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
d0800d29
|
2020-03-24T15:01:22
|
|
Vulkan: Fix crashes/failures in array-of-struct uniforms
When array-of-struct support was added to ANGLE, it was not added to
the shader cache serialize/deserialize functions.
This affects many GLES 2/3/3.1 dEQP tests, such as:
dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.struct_in_array.sampler2D_samplerCube_vertex
Bug: angleproject:4475
Bug: b:151387995
Change-Id: I159f6340db255ec50c16b59fec23a61ed05aa8f7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2118152
Commit-Queue: Ian Elliott <ianelliott@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
e39d055d
|
2020-03-23T17:45:57
|
|
Fix robust resource initialization with clipped CopyTexSubImage2D.
When CopyTexSubImage2D calls were clipped against the bounds of the
read framebuffer by the underlying renderer backends, the robust
resource initialization code assumed that the original destination
area would be overwritten by the renderer, which was not the case.
Add new tests which were previously failing on macOS with the
ES2_OpenGL and ES3_OpenGL backends. The Metal backend is still failing
and a follow-on bug has been filed.
Bug: angleproject:4504
Change-Id: I34821dd90597f31b3cbf0921b94756556e485c91
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2116873
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
|
|
cb7e7387
|
2020-03-20T22:15:39
|
|
Remove 32-bit Subzero GLES31 SwANGLE suppressions
Remaining Windows crashes fixed by
https://swiftshader-review.googlesource.com/c/SwiftShader/+/42608
Bug: angleproject:4482
Change-Id: If1d6b6c4bd172c36108d31e01f561e001f49683f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2113716
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
6b462120
|
2020-03-20T19:23:17
|
|
Skip flaky SwANGLE end2end tests.
AttributeLayoutNonIndexed.Test
AttributeLayoutBufferIndexed.Test
EGLSurfaceTest.ResizeWindowWithDraw
Bug: angleproject:4453, angleproject:4502
Change-Id: I6dbd333e428d61d84bb17bf0c4112fa66cff9846
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2113711
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
c0b267cc
|
2020-03-20T17:28:50
|
|
Skip ExternalWrapTest on Ozone.
Ozone only supports external target for images created with
EGL_EXT_image_dma_buf_import.
BUG=angleproject:4443
BUG=chromium:1063462
Change-Id: Ia62fdd92198bdcc2d9840765305b4cc613fd3f7c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2113450
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: 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>
|
|
13ea5b7f
|
2020-03-19T12:43:12
|
|
Implement gl[Get]MemoryObjectParameterivEXT
These functions are required to tell the driver that the memory object
is dedicated memory. This is required for AMD drivers on Linux.
Bug: chromium:1049218
Change-Id: I17d69cde5e6308791dc90784f4d6e348503a6ed6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2110051
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
07467b4a
|
2020-03-20T10:40:56
|
|
Remove GL_CHROMIUM_path_rendering
Bug: chromium:1063193
Bug: angleproject:4270
Change-Id: I35b24b7d8d892181955e49dd2495655bc57cb0df
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2112275
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
4fb3c28f
|
2020-03-19T19:10:45
|
|
Vulkan: Fix Framebuffer cache depth/stencil issue.
The DrawBuffers resetting logic didn't update the depth/stencil serial.
Fix this and add a regression test that would crash in this situation.
Note that the Manhattan benchmark could trigger this under some cases.
Bug: angleproject:4322
Bug: angleproject:4490
Change-Id: Ie4b24efeb5991ecaa85bf8f964f77476bd6f167d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2111333
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
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>
|
|
0e069b42
|
2020-03-19T21:40:51
|
|
Skip SwANGLE GLES31 tests which crash with 32-bit Subzero only on Windows
Linux 32-bit crashes were fixed.
Bug: angleproject:4482
Change-Id: I3efd7c760dfec1f8b909eee2ed84f5f9ebc33c3a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2111970
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
ca45852d
|
2020-03-19T22:04:47
|
|
Skip flaky TransformFeedbackTest.MultiContext on Win Intel Vulkan
Bug: angleproject:4497
Change-Id: I92e7ad9f0c34fe0b5f67318271ececc218c20757
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2111781
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
8aa20069
|
2020-03-18T17:55:06
|
|
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>
|
|
f98084ed
|
2020-03-12T10:06:26
|
|
Fix ShaderStorageBufferReadWriteOffset end2end test
Test: ShaderStorageBufferTest31.ShaderStorageBufferReadWriteOffset.
Align kBufferOffset to bufferAlignOffset correctly.
Bug: angleproject:4471
Change-Id: I71084839a845138b32d58d8bd2cf6fed2633a9be
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2100047
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
f1eb10ef
|
2020-03-10T16:40:53
|
|
GLES: Skip tests if vertex SSBO were not supported
Skip tests if GPU doesn't support vertex shader storage
buffer object.
Bug: angleproject:4466
Change-Id: Icc7b6e686d7b4d5ecd2e05f6f09551f839f5302d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2096740
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
cb9a86a9
|
2020-03-15T14:24:32
|
|
Skip SwANGLE GLES31 tests which crash with 32-bit Subzero.
Started with https://swiftshader-review.googlesource.com/c/SwiftShader/+/42108
Bug: angleproject:4482
Change-Id: I48effe26aa7ce1b574f9df8ad9c3f560cb599cf3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2104406
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
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>
|
|
5bb36cc0
|
2020-02-21T18:25:54
|
|
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>
|
|
a2f9ad39
|
2020-03-09T14:28:39
|
|
Vulkan: Remove unused atomic counter builtins
Atomic counters are not supported by Vulkan. Most are
already converted by the RewriteAtomicCounters traversal,
but that is only invoked when atomic counters are active.
This CL introduces another pass that removes any atomic
counter builtin that was not handled by the previous pass.
It also will assert if it sees any atomic counters active,
thus ensuring it is only used when needed.
Test: KHR-GLES31.core.compute_shader.shared-struct
Test: angle_end2end_tests.exe --gtest_filter="*AtomicCounter*"
Bug: angleproject:4189
Bug: b:150310216
Change-Id: I61d10e954886dc94fede8b344f5a0ede3b689adb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2095688
Commit-Queue: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
2e5bd9b1
|
2020-03-11T17:46:06
|
|
Update SimpleStateChangeTest.DrawRepeatUnalignedVboChange suppression
Also flaky on Linux (already suppressed on Windows).
Bug: angleproject:4470
Change-Id: I032241a4201dc7883d6107c643cf88c92fb01ba3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2099402
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
1b12f6e5
|
2020-03-10T14:26:49
|
|
Remove MultisampleCompatibilityTest suppression
The failed DrawCoverageAndResolve can pass on 26.20.100.7323 now.
Bug: angleproject:3855
Change-Id: Ia6eb9fef2a57f0bdf52cb2e45c138457f5de88aa
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2096230
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jie A Chen <jie.a.chen@intel.com>
|
|
a8c947c7
|
2020-02-06T08:53:16
|
|
Enabled GL_KHR_no_error
Enabled GL_KHR_no_error added end2end tests for it
Note that GL_KHR_no_error can only be enabled by setting the EGL
attribute currently. Context flags are not currently supported.
Bug: angleproject:1280
Test: angle_end2end_tests --gtest_filter=ContextNoErrorTest.*
Change-Id: Ib5c73b8e284e3e4e5f800750ad6fcbef77be4285
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2068899
Reviewed-by: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
0c9b6abd
|
2020-02-06T08:53:16
|
|
Skip invalid end2end test for ES2
Previously, the incomplete framebuffer depth stencil attachment
test would run on ES2 if GL_OES_packed_depth_stencil were present.
This is insufficient since it uses the GL_DEPTH_STENCIL_ATTACHMENT
enum, which is not introduced in any extension prior to ES3. The
test has been disabled on ES2, regardless of extensions.
Bug: angleproject:4454
Test: angle_end2end_tests --gtest_filter=StateChangeTest.FramebufferIncompleteDepthStencilAttachment/*
Change-Id: Ic5a6a521e35b49c5d723b33f588fa608264d6390
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2090783
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
55228e53
|
2020-03-04T18:25:47
|
|
Add Chrome texture formats test for VulkanExternalImageTest
This make sure the VkFormat/internalformat combinations that Chrome uses
succeed import, which in particular requires the object size to match.
Allowing VK_FORMAT_R8G8B8_UNORM VkFormat for GL_RGB8 will make this test
fail when run on a native vulkan that supports that format.
Bug: chromium:1058521
Change-Id: I91483568ba8552f40314f10215bfea59e5ca2b94
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2088652
Commit-Queue: Michael Spang <spang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
605ab763
|
2020-02-24T19:43:32
|
|
D3D11: Implement OES_draw_buffers_indexed
Existing CONSTANT_COLOR/CONSTANT_ALPHA limitation was generalized to independent blend states with draw call invalidation and a new end2end test. dEQP tests that are incompatible with this limitation result in INVALID_OPERATION and are marked as FAIL.
D3D11 renderer always normalizes and deduplicates requested blend states based on their enabled features and bound framebuffer.
Bug: angleproject:4394
Change-Id: I284796e18be71de1b5bfb087d36f6a45be4c3f70
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2070575
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
27a81308
|
2020-02-29T12:53:45
|
|
Vulkan: Re-enable RobustResourceInitTest.Texture test
Commit "Vulkan: Add robust init for NULL texture image." for
angleproject:4255 also fixed angleproject:3416, re-enable the
disabled test in 3416.
Bug: angleproject:3416
Change-Id: I36c09d90eafe9dea0b477c49487284d4a305d992
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2086931
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
028a7a72
|
2020-03-03T18:19:33
|
|
Skip if GL_EXT_texture_compression_dxt1 isn't supported
If GL_EXT_texture_compression_dxt1 is not support, will be failed
at glCompressedTexImage2D in CopyCompressedTextureTest.Immutable
Bug: angleproject:1424
Change-Id: I287c6a40c1c09fa379088e5ad4bec06f0dfc2f59
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2086533
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
90019cea
|
2020-02-26T18:04:25
|
|
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>
|
|
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>
|
|
da2e65c0
|
2020-03-01T13:01:24
|
|
Test Runner: Add stub register function to white box tests.
These tests use the same main function as end2end_tests. Add the
register function stub so the compilation works correctly in standalone
and component builds.
Bug: angleproject:4449
Change-Id: Ib1558a596b9a558b16a7c5b7bfccc1e495a67e39
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2082135
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
b07816d6
|
2020-01-02T15:13:37
|
|
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 a8e6a463121b9920564fb6efd7f2c857d7023fe3.
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>
|
|
6c56c579
|
2020-01-21T11:08:36
|
|
Add Android boot animation and rounding error test
This introduces an end2end test that makes the same GLES1
calls as Android's default boot animation. The test uses
images of much smaller sizes, but we do the same thing
with the images as the original code (it uses one image as a
mask and moves the other along behind it).
The original default boot animation code can be found here:
https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/cmds/bootanimation/BootAnimation.cpp#422
This change also implements glTexParameterx since the default boot
animation requires it. This function is part of OES_FIXED_POINT.
This also includes a test to check for int to floating point cast errors
when using GL_TEXTURE_CROP_RECT_OES.
Tests: angle_end2end_tests --gtest_filter=*DefaultBootAnimation*
angle_end2end_tests
--gtest_filter=*TextureParameterTest.IntConversionsAndIntBounds*
Bug: angleproject:3644
Change-Id: Ib7e99c9dc1c001c71543d03ea4dd76082192f6a7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2053506
Commit-Queue: Brandon Schade <b.schade@samsung.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tobin Ehlis <tobine@google.com>
|
|
da6d12d0
|
2020-02-27T14:20:32
|
|
Fix out-of-bounds read in test.
The test wasn't reserving a large enough buffer when initializing
the vertex data. Fix the test buffer limits.
Bug: angleproject:4430
Change-Id: I4b9a98e1af1cc8088afb871816061d7ee4dd6a2c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2079153
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
4d2040a6
|
2020-02-27T09:59:11
|
|
Make GLSLTest_ES31.MixOfAllResources more lenient.
Lower precision in Vulkan caused off-by-one issues with this test.
BUG=angleproject:4438
Change-Id: I17111a06133ef403be1f0c99321f1dbf8ab6083c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2078791
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
660c0dd6
|
2020-02-25T13:30:33
|
|
Vulkan: Fix padding out Buffer allocations on AMD.
We would often pad incorrectly given the constraints of the max stride.
We shouldn't really be rounding up the buffer size, but we should
instead be adding the max alignment size to the end of the buffer.
Bug: angleproject:4428
Change-Id: Id2afc572c85985548a18f60b42cdc388d83d5c4c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2071235
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
b185002d
|
2020-02-21T16:58:39
|
|
Fix the condition of glOrtho{fx} validation
According to the OpenGL ES 1.1 spec, remove the conditions
of glOrtho validation that n and f must be positive.
Bug: angleproject:4281
Change-Id: I644a25408a026ce87211f2203b8e8203eeaf69bd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2067002
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: 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>
|
|
ce4918f1
|
2020-02-19T09:39:44
|
|
Vulkan: Sanitize Images & Buffers with non-zero values.
Only enabled for specific tests at the moment. This CL allows our tests
to sanitizes memory for the robust resource access extension. It is
quite slow so should not be enabled by default.
Only works for 1 level 2D color textures and buffers. Makes several
flaky robust resource initialization tests consistently fail.
Controlled via an angle::Feature in FeaturesVk.
It works by initializing memory to an abitrary non-zero value:
- if newly allocated memory is mappable, we map it in init and set it
- if a buffer or texture can be a transfer destination, we use a
staging resource
- otherwise we don't attempt to initialize the resource.
Bug: angleproject:4384
Change-Id: I9b4f347bfcddf3096f491ed0243bef86837feaa0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2043271
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
166875eb
|
2019-03-27T13:52:04
|
|
Don't clamp in glBlendColor if context supports renderable [half-]float.
Add test for glBlendColor >1.0, skipped on D3D9 since it's unsupportable
there.
Bug: angleproject:3323
Change-Id: I3fcf867dae96bdadf8a0183269d8f27b659d0baf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1541723
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jeff Gilbert <jgilbert@mozilla.com>
|
|
1f5f7ea3
|
2020-02-14T23:39:11
|
|
Vulkan: Fix SPIR-V transformation name-info association
Prior to this commit, when "OpName %id name" was encountered, the info
corresponding to "name" was immediately associated with %id. This is
not necessarily correct because there could be multiple ids with the
same name. For example a sampler declaration and an unrelated function
argument could have the same name. In this case, the sampler
declaration and function argument name don't even need to be in the same
shader stage.
This change modifies the SPIR-V transformation such that the name-id
mapping is tracked until the OpVariable instruction that actually
declares the variable is visited. The mapping to variable info is only
done if the storage class specified in this instruction corresponds to a
shader interface variable.
Bug: angleproject:3394
Change-Id: I35a1f6f8278e4b1ad81c9955a55e1b72d6f2e4ea
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2057248
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
d5861a68
|
2020-02-13T15:46:49
|
|
Fix ASAN errors in end2end tests.
2 minor issues of reading from uninitialized memory in tests.
Removes the suppressions from the fixed tests.
Bug: chromium:1029378
Change-Id: I466ce231cfed1ce53a60732706c05b778b096805
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2055649
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
041ebfed
|
2020-02-10T13:39:34
|
|
Speed up InstancingTest.LineLoop.
This test was taking 14-20 seconds in release mode. Likely because of
the way we were issuing a ReadPixels and "std::endl" to a stream for
every pixel of a 256x256 Framebuffer. Instead issue a single ReadPixels
call and no stream flushes. Now runs in less than 500ms.
Helps prevent timeouts when running tests multi-process. Also enables
the test on D3D9.
Bug: angleproject:3162
Change-Id: I27aad773040d6b6668cbde003802345e01044a7d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2047414
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
8257ac30
|
2020-02-07T14:17:08
|
|
Vulkan: Defer RenderPass image barriers.
We accumulate image barriers in two places:
* for GL sampler textures
* for GL framebuffer attachments (Render Targets)
Then we issue the barriers together in a single call before the RP.
This fixes a bug where we were missing a layout transition in some
cases when transitioning between a sampler and a render target. It
should also be faster to issue a single barrier before a RP than issue
several smaller barriers.
Bug: angleproject:3539
Bug: angleproject:4029
Change-Id: I180b770f0df6b44d209e5c618ba36bcc1c6372e4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2044236
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
788fa360
|
2020-02-10T14:07:12
|
|
Suppress two failing NVIDIA D3D11 tests.
Bug: angleproject:4391
Bug: angleproject:4392
Change-Id: I81cbf261cf206cd2d38cff93d16056c21bf78557
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2047416
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
a8e6a463
|
2020-02-09T13:10:24
|
|
Suppress Vulkan RobustResourceInit tests.
These tests are flaky because of a bug in ANGLE's Vulkan robust
resource init. Mark them as failing until we can resolve the bug.
Bug: angleproject:4255
Bug: angleproject:4384
Change-Id: I8e18a8532850848fc7a25e137dce27dd0d19fa55
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2046053
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
c3854ebc
|
2020-02-07T11:11:26
|
|
Vulkan: Clamp vertex buffer offsets.
Vulkan mandates that vertex buffer offsets are within the size of the
buffer even if robust buffer access is enabled. Do a check in
VertexArrayVk::syncDirtyAttrib to guard against this.
Bug: angleproject:3350
Change-Id: Ia01deb9b7335dd8f632f2cf9b32d2908ba55645c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2044491
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
3a2522de
|
2020-02-06T10:05:23
|
|
Make TransformFeedbackTest deterministic.
Instead of using rand(), use a fixed seed RNG. This can ensure runs
use the same draw call counts no matter the time of day.
Note: there may have been a setting somewhere that was seeding the RNG
because I wasn't seeing variation between test runs locally. This
change makes it explicit.
Bug: angleproject:4029
Change-Id: Ic51bf2a6779da3b96a3357eed99c0f7fa9d81648
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2042210
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
e9dc0201
|
2020-02-04T12:04:28
|
|
GL: Mark unused uniform locations that were explicitly bound as ignored
If a uniform location is unused, but a call to glBindUniformLocation has
explicitly bound the uniform, ANGLE validation still treated the uniform
as unused and returned errors. The correct behavior is to ignore the
uniform and silently fail.
Bug: angleproject:4374
Change-Id: Ic7b97f23cf8bc2d5380129322595e51b3d4a9fcc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2036676
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
e5385ea9
|
2020-01-27T13:40:18
|
|
Vulkan: Compile shaders at link time
Since line raster emulation was changed to use specialization constants,
it has been possible to compile shaders at link time. However, program
pipeline objects would have required keeping the shader sources around
for recompilation. Now that all necessary decorations are modified
directly in SPIR-V, it's possible to compile the shaders at link time
and forget about their sources. Program pipeline objects then simply
"reconfigure" the generated SPIR-V.
A next step could be to also create the Vulkan pipeline object at link
time. A number of failures due to gaps in CTS testing prevent that work
currently. In particular, in some situations the generated SPIR-V is
not per spec, for example it may contain vertex attributes with aliasing
locations, or have transform feedback capture of array elements
misconfigured.
Bug: angleproject:3394
Bug: angleproject:4253
Change-Id: I54c0884cf056b511a4a306225cc6ed2cef84d257
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2023186
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
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>
|
|
f764fc02
|
2020-02-03T10:33:58
|
|
Fix varying linking by location
This change breaks the assumption everywhere that varyings can be
identified uniquely by name throughout all stages of the pipeline.
It further implements linking of varyings by location, if specified.
Bug: angleproject:4355
Change-Id: Ie45e48879008c3f0c22d1da3d0d26f37c655e54e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2030026
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
4546c5ce
|
2020-01-31T15:05:35
|
|
Skip failing end2end tests on Windows on ARM
There are multiple failing tests on Windows on ARM which are related to drawing differences.
They seem to be similar to an already reported issue (anglebug.com/3748).
Bug: angleproject:4356
Bug: angleproject:4357
Change-Id: Ide5cc2e6f42d4c4b6fb88352833d20e517005c14
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2033067
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
07795d47
|
2020-01-31T16:08:52
|
|
Disable rewriteRowMajorMatrices workaround.
It's causing flaky crashes in tests. Leave the revised code in place
so it's easier to debug. Disable test which required the workaround.
Bug: angleproject:2273
Bug: angleproject:3843
Change-Id: Iebb682bd3c6282031cc57eda5d3d4d5636be7294
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2033870
Commit-Queue: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
c73475fb
|
2020-01-29T11:37:05
|
|
Vulkan: Fix UtilsVk dirtying driver uniforms descriptor set binding
Most UtilsVk functions bind a descriptor set to index 0 (same as driver
uniforms). If that happens to close a render pass, all is well as
starting a new render pass ensures all descriptor sets are rebound.
However, if the render pass is not closed, or if a dispatch call is
issued (which never rebinds descriptor sets if not explicitly
necessary), then the driver uniforms descriptor set may end up never
rebound, causing a validation error (and possible crash or corruption).
This change makes sure that UtilsVk notifies the context when it binds a
descriptor set. The context then dirties the driver uniforms binding
as appropriate.
Bug: angleproject:4272
Change-Id: Ief20c7884fbe39712f844247489812afc70b30a9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2027938
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
e196bc85
|
2020-01-17T13:11:20
|
|
Add driver bug workaround for rewriting row major matrices.
Joint work with syoussefi@, who wrote the RewriteRowMajorMatrices
pass, and revised it for this CL to not rely on the
NameNamelessUniformBuffers pass - which was breaking it on the GL
backend.
Hook up previously written RewriteRowMajorMatrices transformation, and
enable on all GPU types on macOS. It is needed at least for AMD and
Intel GPUs.
Add a new test which verifies the behavior of dynamically-indexed
arrays of row-major matrices.
Bug: angleproject:2273
Bug: angleproject:3843
Change-Id: Id582f9cf6b9b1a59091aab1786539174f360b705
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2008717
Commit-Queue: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Geoff Lang <geofflang@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>
|
|
09d51a57
|
2020-01-24T17:28:24
|
|
Fuchsia: Skip PointSpriteAlternatingDrawTypes on ARM Fuchsia
This is not passing currently, skip it for now.
Bug: angleproject:4349
Change-Id: If36a144e8d17cc94c2186a7a794358b14223349e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2023913
Commit-Queue: Michael Spang <spang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
cb2b5136
|
2020-01-10T11:04:38
|
|
Vulkan: Simplify format table generation
Remove the "override" table. That gets in the way of some solutions.
If a format cannot be supported by a native Vulkan format as indicated
in the "map" table, then check fallbacks.
Also add support for native RGBA4 and R5G5B5A1 support. Previously
those formats would be emulated with RGBA8 due to the override, but
now code will check if the native format is available and use it.
Bug: angleproject:4282
Change-Id: Ib33ea40543d91a2c2a95075b277f825a8822037c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1994538
Reviewed-by: Tobin Ehlis <tobine@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
f1f082e1
|
2020-01-17T14:53:38
|
|
Vulkan: Set varying location & xfb decorations in SPIR-V
The shader translator outputs arbitrary location indices. Once compiled
by glslang, the SPIR-V transformer modifies these decorations. If the
transform feedback extension is used, it will also add the relevant
decorations to the varyings that are captured.
Bug: angleproject:3394
Change-Id: I5ecafd0536408612a5d4b920dbabbfabe650657c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2008468
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
05e08edf
|
2019-12-26T20:58:48
|
|
Disable skipValidation when context is lost.
Lost no-error contexts should gracefully handle GetProgramiv, etc.
Includes test that a lost no-error context doesn't crash on getProgramiv.
Firefox bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1601703
Bug: angleproject:4244
Change-Id: I8c37df37e83308ab85ad958df6dab46b0ab348e1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2003239
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
e28883de
|
2020-01-25T23:25:43
|
|
Vulkan: Fix handling of inactive fragment outputs
These were never assigned a location. They are now removed by the
translator similar to other inactive variables.
Bug: angleproject:4313
Change-Id: I3398d06e1dea3f43b84f206cca07cde5b44b21a8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2021734
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
7488a096
|
2020-01-27T22:17:59
|
|
Add a test to expose location'ed varying link bug
Bug: angleproject:4355
Change-Id: I2b914d3e6bf74ccf5d3f42d7bd010e44e45645ea
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2023921
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
086aded3
|
2020-01-26T13:40:02
|
|
Return the correct location count for matrices in structs
GetLocationCount() returned secondary size for fields of a struct. For
matrices however, the correct value would be the primary size.
This is a similar fix to 6423b7fc7ded02a702d24feb0730731ab9f6c061.
Bug: angleproject:4200
Change-Id: I2c69b9454729993010766fcde0cabec986b7429d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2021738
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
3712b2e4
|
2020-01-24T17:08:30
|
|
Vulkan: Command graph linearization (Step 1).
This initial prototype introduces a new feature to the Vulkan back-end
that disables the deferred command recording. The intent is to have a
lower CPU overhead during submission calls which currently walk a DAG.
The feature is not complete. Currently it only passes the ANGLE
SimpleOperationTests. Moreover it is extremely simple and only allows
use of one command buffer at a time. In the future we'll allow open
command buffers for recording outside and inside render pass commands
at the same time. We'll also support collapsing RenderPasses together
for some use cases.
Currently the prototype only passes "SimpleOperationTest". There are
quite a few unimplemented features like queries, XFB, etc.
Bug: angleproject:4029
Change-Id: I82760986683f55e37ac4ea559de6f4cffb6ef84e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1953485
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tobin Ehlis <tobine@google.com>
|
|
0a3f58f1
|
2020-01-24T09:54:31
|
|
Fix undefined behaviour in ClearTest.
We were expecting an uninitialized texture to contain black. However
the contents of the texture data may be undefined.
Discovered when working with the Vulkan command stream refactor.
Bug: angleproject:4029
Change-Id: Ia5d24707746819b116ac0053fabb48033574569a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2017978
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
24627fa4
|
2020-01-21T11:39:56
|
|
Row-major test: switch to compute
Based on Nvidia's recommendation that the following:
all(lessThan(gl_FragCoord.xy, vec2(1.0, 1.0)))
isn't necessarily true for only a single FS invocation, even when not
multisampling. The tests that do the above are changed to compute
instead.
Bug: angleproject:3831
Change-Id: I22d935f797c2e385218bc6af31e98a7f672a7707
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2012743
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
abaeb415
|
2020-01-20T20:33:23
|
|
Vulkan: Fix setupDraw when VK_EXT_transform_feedback is not enabled
There's no dirty bit handler if VK_EXT_transform_feedback disabled, but
we're setting that dirty bit in syncState. This results in calling a null
method pointer. Skip the invalidate if the extension is not enabled.
gl::LogMessage::~LogMessage() at ./../../third_party/angle/src/common/debug.cpp:0
rx::ContextVk::setupDraw(gl::Context const*, gl::PrimitiveMode, int, int, int, gl::DrawElementsType, void const*, angle::BitSetT<11ul, unsigned long, unsigned long>, rx::vk::priv::SecondaryCommandBuffer**) at ./../../third_party/angle/src/libANGLE/renderer/vulkan/ContextVk.cpp:844
rx::ContextVk::drawArrays(gl::Context const*, gl::PrimitiveMode, int, int) at ./../../third_party/angle/src/libANGLE/renderer/vulkan/ContextVk.cpp:1698
gl::Context::drawArrays(gl::PrimitiveMode, int, int) at ./../../third_party/angle/src/libANGLE/Context.inl.h:112
gl::DrawArrays(unsigned int, int, int) at ./../../third_party/angle/src/libGLESv2/entry_points_gles_2_0_autogen.cpp:926
(anonymous namespace)::AttributeLayoutNonIndexed::Draw(int, unsigned int, unsigned short const*) at ./../../third_party/angle/src/tests/gl_tests/AttributeLayoutTest.cpp:431
(anonymous namespace)::AttributeLayoutTest::Run(bool) at ./../../third_party/angle/src/tests/gl_tests/AttributeLayoutTest.cpp:305
[This stack is from the added assert; calling a null function pointer
crashes without producing a useful stack trace.]
Bug: angleproject:4326
Change-Id: I036ae322bddc4865229fa3fe7ea72a4344b99f83
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2011408
Commit-Queue: Michael Spang <spang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
01e28144
|
2020-01-21T13:15:18
|
|
Row-major test: Clarify std140's stride calculation
Bug: angleproject:3830
Change-Id: I5fa213927b609ef33c729ded5d42add8f148dcb1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2012622
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
2e1beb40
|
2020-01-14T12:08:02
|
|
Add a test to expose translator bug w.r.t short circuiting
Bug: angleproject:3829
Change-Id: I872118f145886eecaed1680268e95419385b9d9e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2001237
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
feb3b6cc
|
2020-01-13T22:58:59
|
|
Vulkan: Remove row->col major shader transformation
This was done based on the incorrect assumption that Vulkan GLSL doesn't
allow layout qualifiers on interface block fields. This was due to
glslang compile failures in some shaders that included mixed row- and
column-major fields in interface blocks.
However, the failures were only in the case the interface block is
inactive, in which case glslang wrapper previously replaced the
layout/qualifier of the interface block with |struct|, which left the
shader with an unused struct definition with fields that have layout
qualifiers; an invalid shader.
The change introduced in
https://chromium-review.googlesource.com/c/angle/angle/+/1951523
removes inactive shader interface declarations. The above scenario thus
never occurs, rendering the row- to column-major transformation
unnecessary.
Bug: angleproject:3443
Change-Id: Ice34a0fc6e047b79a4d44f04b730ec59bdfafe33
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1961098
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
680a7d3b
|
2019-12-09T16:07:43
|
|
Vulkan: Add test that exposes sampler refactor bug
Bug: angleproject:4211
Change-Id: I9e9cdacd4f24131101029d17932625e2e3c7d7e0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1957836
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
|
|
f0be7c81
|
2019-12-02T15:42:33
|
|
Fix GLSLTest_ES3.MixedRowAndColumnMajorMatrices_ReadSideEffect
The test had two array sizes swapped, causing failure on vendors that
statically verified index-out-of-bound accesses.
Bug: angleproject:3831
Change-Id: I8ec32e9c11b38b69f03b1a22e60dfb6c6e82c2a4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1947123
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
6b275406
|
2020-01-09T11:14:47
|
|
Vulkan: Workaround vertex attributes vs stride issue on AMD
Under robustBufferAccess, Vulkan states that:
Vertex input attributes are considered out of bounds if the offset of
the attribute in the bound vertex buffer range plus the size of the
attribute is greater than either:
- vertexBufferRangeSize, if bindingStride == 0; or
- (vertexBufferRangeSize - (vertexBufferRangeSize % bindingStride))
The latter implies that if the buffer size is not a multiple of the
vertex attribute stride, what lies beyond the last multiple of stride is
considered out of bounds.
It also says:
Out-of-bounds buffer loads will return any of the following values:
- Values from anywhere within the memory range(s) bound to the buffer
(possibly including bytes of memory past the end of the buffer, up to
the end of the bound range).
- Zero values, or (0,0,0,x) vectors for vector reads where x is a valid
value represented in the type of the vector components and may be any
of ...
The first bullet point indicates that the driver is allowed to load the
attribute values from the buffer if its range still lies within the
buffer size.
Take the following example:
- Buffer size = 12
- Attribute stride = 8
- Attribute offset = 0
- Attribute size = 4
Basically the buffer is thus laid out as follows:
attr stride
_________/\_________
/ \
+----------+----------+----------+
| vertex 0 | padding | vertex 1 |
+----------+----------+----------+
\___ ____/
V
attr size
In the above example, the attribute for vertex 1 is considered out of
bounds, but the driver is allowed to either read it correctly, or return
(0, 0, 0, 1) for it.
Most drivers implement the former, while AMD implements the latter.
This change introduces a workaround for AMD where
GL_MAX_VERTEX_ATTRIB_STRIDE is limited to 2048 (the common value for it
according to gpuinfo.org) and conservatively rounds up every buffer
allocation to that size.
While technically, this workaround should be applied on any device with
the robustBufferAccess feature enabled, it is currently limited to AMD
to avoid the inefficiency. A possible future revision of Vulkan may
relax the above restrictions.
Bug: angleproject:2848
Change-Id: Ida5ae5d777da10f22ce8be5a09a7644b5bbd778e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1991709
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
8fde1151
|
2020-01-09T14:22:35
|
|
Vulkan: fix default uniform descriptor rebind on program change
When the program binding changes, we set the descriptor sets binding
dirty bit if the program had any textures, UBOs, SSBOs, images or atomic
counters. The check for default uniforms was missing. So if the two
programs had no resources and were only using default uniforms, then
drawing with one after the other didn't update the descriptor set
binding of the default uniforms for the second draw.
Bug: angleproject:4277
Change-Id: I631a1619658ee713484cfaee99fe1e39987e16e7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1993408
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
7a37d3ac
|
2020-01-05T13:52:03
|
|
Work around Intel driver bug with CopyTex{Sub}Image2D/DeleteTextures.
Dependencies seem to be incorrectly tracked in some Intel OpenGL
drivers (on macOS specifically), causing crashes in glDeleteTextures
if a GL command buffer is being constructed where those textures are
destinations of CopyTexImage2D/CopyTexSubImage2D. Work around this bug
by flushing before texture deletion if CopyTex{Sub}Image have been
called recently. The tracking is only done on a per-context rather
than a per-device basis, but seems sufficient to work around the
problem as identified.
Tested both with new ANGLE test on affected hardware, and in WebKit's
ANGLE backend for WebGL. Works around the crash reported in
https://bugs.webkit.org/show_bug.cgi?id=205707 .
Bug: angleproject:4267
Change-Id: I2266a5590759f6a3f19080def08710ef4b66d463
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1987932
Commit-Queue: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
b84cdffe
|
2020-01-06T14:59:44
|
|
Fix colored indexed point tests not using color in vertex buffer.
In the previous version, the IndexedPointsTestUInt tests named
VertexWithColorUnsignedIntOffset* were redundant with UnsignedIntOffset*.
Bug: angleproject:3923
Change-Id: I6b9b8f2bd78882bcac7c3b89e798291ee94eea70
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1988998
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
cbbb3aaf
|
2020-01-07T15:03:20
|
|
Suppress VertexAttributeTest.DrawArraysWithBufferOffset on Mac NVIDIA
The test fails with the following at a very low flake rate:
../../third_party/angle/src/tests/gl_tests/VertexAttributeTest.cpp:230: Failure
Expected equality of these values:
angle::MakeGLColor(255, 255, 255, 255)
Which is: White
angle::ReadColor((midPixelX + viewportSize[2]) / 2, midPixelY)
Which is: Transparent Black
TBR=jmadill@chromium.org
Bug: angleproject:4269
Change-Id: I82752acfbcb2a067ccb35a7a456def03299c359f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1987258
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
|
|
806d812e
|
2020-01-03T13:48:30
|
|
Vulkan: Reorder descriptor sets
This change moves driver uniforms to a set with a lower id than the one
that includes (emulation) transform feedback buffers. Imagine the
following:
- Program 1 with xfb: UniformsSet: 1 VS uniforms buffer, 1 FS uniforms
buffer, 1 xfb buffer
- Program 2 without xfb: UniformsSet: 1 VS uniforms bufer, 1 FS uniforms
buffer.
Previously, UniformsSet was index 0, and DriverUniformsSet was index 3.
When switching from Program 1 to Program 2, the layout of UniformsSet
changes, which means every subsequent set needs to be rebound. This is
a Vulkan pipeline layout compatibility rule. This is done with
invalidateCurrentTextures() and invalidateCurrentShaderResources()
already when handling gl::State::DIRTY_BIT_PROGRAM_EXECUTABLE. The bug
is that the driver uniforms are not invalidated.
This is normally not an issue, because usually when switching from
Program 1 to Program 2, transform feedback is paused, and this state
change does invalidate driver uniforms. However, the following scenario
doesn't do this:
- Begin Xfb
- Pause Xfb
- Use Program 1
- Draw
- Use Program 2
- Draw
- End Xfb
There is no driver state change between the two draw calls, which means
the second draw will attempt to draw using the driver uniforms bound for
the first draw call. There is a Vulkan validation error here due to the
above pipeline layout validation rule.
The issue manifests itself only when the second draw call actually uses
driver uniforms, as otherwise that set is inactive and not validated;
i.e. when line raster emulation is used.
In summary, the validation error manifests itself when:
- Transform feedback and line raster both use emulation
- Transform feedback is paused
- A draw with an xfb program is followed by a non-xfb program
- The second draw is a line draw
A test is added for this.
The solution is to reorder the sets so that DriverUniformsSet is placed
before UniformsSet. This way, changes to the layout of UniformsSet
don't invalidate DriverUniformsSet.
In fact, based on the above, any change in the layout of the program
should have required an invalidation of the driver uniforms. This bug
is probably masked by the fact that
ContextVk::handleDirtyDescriptorSetsImpl() always rebinds the graphics
driver every time any descriptor set needs rebinding. That should be
removed in a follow up change.
Bug: angleproject:4261
Change-Id: I21ad4152b454a1fe70554be02e18a9c94fb3e7a8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1986927
Reviewed-by: Tobin Ehlis <tobine@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
51e653f0
|
2020-01-02T13:53:03
|
|
Suppress flaky failure with MacOS/NVIDIA/OPENGL
Seeing intermittent failure on this test only on MacOS/NVIDIA/OPENGL.
Suppress for now.
Bug: angleproject:4258
Change-Id: Ibda30954019410e3b6d069986b2cd0ad26533c00
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1984850
Reviewed-by: Shrek Shao <shrekshao@google.com>
Commit-Queue: Shrek Shao <shrekshao@google.com>
|
|
ab42afa6
|
2019-11-21T10:13:44
|
|
Metal: fix vertex attribute's conversion lost after changing buffer binding.
After vertex buffer's attribute is converted and stored in conversion
buffer. Binding the same attribute to another buffer, then binding it
back to previous buffer will result in previous conversion
information lost. The conversion method would skip the conversion due to
buffer's content hadn't been changed, however it didn't reuse the old
conversion result.
This CL also changed the way binding offset is used in Metal backend.
- Previous, the offset would be assigned to the offset field of
MTLVertexAttributeDescriptor, then the buffer would simply be bound to
the command encoder with offset=0
i.e. setVertexBuffer(buffer, index, 0)
- However this approach has several disadvantages. Since Metal doesn't
allow MTLVertexAttributeDescriptor's offset to be larger than the
vertex attribute's stride, the old approach would force the back-end
to convert the attribute and store in conversion buffer.
New approach:
- MTLVertexAttributeDescriptor's offset will be zero. The offset will be
used to bind the buffer itself to the render command encoder.
i.e. setVertexBuffer(buffer, index, offset)
This way the "offset <= stride" restriction no longer exists. The only
restriction is the offset must be multiple of attribute's size.
Added 3 new tests:
- SimpleStateChangeTest.RebindTranslatedAttribute
- VertexAttributeTest.DrawWithLargeBufferOffset
- VertexAttributeTest.DrawWithLargeBufferOffsetAndLessComponents
Bug: angleproject:2634
Change-Id: I6c2fa8091436e4a24405d791f86d17d97df02d64
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1940009
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
|