|
4375d6c7
|
2021-06-18T23:51:23
|
|
Vulkan: Support multiview queries
When using queries with multiview, Vulkan specifies that N queries are
actually produced (N being the number of views) which must be summed by
the application.
Bug: angleproject:6048
Change-Id: I5ea615536f1a357806b7ea8093280b9122f1d66a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2971562
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
977a28f3
|
2021-06-22T12:30:07
|
|
No-op glGenerateMipmap on zero-sized textures
The spec says:
> Otherwise, ... if any dimension is zero, all mipmap levels are left
> unchanged. This is not an error.
Bug: chromium:1220250
Change-Id: I45e007c1f8e9b80f405d3d096eb896a7246f7c8e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2979853
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
5b314268
|
2021-06-15T17:37:45
|
|
Vulkan: Support OVR_multiview and OVR_multiview2
Multiview is supported in Vulkan simply by specifying the number of
views in the render pass, and creating the appropriate image views. A
number of changes to the way image views and render targets are stored
are made to support those that don't cover the entire range of layers.
One particular detail that is not implemented in this change is the use
of queries in combination with multiview. Vulkan specifies that N
queries are actually produced (N being the number of views) which must
be summed by the application, but this is not currently done.
Bug: angleproject:6048
Change-Id: I1d4a9894c232d3a93d7a97c9fa0eedc334e57469
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2967625
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
13ac4dfb
|
2021-06-23T12:19:40
|
|
gl_tests:DrawArraysThenDrawElements: glFinish instead of swap
Later in the test we read from the backbuffer to confirm that the
triangles were drawn correctly, but without EGL_BUFFER_PRESERVED
the content of the backbuffer is undefined.
Since glReadBuffer is not supported in GLES2 don't swap, instead to
a glFinish to force the drawing in each iteration.
Bug: angleproject:6088
Change-Id: Iac485cc6ec92626a74a4428bcdb32cc535a2691f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2982112
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
|
|
b6adeb2f
|
2021-06-21T11:11:30
|
|
Vulkan: Use pipeline statistics query to emulate primitives generated
The VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT query produces
the same result as the GL primitives generated query. One caveat is
that in combination with rasterizer discard this query may not work.
This is emulated by disabling rasterizer discard when this query is
active and applying an empty scissor instead.
When VK_EXT_primitives_generated_query is released and supported, a
similar issue with rasterizer discard persists so this change will
facilitate using that extension as well.
Bug: angleproject:5430
Change-Id: Id45b6f058c5cb6837e04aa64b1efde28c104e4cf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2976181
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
dbfc119a
|
2021-06-22T08:56:33
|
|
Fix overflow in gl::ValidateES2TexImageParametersBase
Bug: chromium:1222516
Change-Id: I532dc6e1c80c442af2c35d1facc262c48222def3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2978251
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
3d37a374
|
2021-06-22T00:37:22
|
|
Add regression test for GL bug w.r.t cached programs
Bug: angleproject:6073
Change-Id: I22ffabea8a686e2ae615e99607cb557324c23c78
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2976185
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
96dd515a
|
2021-03-31T14:21:16
|
|
Update glColorspace(EGL_KHR_gl_colorspace) enable logic
1. Enable glColorspace if VK_EXT_swapchain_colorspace is
supported, remove dependency on VK_KHR_image_format_list.
2. Enable VK_KHR_image_format_list support on Mali GPU.
3. Fix PbufferTest.ClearAndBindTexImageSrgbSkipDecode
test tolerance issue.
Bug: angleproject:2514
Bug: angleproject:5281
Change-Id: I2ed54a14afc7c3aee5a5980bd300ab052ebab3d1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2793852
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
c51c59c7
|
2021-06-15T13:43:50
|
|
Test for missing index dirty bit bug
Bug fixed in
https://chromium-review.googlesource.com/c/angle/angle/+/2961690
triggers only in the following situation:
- Context 1: draw indexed -> clears index dirty bit
- Context 1: change state in such a way that closing the render pass is
deferred to dirty bit handling (for example, change FBO)
- Context 1: issue a non-indexed draw call. This closes the render pass
and starts a new one -> bug was that the index dirty bit
was not set
- Context 2: flush the command buffer, which submits the previous render
pass of context 1 (which contained vkCmdBindIndexBuffer).
The primary command buffer is now reset.
- Context 1: issue an indexed draw call. Since the index dirty bit was
not set, this was missing the vkCmdBindIndexBuffer call.
This change implements a regression test based on the above scenario.
Bug: chromium:1183068
Bug: chromium:1190493
Change-Id: I729bd48cd6df2621ca763f6231023a52ac08b0fb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2963836
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
3f9dcb00
|
2021-06-12T01:37:32
|
|
Translator: Prune trivial dead code
Code after discard, return, break and continue is discarded with this
change. This simplifies SPIR-V generation as no code is allowed after a
branch instruction and no special handling is necessary after this
change.
Bug: angleproject:4889
Change-Id: Ife9c8de8a6d0db9d682561daf44366aad9b1cf61
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2957811
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
eb882040
|
2021-06-08T11:17:59
|
|
test/ImageTest: Clear back buffer when test cleanup
Many tests don't actually use the back buffer, so uninitialized data
is used when capturing leading to failure. Hence, clear the back buffer
when the test ends and before swap is called triggering the capture.
Bug: angleproject:6035
Change-Id: I0a500ae9f5203feaf0b492dc18e84c5a92ee1497
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2944953
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
|
|
d769742c
|
2021-06-03T19:43:58
|
|
Vulkan: SPIR-V Gen: Default uniforms
Default uniforms are gathered in a uniform block, so treat them like
other nameless uniform block fields.
Bug: angleproject:4889
Change-Id: If340040ab4c59f3243c40de7daba530b2289e147
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2939333
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
19209666
|
2021-06-09T07:55:04
|
|
Fix -Wc++11-narrowing in ANGLE.
This adds a few explicit casts where necessary and changes some double
constants to floats to avoid truncation.
Bug: chromium:1216696
Change-Id: Ie1a3ad94284185fb20a6feff75290cabb7ee09e8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2950320
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
ac2fc259
|
2021-06-03T17:11:14
|
|
Vulkan: SPIR-V Gen: Support function forward declaration
The generation of function-related ids is moved to
visitFunctionPrototype to support forward declarations. The
DeferGlobalInitializers AST transformation produces such code.
Bug: angleproject:4889
Change-Id: Iefee534575092ca25ff86e416e35703d7022bc07
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2939332
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
013613ea
|
2021-06-08T01:33:30
|
|
Translator: Allow invariant on I/O block members
The GLSL ES 3.2 spec says:
> Only variables output from a shader can be candidates for invariance.
And:
> All uses of invariant must be at global scope or on block members, and
> before any use of the variables being declared as invariant.
As a result, it's possible to specify `invariant` on a member of an
output I/O block.
Bug: angleproject:4889
Change-Id: I8822ed214813db8424d6a67dfef7f069a448b19d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2946115
Reviewed-by: Ian Elliott <ianelliott@google.com>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
0c26ff11
|
2021-06-03T17:09:22
|
|
Vulkan: SPIR-V Gen: Support initializers in declarations
If the initializer is a constant, it's specified directly in the
OpVariable instruction. Otherwise an OpStore is generated where the
declaration is visited.
Bug: angleproject:4889
Change-Id: I79291552ecc50c0878f921aff9f6d8618be34116
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2939331
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
6746e5dd
|
2021-06-01T22:48:14
|
|
Vulkan: SPIR-V Gen: Basic support for compute shaders
This change enables direct SPIR-V generation for compute shaders and
enables a few tests. A handful of built-in functions are translated to
support said tests.
Bug: angleproject:4889
Change-Id: I8fd6dc50ff31559a738ba680a993fb197e29fcf9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2939330
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
ee4a5266
|
2021-06-01T14:57:24
|
|
Vulkan: SPIR-V Gen: Function calls
This change implements function calls. As a result, transform feedback
tests are enabled as well as support for transform feedback emulation
(which contains functions and if blocks).
`const` and opaque uniform function arguments take intermediate values,
while the rest take memory objects. If the argument being passed is an
unindexed lvalue, it can be directly given to the function. Otherwise a
temporary variable is made which is initialized by the parameter if
necessary (in and inout parameters) and later overwrites the parameter
if necessary (out and inout parameters).
Bug: angleproject:4889
Change-Id: I8976cdd17870c35d5a2daeed3c38de57ada931d9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2930363
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
052713da
|
2021-06-07T12:25:53
|
|
Lift OpenGL Win/Intel test expectation.
This was fixed in a prior patch.
Bug: angleproject:5444
Change-Id: I6df4b71b8dabd66eb151d94d757f89d88a864dab
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2939468
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
1b680b77
|
2021-06-02T22:04:45
|
|
Reland "Make SH_CLAMP_INDIRECT_ARRAY_BOUNDS do proper AST transformation"
This is a reland of a474fd7de769ae817db83490d410510cdbed75b2
The integer clamp used in this transformation is not available in es100
shaders, and float clamp is used instead.
Original change's description:
> Make SH_CLAMP_INDIRECT_ARRAY_BOUNDS do proper AST transformation
>
> This translator flag adds a clamp to non-literal indices to arrays. Two
> strategies were provisioned, using the clamp intrinsic or a hand-written
> function. The latter is ununsed in angle, chromium, firefox and
> webkit, so this change removes this option and uses the clamp intrinsic
> unconditionally.
>
> The clamp itself was added at output generation time with special flags
> set on the index node. This is changed such that a proper AST
> transformation is done and no-special handling would be necessary.
>
> Bug: angleproject:4361
> Bug: angleproject:4889
> Change-Id: Ieccfd2c1c347563fb5282e9fa66d39304e62f2ca
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2935041
> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Bug: angleproject:4361
Bug: angleproject:4889
Change-Id: I9397ec7e6bdfb706c2a891b33fd3b2b79e883ccc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2940902
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
|
|
26a54260
|
2021-05-26T16:53:29
|
|
Reland "Vulkan: Handle immutable sampler state change in TextureVk"
This is a reland of 349c08300e08bc809c448d62e0ad969ecb17c047
Skip YUV tests on Pixel2
Original change's description:
> Vulkan: Handle immutable sampler state change in TextureVk
>
> Transitioning between sources in RGB and YUV colorspace or between
> YUV formats with different layout should force the recreation of
> pipeline layout and the invalidation of texture's sampler.
>
> Only textures that are EGLImage targets are handled for now.
>
> Bug: b/155487768
> Bug: angleproject:5033
> Bug: angleproject:5773
> Test: ImageTest.SourceAHBTarget2DExternalCycleThrough*Vulkan
> Change-Id: I02d5763e7f89b910313e14b57bfc5403113dfbb2
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2924415
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Bug: b/155487768
Bug: angleproject:5033
Bug: angleproject:5773
Change-Id: Ie3791bc6f6e9b53eb0db23759a14fdc038c8f5b6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2939354
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
03d8e7c9
|
2021-06-04T21:22:52
|
|
Revert "Vulkan: Handle immutable sampler state change in TextureVk"
This reverts commit 349c08300e08bc809c448d62e0ad969ecb17c047.
Reason for revert: anglebug.com/6028
Original change's description:
> Vulkan: Handle immutable sampler state change in TextureVk
>
> Transitioning between sources in RGB and YUV colorspace or between
> YUV formats with different layout should force the recreation of
> pipeline layout and the invalidation of texture's sampler.
>
> Only textures that are EGLImage targets are handled for now.
>
> Bug: b/155487768
> Bug: angleproject:5033
> Bug: angleproject:5773
> Test: ImageTest.SourceAHBTarget2DExternalCycleThrough*Vulkan
> Change-Id: I02d5763e7f89b910313e14b57bfc5403113dfbb2
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2924415
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Bug: b/155487768
Bug: angleproject:5033
Bug: angleproject:5773
Bug: angleproject:6028
Change-Id: Ib8b3b54ff61f26910df2af4a6b894b3d2d5906bb
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2941547
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Sunny Sachanandani <sunnyps@chromium.org>
|
|
349c0830
|
2021-05-26T16:53:29
|
|
Vulkan: Handle immutable sampler state change in TextureVk
Transitioning between sources in RGB and YUV colorspace or between
YUV formats with different layout should force the recreation of
pipeline layout and the invalidation of texture's sampler.
Only textures that are EGLImage targets are handled for now.
Bug: b/155487768
Bug: angleproject:5033
Bug: angleproject:5773
Test: ImageTest.SourceAHBTarget2DExternalCycleThrough*Vulkan
Change-Id: I02d5763e7f89b910313e14b57bfc5403113dfbb2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2924415
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
|
|
cf853b30
|
2021-06-03T13:54:44
|
|
Add missing buffer validation to BeginTransformFeedback.
A change to Vulkan exposed this missing validation. In the Vulkan
back-end we do some caching on BeginXFB, which would perform an
invalid memory access. Adding the missing validation correctly
traps the error before we reach the back-end.
Bug: chromium:1171685
Bug: angleproject:4622
Change-Id: I5c92575a07149e431c4f260a4555ff196822c64e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2937022
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
be873929
|
2021-05-26T21:55:50
|
|
Vulkan: SPIR-V Gen: Handle constants and constructors
This change translates constants and constructors (minus type
casting). With this change, shaders such as
gl_Position = vec4(aposition, 0, 1);
are translated correctly.
Bug: angleproject:4889
Change-Id: I4463717cf880c6d05db179b98691d5cabc1a2d7c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2920192
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
aa2626f9
|
2021-05-21T15:24:55
|
|
Vulkan: SPIR-V Gen: Handle load/store access chain
This change implements a key instruction of SPIR-V, OpAccessChain.
Inspired by glslang's implementation, a class is added (AccessChain)
that tracks "indices" into a base value. These indices could select a
field of a block, an element of an array, a column of a matrix, or a
component of a vector. Nuances (such as multi-component swizzle as an
lvalue not representable in SPIR-V) and optimizations (such as
all-literal indices to an rvalue) that are implemented in glslang have
also been implemented in this change. As a result, this change
implements all manners of loads and stores (with the exception of this
gotcha: https://github.com/KhronosGroup/glslang/issues/2637).
The change uses this feature to translate the basic shader which does
`gl_Position = positionAttr;` (by implementing EOpAssign), and enables a
test that uses this shader.
Bug: angleproject:4889
Change-Id: I22dbe5b169ce499eaac657902164aca3b0ebc193
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2911880
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
bcb678a5
|
2021-05-27T16:50:55
|
|
Vulkan: Fix deferred clears vs 3D textures
Two bugs are fixed in this change.
One is that framebuffer attachments to 3D textures should not attempt to
defer clears. The clear staged for the 3D texture applies to all
slices, not just the slice the framebuffer is attached to (and that
would get cleared through deferred clears).
Secondly, when clearing an attachment to a 3D texture, the clear must be
applied immediately through a render pass loadOp to affect only the
slice that's attached. This was already handled for layered
framebuffers where the clear was applied immediately if the 3D texture
render target had more layers than the framebuffer. The condition for
this is generalized to check whether the 3D texture has more slices
(regardless of whether the render target is layered or not).
Test is based on one written by Austin Eng <enga@chromium.org>
Bug: angleproject:5967
Change-Id: I43cf5fc24673323eda8390021641e2238be6e375
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2923785
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
778a4ed9
|
2021-06-01T22:51:24
|
|
Re-enable atomic counter tests on Vulkan/Windows
Since --bot-mode, the situation that prevented these tests from working
is no longer possible.
Bug: angleproject:3738
Change-Id: I9ef8af8ebd204cb490e3907ca621eb30bb829532
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2931757
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
f7843da2
|
2021-05-27T16:41:51
|
|
Create tests for GL_EXT_shader_framebuffer_fetch extension
This CL refactors most of the existing tests for the
GL_EXT_shader_framebuffer_fetch_non_coherent extension, sharing shader
and test code with new tests for the coherent extension.
Bug: b/188095445
Change-Id: I23eac5dae9055f1c8f9eeb9c33429fd1091e68fb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2923323
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Ian Elliott <ianelliott@google.com>
|
|
f410e81a
|
2021-04-20T14:26:54
|
|
GL: Implement multisampled_render_to_texture
Bug: angleproject:2894, angleproject:5988
Change-Id: I17b55f0655d32d9f41cb55a0467b93a00fba751b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2841084
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
a280c671
|
2021-05-24T19:05:44
|
|
Vulkan: Move framebuffer dirty bits handling after texture
When texture changes, it notify the observer. Framebuffer object is one
of the observer and is able to respond to the changes in texture object.
In this specific case, when texture called TextureVk::releaseImage and
requires framebuffer object to syncState and call
TextureVk::initRenderTargets. The problem right now is that framebuffer
object's dirty bits are processed before texture, which means if the
texture is being used by currently bound framebuffer object, it will not
trigger the FBO's dirty bit handling. This CL moves container object
dirty bit (DIRTY_OBJECT_DRAW_FRAMEBUFFER and
DIRTY_OBJECT_READ_FRAMEBUFFER) after texture/image object's dirty bits.
Bug: chromium:1212206
Bug: chromium:1197431
Change-Id: I95723da1ce5b8936d66692242f2e25e7a73bafe6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2915764
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Ian Elliott <ianelliott@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
ecf2956d
|
2021-05-24T10:57:40
|
|
Vulkan: Convert web_gl.fuzz545ImmutableTexRenderFeedback to gl_test
Bug: chromium:1212206
Change-Id: I4b87906a9e877da12d64e39bfe54b9b7cec409a9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2912928
Reviewed-by: Ian Elliott <ianelliott@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
7761ed1d
|
2021-05-11T22:55:15
|
|
Add test for Vulkan crash with texture MAX_LEVEL change
Bug: chromium:1197431
Change-Id: I05fba78b32a7c5d5f1da0435084f96c510b15ed5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2889600
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
81db1a46
|
2021-05-20T13:45:26
|
|
Vulkan: TextureVk inherits a few attributes from ImageHelper
Cache VkImageCreateFlags in ImageHelper. This allows texture target
siblings to inherit a few VkImage create attributes thus avoiding
image respecification in certain code paths.
Bug: angleproject:2514
Bug: angleproject:5281
Test: PbufferTest.ClearAndBindTexImageSrgbSkipDecode*Vulkan
Change-Id: Ic7397fabdce185264e06488355ca47f809338519
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2910473
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
e697e379
|
2021-03-10T23:59:45
|
|
Vulkan: Allow certain usecases to have non-zero stride
When glVertexAttribPointer is called with a type parameter that doesn't
match the vertex attribute binding's type in shader, the vulkan backend
used to force the stride to 0. This is acceptable since this usecase is
unspecified in spec.
To allow for better app compatibility, introduce a new extension that
requires normal glVertexAttribPointer functionality to be maintained if
the mismatched vertex attribute type is a mismatched integer type sign.
This change also modifies the VkFormat used when a mismatch in
signedness occurs to use a VkFormat with the same component width as
the type parameter.
Bug: angleproject:5762
Test: VertexAttributeTestES3.DrawWithRelaxedVertexAttributeType*
Test: VertexAttributeTestES3.DrawWithMismatchedComponentCount*
Change-Id: I7e5281500afc3d77f0775821447cabfad3ff2d66
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2765012
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
26973584
|
2021-05-20T12:22:46
|
|
D3D11: Fix respecifying 3D textures.
The missing check for the "Depth" dimension could lead to a bug
where we would not recreate a texture when the dimension changed.
Bug: chromium:1210414
Change-Id: Id59097ad14ae77ff80d27081f61786dad17a77ea
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2911032
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
2b8ceb28
|
2021-05-19T14:08:03
|
|
Update skip list for Texture2DTest.TextureSize
It is also failing on Linux+Vulkan+TSAN.
Bug: angleproject:5982
Change-Id: I742a65ef6076e4f00cc8030cfea46619effaa4d6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2906815
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
8bd3d7d5
|
2021-05-17T13:45:33
|
|
Vulkan: Fix a bug releasing DynamicBuffer-owned buffer
There was one instance of BufferVk releasing a buffer it had allocated
from a DynamicBuffer. This shouldn't have happened as the DynamicBuffer
owns the buffers.
Bug: angleproject:5720
Change-Id: I435512f4bb099130126bf3efb48a238fcd9f3ddb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2896168
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
a1a418e2
|
2021-05-17T16:08:15
|
|
Skip Texture2DTest.TextureSize on Linux+GL+TSAN
Bug: angleproject:5982
Change-Id: I228c5549d7c83d5fb3eb12a097dd4bcc20f56955
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2900929
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
9c262ad0
|
2021-05-14T12:26:48
|
|
Vulkan: Cleanup texture image respecify
Prior to this change, respecifying a texture image due to usage, base or
max level changes incurred a copy of every level and layer to a
temporary buffer which was then staged as an update to the new image.
This code was somewhat messy (for example with respect to depth/stencil
images), error prone (e.g. previously had bugs with compressed textures)
and disallowed further optimizations such as in anglebug.com/4835.
This change does the following:
- ImageHelper::SubresourceUpdate now takes ref-counted images, instead
of image pointers. This allows the same image to be staged for
multiple updates.
- Respecifying an image is still done through a copy, but to an
identical (temp) image instead of buffer, and each level of the image
is staged as an update.
* Further optimization is to stage the old image itself directly as
updates to the new image
Bug: angleproject:4835
Change-Id: I4a3ef2d616c9ab459ff65f918b0fb6d9a2161b73
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2897537
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
9e8fea5b
|
2021-05-13T07:04:05
|
|
Vulkan: Fix desc set cache bug with xfb offset
Prior to this change, the transform feedback buffer offset was not
stored in the descriptor set key, so if the offset changed, stale
descriptor sets could be used.
Bug: angleproject:5963
Change-Id: I3dec4ab9fa82092a65e9a75bdd19c5f2cf49521c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2894513
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
3d082a10
|
2021-04-12T19:16:25
|
|
Vulkan: Add webgl conformance/texture-size test
This converts
webgl_conformance_vulkan_passthrough_tests/texture-size.html to an
end2end test for ease of debugging.
Bug: chromium:1197905
Change-Id: If77dc30e81450b277c6a02d66c076b088d069498
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2821944
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
65946f88
|
2021-05-12T18:19:52
|
|
Skip Texture2DArrayIntegerTestES3.NonZeroBaseLevel on OSX+OpenGL
This test is failing just because another test is been added. The theory
is that there is a OpenGL driver bug here.
Bug: angleproject:5959
Change-Id: I8405a512de28b10528c14be79f76815877a5771f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2893499
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
dd686e48
|
2021-05-11T19:08:01
|
|
Test Runner: Add test expectations parser.
Moves the test expectations from dEQP into the test runner.
Also updates angle_end2end_tests to take an expectations file.
Includes some very simple angle_end2end_tests expectations.
Note that the expectations in the file are less expressive than the
skips we use in the cpp.
Bug: angleproject:5951
Change-Id: Ib92235575bc3ea5f3a977ce416b0e78fe806e39b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2892274
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
|
|
39ee3640
|
2021-05-11T22:27:08
|
|
Translator: Fix struct/uniform separation w.r.t to arrays
When a uniform of struct type was redeclared, the arrayness information
was not transferred.
Bug: chromium:1204861
Change-Id: Ic3f461a4aa349a73bc48568ee14b5418f0556238
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2889599
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
c5e344b1
|
2021-05-11T22:13:38
|
|
Translator: Fix local var inits vs struct/uniform separation
The declarations outside the global scope were being skipped in this
transformation, but if the initializer of a declaration referenced a
uniform struct that's being replaced, it should have been visited too.
Bug: chromium:1204861
Change-Id: Ie2a743126c785eb7d6e3542ba80faa4defc3509f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2889598
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
e354ff1a
|
2021-03-05T04:07:21
|
|
Vulkan: Allow DynamicBuffer suballocation in BufferVk
When allocations are made from DynamicBuffer, they suballocate from a
possibly larger BufferHelper. In BufferVk, the offset of the
suballocation was discarded, which limited the use of DynamicBuffer to a
pool of small buffers.
This change applies any such offset that may arise from suballocations
everywhere, and makes BufferVk use a larger buffer size when the
GL_DYNAMIC_* buffer usage hints are provided.
Bug: angleproject:5719
Change-Id: I3df3317f7acff1b1b06a5e3e2bb707616a7d0512
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2738650
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
e19182ce
|
2021-05-11T09:53:47
|
|
Suppress MultithreadingTest.MultiContextClear on Linux+Nvidia
MultithreadingTest.MultiContextClear/ES3_Vulkan_NoVirtual is flaky on
linux-clang-rel NVIDIA, so it's being suppressed for now.
Bug: angleproject:5945
Change-Id: I9ef142c57b3fcf5224732edcea1650634ecc18ca
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2887905
Commit-Queue: Tim Van Patten <timvp@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
2e84e59a
|
2021-05-10T17:37:28
|
|
Skip EndWithDifferentProgram() on Vulkan+Pixel 2
Skip the the test TransformFeedbackTest::EndWithDifferentProgram() on
Vulkan + Pixel 2 since it appears to be flaky.
Test: TransformFeedbackTest::EndWithDifferentProgram()
Bug: chromium:1207380
Change-Id: Iedfe1e96a204eca5954097be9e61820b775eb0b0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2886358
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
daeac238
|
2021-05-08T22:09:38
|
|
Translator: Ensure structs and blocks are uniquely defined
A new AST validation is added to ensure that the same TStructure or
TInterfaceBlock is not redundantly defined. This helps with SPIR-V
generation by allowing the id to be used as key in a hash map that looks
up the corresponding SPIR-V type id.
A bug is fixed where the Vulkan driver uniform declaration created two
identical declarations for ANGLEDepthRangeParams.
A number of other bugs are also fixed in this change, where if a
variable declaration is eliminated (for example due to constant folding,
or inactive interface variable removal) and it contained a struct
specifier, the struct declaration was also removed. OutputGLSLBase had
a hack where structs were declared on first encounter, which was
incorrect as the scope of the declaration could change. Those bugs are
fixed and this hack is removed.
Bug: angleproject:2733
Bug: angleproject:4889
Bug: angleproject:5936
Change-Id: I8e13748c0bf552ae8b052249282769a1f0775603
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2881942
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
7828506a
|
2021-04-06T23:42:16
|
|
Vulkan: Cleanup buffer format fallbacks
- Fallbacks for formats that have required vertex attribute support are
removed.
- Fallbacks are changed to ones with smaller sizes
- A bug is fixed where CopyNativeVertexData wasn't initializing the
alpha channel appropriately, which was not exercised due to fallback
to 32-bit float formats.
Bug: b/184163871
Change-Id: Icd9afa49d94c65545d1f3fcf521881726d64529d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2809441
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
2d5df9d9
|
2021-05-01T12:50:55
|
|
Vulkan: Don't assume host visibility for external buffers
When importing external buffers, Vulkan ICDs could choose to
import the memory into a memoryType that doesn't support the
VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT property. Account for this
possibility.
Bug: angleproject:5073
Bug: angleproject:5909
Change-Id: Ied063b38fa48d0c8508c4aaca9214cc526f393ad
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2783669
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
422ec18a
|
2021-04-26T10:40:04
|
|
tests: Move DrawAfterFlushWithNoStateChange to ES3
The test uses Vertex Array Objects, and these are only
supported from GLES 3.0 on, or by using the extension
OES_vertex_array_object, so make it part of the
StateChangeTestES3 set.
With that we also enable the test.
Bug: angleproject:5855
Change-Id: I0cfb5d23d19e3db8eefffd9d52b744d068666606
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2850642
Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
be7049d7
|
2021-04-20T10:03:33
|
|
Vulkan: Redesign buffer descriptor set cache key.
Instead of writing the bitset masks, iterate up until the last active
buffer. Write zeros instead of skipping spaces. This is a bit simpler
to implement and also fixes a bug where empty buffers could cause us
to write invalid handles.
Bug: angleproject:5736
Change-Id: I785ef18ef5ae45109ec7d6e0b079b79a9984a1f8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2837848
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
e77e4d92
|
2021-04-09T16:29:36
|
|
tests: Add DepthStencilTestES3.ReadPixelsDepth24.
Add a test that creates a framebuffer formatted GL_DEPTH_COMPONENT24 and
read pixels from it using glReadPixels.
This test uses a combination of the GL_OES_depth24 and GL_NV_read_depth
extensions.
This test can only run on GLES3 as the GL_DEPTH_COMPONENT24 internal
format is not available on GLES2.
Test: angle_end2end_tests --gtest_filter=DepthStencilTestES3.ReadPixelsDepth24/ES3_Vulkan_SwiftShader
Bug: angleproject:5799
Change-Id: I4e898bf756498796df02ef41cc2b989df78f13df
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2817765
Commit-Queue: Lubosz Sarnecki <lubosz.sarnecki@collabora.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
a878e814
|
2021-04-11T15:04:19
|
|
Metal: Distinguish Metal backend from OpenGL's Metal driver
On macOS 11+ OpenGL is implemented on top of Metal internally.
This CL changes ANGLE's Metal backend's renderer string to better
differentiate it from the above OpenGL renderer.
Bug: angleproject:5841
Change-Id: I0d5466594e385cb663d537db034c82b006b6e907
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2820179
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
|
|
c275ce14
|
2021-04-19T14:06:53
|
|
Skip Texture2DBaseMaxTestES3.GenerateMipmapAfterRebase* on Mac ARM GL
Bug: angleproject:5880
Change-Id: I18698e0603938c43878ad4d28379d6976952c561
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2836787
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
b574643e
|
2021-04-19T12:47:05
|
|
D3D11: Skip blits if there is no intersection of dest areas
Blit11 would clip the destination rectangle with the destination size
but ignore the result. gl::ClipRectangle returns false when the
rectangles do not intersect at all, indicating the blit can be skipped.
This could lead to an out-of-bounds write to the GPU memory for the
destination texture.
Mark ClipRectangle as nodiscard to prevent future issues.
Bug: chromium:1199402
Change-Id: I260e82d0917b8aa7e7887f2c9f7ed4b1a03ba785
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2836786
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
a37d9748
|
2021-04-13T14:52:31
|
|
Vulkan: Add support for FBO with unequal sized attachments
OpenGLES 3.0 allows FBO with unequal sized attachments. This CL removes
assertion that all attachment must have equal size from vulkan backend,
and uses common intersect area to create VkFramebuffer object.
Bug: b/181800403
Change-Id: Icbb12a26784b184ebd91740855672013f64b889d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2824760
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
aa2d400a
|
2021-04-12T17:21:37
|
|
Vulkan: Add test for FBO with unequal sized attachments
Before OpenGLES3.0, framebuffer object with unequal sized attachment is
considered incomplete. That restriction has been removed in ARB version
of spec and is legit use in OpenGLES 3.0. This adds a test for this
specific usage.
Bug: b/181800403
Test: FramebufferTest_ES3.AttachmentWithUnequalDimensions
Change-Id: I79608bfd8f10855c6fc47511e080ba3ca4e46c59
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2824366
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
e8b18e79
|
2021-04-16T11:57:53
|
|
Skip failing test on AMD/Linux
This test was suppressed on AMD/Windows already.
Bug: angleproject:5687
Bug: angleproject:5874
Change-Id: I9b6bac81adc017f80634271063d53f3d4eebba0b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2831993
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
f2aa9d5d
|
2021-04-11T14:55:19
|
|
Reland: Metal: Support importing external metal textures
This relands I4d4a88cfbb77d8b7508b787c7fec44073d3b11b0.
Fixes:
- uninstantiated ImageTestMetal error
- failed ImageTest.ANGLEExtensionAvailability on ARM mac.
Bug: angleproject:5763
Bug: angleproject:5814
Change-Id: I906fe52baefd6be3c6e00f594795bd527df01616
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2820178
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Le Hoang Quyen <le.hoang.q@gmail.com>
|
|
0c77f3ad
|
2021-03-10T15:58:00
|
|
Vulkan: Implement shader buffers descriptor cache.
Implements a descriptor set cache for UBOs, SSBOs, and atomic counter
buffers. Storage Images and framebuffer fetch input attachments are
not yet included. Requires moving the buffer barrier handling into
ContextVk, similarly to how we handle the barriers for Textures.
The packed description key for the descriptors uses a "fast" vector
with a basic minimum size. For most cases of a few buffers this will
fit easily in stack memory, but for larger programs with many buffers
we fit this into heap memory. The key has a large upper bound due to
the high ES 3.2 requirements and the need to index several values such
as the offset and binding size.
We use dynamic offsets for uniform buffers when possible. This ensures
applications like Manhattan 3.1 that use sets of common buffers with
changing offsets hit the cache most of the time.
Because of resource limits we pick at compilation time whether to use
dynamic or static descriptor sets. Mostly this applies to tests that
use a large number of uniform buffers. A future implementation could
be smart and would recompile the program with heuristics to use a
minimal number of dynamic indices.
Reduces the number of descriptor set updates from ~300 -> ~30 per frame
in Manhattan 3.1 and in Asphalt 9 from 900+ to as low as 0 per frame.
Bug: angleproject:5736
Change-Id: I5c2a3881bec90d301dab15cc86c8a70e60674ad7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2757515
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
5eac3169
|
2021-04-09T15:54:11
|
|
Vulkan: Support sample/render to depth texture with different LOD
Previously we supported read only depth attachment that attachment and
sample are using the same texture. It was always assuming it will be
read only if the same texture is attached to FBO and same time bound to
texture unit. But we never supported if it actually writing to depth
texture, but at the different level with sampling. This is supported
OpenGL operation as long as the levels render to is outside [base_level,
max_level]. Later on, we added support of the above operation, but
limited to color buffers. This CL extends the same support of render and
sample to the same depth texture with non-overlapping levels. Android
game black desert mobile is running into this usage case.
Bug: b/181797383
Change-Id: I7ee1d52f27603f933102ad1b098684309449c406
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2819487
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Ian Elliott <ianelliott@google.com>
|
|
e55462b9
|
2021-04-09T18:27:16
|
|
Vulkan: Add test for render+sample depth texture with non-overlap LOD
Render and sample from the same texture and then bind to another FBO
without trigger texture bind should still detect the condition that it
is render and sample same texture.
Render to depth texture and sample form the same depth texture but with
non-overlapping levels should work.
Bug: b/181797383
Test: FramebufferTest_ES3.SampleFromAttachedTextureWithDifferentLODAndFBOSwitch
Test: FramebufferTest_ES3.RenderSampleImmutableDepthTextureWithExcludedLevel
Change-Id: I0d330d6f9530eb4fea417019a627890c4a5c1154
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2819486
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Ian Elliott <ianelliott@google.com>
|
|
c8ee13c7
|
2021-04-02T12:19:33
|
|
Vulkan: Fix a validation bug in glBeginTransformFeedback
Add logic to check the program or the pipeline before erroring out when
validating glBeginTransformFeedeback.
Bug: angleproject:5557
Test: ProgramPipelineXFBTest31.VaryingIOBlockSeparableProgramWithXFB*
Change-Id: I0df8a8d87b3632745bc91dc2673f2fac31c6cdb1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2743440
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
|
|
18c6d628
|
2021-03-09T13:46:13
|
|
GL: Support VAOs without native VAOs.
Share the default VAO state between all frontend VAO when
there is no native VAO support. Forcefully sync state every
time a new frontend VAO is bound.
Bug: angleproject:5577, chromium:1167179
Change-Id: Ieaedb5108ad28fc78e7e58b74495639c5246bb05
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2665266
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Peng Huang <penghuang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
5faed621
|
2021-04-12T17:48:56
|
|
Skip IOBlocksSeparate xfb test on Linux/ARM/Vulkan
Bug: angleproject:5493
Change-Id: I894e08a86157032d1e68a3d2b460bfdbbaeb6680
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2821415
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
fdba40fe
|
2021-03-31T12:52:00
|
|
Reland "Fix multithreaded crash on draw commands on D3D11 backend."
This is a reland of 8b9889bf62272fea2495331b622bde1f7c781bd0
The previous CL relied on a define which now only exists in
a specific gn configuration. This reland removes D3D11 as a
multithread-supported platform in the test configuration.
Original change's description:
> Fix multithreaded crash on draw commands on D3D11 backend.
>
> A crash can occur if thread A is executing eglDestroyContext while
> thread B issues a draw call, if the threads are interleaved in such a
> manner that a makeCurrent occurs without triggering a change to the
> global context and a dirtyAllState call. We handle that case by
> explicitly making current the proper contexts in the eglDestroyContext
> call.
>
> A test has been added that triggers a crash without this fix when
> running on the D3D11 backend. In addition, all of MultithreadingTest
> is enabled for the D3D11 backend.
>
> Test: Ran MultithreadingTest. Test exhibits a crash before this
> change, and does not after this change. Also ran:
> dEQP-EGL.functional.sharing.gles2.multithread.*
> dEQP-EGL.functional.multithread.*
>
> Bug: b/183756357
> Change-Id: Ic6f76a062868b2f3b4e60d29dc087ec180bfb7cd
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2798591
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Commit-Queue: Doug Horn <doughorn@google.com>
Bug: b/183756357
Change-Id: I5be9a011ea99a69730eddc9e4da23bcf92ed3bf2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2815243
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Doug Horn <doughorn@google.com>
|
|
923f6a6f
|
2021-04-06T15:30:26
|
|
Ignore internal format attribute for YUV D3D11 EGLImages
Internal format doesn't play any role in this case, and causes confusion
due to mixing sized and unsized formats resulting in more complicated
code in Chromium.
Bug: angleproject:5538, chromium:1116101
Change-Id: Ie200026f014850053108aa0416e1da15bcda7b84
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2808855
Commit-Queue: Sunny Sachanandani <sunnyps@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
af58be7e
|
2021-04-08T17:07:53
|
|
Add TextureType::Buffer to RecordBindTextureTypeError()
Bug: b/184767884
Change-Id: I67098de503748c86f2b957db76539e73c87bd179
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2818818
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Ian Elliott <ianelliott@google.com>
|
|
ba7531da
|
2021-04-07T12:51:17
|
|
Add tests that use, then update, then use buffers
This triggers vk::DynamicBuffer allocations in BufferVk.
Bug: angleproject:5719
Change-Id: Ida855b23618497f76102e55f89ab1678f9c08753
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2809856
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
fc189386
|
2021-04-08T21:51:46
|
|
Revert "Fix multithreaded crash on draw commands on D3D11 backend."
This reverts commit 8b9889bf62272fea2495331b622bde1f7c781bd0.
Reason for revert: Breaks CI
Original change's description:
> Fix multithreaded crash on draw commands on D3D11 backend.
>
> A crash can occur if thread A is executing eglDestroyContext while
> thread B issues a draw call, if the threads are interleaved in such a
> manner that a makeCurrent occurs without triggering a change to the
> global context and a dirtyAllState call. We handle that case by
> explicitly making current the proper contexts in the eglDestroyContext
> call.
>
> A test has been added that triggers a crash without this fix when
> running on the D3D11 backend. In addition, all of MultithreadingTest
> is enabled for the D3D11 backend.
>
> Test: Ran MultithreadingTest. Test exhibits a crash before this
> change, and does not after this change. Also ran:
> dEQP-EGL.functional.sharing.gles2.multithread.*
> dEQP-EGL.functional.multithread.*
>
> Bug: b/183756357
> Change-Id: Ic6f76a062868b2f3b4e60d29dc087ec180bfb7cd
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2798591
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Commit-Queue: Doug Horn <doughorn@google.com>
Bug: b/183756357
Change-Id: I2e9d6385576330f84623d7dafbf690642fcb441f
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2815242
Commit-Queue: Doug Horn <doughorn@google.com>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
|
|
0261b1d3
|
2021-03-31T10:48:08
|
|
PPO: Fix updating sampler uniforms between draws
Updating sampler uniforms when using PPOs is currently broken, since the
Context/State use the currently bound ProgramExecutable which belongs to
the PPO, but the updates only happen to the Program's executable that
the uniform belongs to.
This change updates Program::updateSamplerUniform() to update any PPO
ProgramExecutables with the updated texture information when a Program's
sampler uniforms are updated, so the Context/State use the correct data.
Bug: b/182409935
Test: ProgramPipelineTest31.SampleTextureAThenTextureB
Test: SamplersTest31.SampleTextureAThenTextureB
Change-Id: I3c4e156c6e0c781e706f321f0bd12baf484ff42a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2797951
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
8b9889bf
|
2021-03-31T12:52:00
|
|
Fix multithreaded crash on draw commands on D3D11 backend.
A crash can occur if thread A is executing eglDestroyContext while
thread B issues a draw call, if the threads are interleaved in such a
manner that a makeCurrent occurs without triggering a change to the
global context and a dirtyAllState call. We handle that case by
explicitly making current the proper contexts in the eglDestroyContext
call.
A test has been added that triggers a crash without this fix when
running on the D3D11 backend. In addition, all of MultithreadingTest
is enabled for the D3D11 backend.
Test: Ran MultithreadingTest. Test exhibits a crash before this
change, and does not after this change. Also ran:
dEQP-EGL.functional.sharing.gles2.multithread.*
dEQP-EGL.functional.multithread.*
Bug: b/183756357
Change-Id: Ic6f76a062868b2f3b4e60d29dc087ec180bfb7cd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2798591
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Doug Horn <doughorn@google.com>
|
|
afd32d8e
|
2021-03-30T15:50:57
|
|
Vulkan: Remove mMaxLevel from ImageHelper class
This CL removes mMaxLevel from ImageHelper class. Instead, it now uses
front end's max level information when possible.
Bug: b/181800403
Change-Id: Ie0f6bd11e3ca0d4ddfc98f21261396c4d71b7140
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2796153
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Ian Elliott <ianelliott@google.com>
|
|
4756d5e6
|
2021-03-22T17:28:30
|
|
Mark most draw modes valid when no program is bound
gpu_angle_passthrough_fuzzer discovered a crash when glDrawArrays() is
called without a program bound. This was caused by assuming it's an
error to draw certain primitive types without a program bound, which is
incorrect. This fix is to mark all draw modes except Patches valid when
there is no program bound. Patches is handled separately by TS
validation.
Bug: chromium:1185267
Bug: angleproject:5483
Test: gpu_angle_passthrough_fuzzer
Test: SimpleOperationTest31.DrawWithoutProgramBound
Test: KHR-GLES31.core.draw_indirect.basic-mode-*adjacency
Change-Id: I294078b8695e0b8f36d3b7ad3c1aa71d2a275038
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2780971
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Tim Van Patten <timvp@google.com>
|
|
08b7c55c
|
2021-03-30T13:51:04
|
|
Vulkan: Remove mBaseLevel from ImageHelper class
This removes mBaseLevel from ImageHelper class. With the
mFirstAllocatedLevel tracking exactly which GL level has been allocated,
this cached mBaseLevel is no longer needed.
Bug: b/181800403
Change-Id: I99d66c93b0c8f1bd20a5811b51f512a27927201e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2795275
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Ian Elliott <ianelliott@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
b5a71140
|
2020-08-20T17:24:21
|
|
Vulkan: Make storage actually immutable for immutable textures
The immutable textures are intended to be "immutable". Right now we are
still re-allocating VkImage object based on base_level and max_level.
This causes a problem for rendering to a level that is beyond
[base_level, max_level], which is totally within OpenGL spec. This CL
makes an immutable texture always allocate from 0 to max levels that are
specified by a glTexStorage call. Changing base_level will not trigger
re-allocation of VkImage object.
Bug: b/181800403
Change-Id: I4b4ddea17b7f6f7bfd8f36bfe8bb3a35b5c180b6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2368038
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Ian Elliott <ianelliott@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
323c5f24
|
2021-03-29T17:47:53
|
|
Validate PPO sampler uniforms
"Command & Conquer: Rivals" uses PPOs and was hitting the following
assert:
angle::Result ContextVk::updateActiveTextures(const gl::Context *context)
{
...
for (size_t textureUnit : activeTextures)
{
gl::Texture *texture = textures[textureUnit];
gl::TextureType textureType = textureTypes[textureUnit];
ASSERT(textureType != gl::TextureType::InvalidEnum);
This is the same assert that is generated by the test
ProgramPipelineTest31.DifferentTextureTypes which is currently being
skipped since it's known to fail.
This CL refactors sampler validation into the ProgramExecutable to allow
PPOs to take advantage of the shared code and behave correctly, since
the necessary data is already copied into the PPO's ProgramExecutable
via ProgramExecutable::updateActiveSamplers(). This also takes advantage
of the subject/observer pattern that's already established between
programs and PPOs to ensure only the PPOs that the program is a part of
are updated when a program's sampler uniforms are updated.
Bug: angleproject:3570
Bug: b/182409935
Test: ProgramPipelineTest31.DifferentTextureTypes
Change-Id: I3d34efd66dc85e7ff23a8422cb14d5f90a5f7085
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2792862
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
fe6b4269
|
2021-03-25T14:04:41
|
|
Vulkan: Add baseLevel and generateMipmap test for immutable texture
Immutable texture may implemented slightly differently in driver. This
CL adds a new test that calls glGenerateMipmap after changing
GL_BASE_LEVEL and GL_MAX_LEVEL. It also expands PingPongBaseLevel to
test immutable texture as well.
Bug: b/181800403
Test: Texture2DBaseMaxTestES3.PingPongBaseLevelImmutable
Test: Texture2DBaseMaxTestES3.GenerateMipmapAfterRebaseImmutable
Test: Texture2DBaseMaxTestES3.GenerateMipmapAfterRebase
Change-Id: I4ccf58f588bfd5e02a6fc7439b6fe535fca8dd7c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2787253
Reviewed-by: Ian Elliott <ianelliott@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
a9bcbac3
|
2021-03-31T15:30:42
|
|
Vulkan: Add test render to immutable texture will flush
There was a bug that if there is a pending update in the immutable
texture's level that is outside of [base, max], and then when you render
to that level, the pending update will not get flushed. This test verify
this bug.
Bug: b/181800403
Test: FramebufferTest_ES3.RenderImmutableTextureWithSubImageWithBeyondMaxLevel
Change-Id: Id9a5a141d26d45a3a154c331086bb64b0b094cdf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2797724
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Ian Elliott <ianelliott@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
256100b2
|
2021-04-02T01:45:14
|
|
Revert "Metal: Support importing external metal textures"
This reverts commit 2ec3e0a1e6890da56de9dfd3da5c9f31a3f7fbb7.
Reason for revert: Test suite ImageTestMetal never instantiated https://anglebug.com/5814
Original change's description:
> Metal: Support importing external metal textures
>
> via KHR_image_base and ANGLE_metal_texture_client_buffer
>
> Bug: angleproject:5763
> Change-Id: I4d4a88cfbb77d8b7508b787c7fec44073d3b11b0
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2757811
> Commit-Queue: Le Hoang Quyen <le.hoang.q@gmail.com>
> Reviewed-by: Kenneth Russell <kbr@chromium.org>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Bug: angleproject:5763, angleproject:5814
Change-Id: Ia862aa37a6c914f6e21f9b3121c7c36d449475ea
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2801155
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
|
|
80305ca4
|
2021-03-29T17:18:52
|
|
D3D: fix uniform block alignment error
If the uniform block will be translated to HLSL StructuredBuffer,
in order to follow the std140 rules, we should add padding between
the members if necessary.
Bug: chromium:1193170
Change-Id: I75bc3538a66fc0c2a9c9ebf15fddeaab94d7a949
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2790518
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jiajia Qin <jiajia.qin@intel.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Xinghua Cao <xinghua.cao@intel.com>
|
|
2ec3e0a1
|
2021-03-13T22:17:49
|
|
Metal: Support importing external metal textures
via KHR_image_base and ANGLE_metal_texture_client_buffer
Bug: angleproject:5763
Change-Id: I4d4a88cfbb77d8b7508b787c7fec44073d3b11b0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2757811
Commit-Queue: Le Hoang Quyen <le.hoang.q@gmail.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
ae937aae
|
2021-03-19T20:10:42
|
|
Detach separable shaders
This effectively reverts the following CL:
Vulkan: Don't detach separable shaders in Program::detachShader()
https://chromium-review.googlesource.com/c/angle/angle/+/2084399
Bug: angleproject:3570
Bug: b/182409935
Test: ProgramPipelineTest31.DetachAndModifyShader
Change-Id: Id69f732d1d4f3eea70b2de8c008452878eaf1682
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2776267
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
fe3a9ffb
|
2021-03-17T18:05:40
|
|
Support linking PPOs without attached Shaders
The application "Command & Conquer: Rivals" uses the following pattern:
// Create and link VS, save binary data
glCreateProgram()
glAttachShader()
glLinkProgram()
glGetProgramBinary()
// Create and link FS, save binary data
glCreateProgram()
glAttachShader()
glLinkProgram()
glGetProgramBinary()
...
// Create VS, load binary data
glCreateProgram()
glProgramBinary()
// Create FS, load binary data
glCreateProgram()
glProgramBinary()
...
glUseProgramStages(GL_VERTEX_SHADER_BIT)
glUseProgramStages(GL_FRAGMENT_SHADER_BIT)
glBindProgramPipeline()
Later, when issuing the draw command that uses the PPO, the PPO must be
linked with the Programs that were loaded via binary data. Those
Programs don't have any Shaders attached, just linked. This CL adds
support for linking Programs without attached Shaders.
Bug: b/182409935
Test: ProgramPipelineTest31.ProgramBinary
Change-Id: Ic5a4776e1374322665f45fbbcbf955838d093d02
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2770685
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
e3b9dbef
|
2021-03-17T18:01:02
|
|
Update PPO's executable when attached program is re-linked
When a program that's being used by a PPO is successfully re-linked, the
PPO's ProgramExecutable needs to be updated. This takes advantage of the
subject/observer pattern that's already established between programs and
PPOs to ensure only the PPOs that the program is a part of are updated.
Bug: b/182409935
Test: ProgramPipelineTest31.ModifyAndRelinkShader
Change-Id: Idcc11e7e819b4a9bef02bdd71afc8ea58111acc6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2770684
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
f28d63e9
|
2021-03-24T11:14:24
|
|
Vulkan: Enable glBlitFramebuffer for EXT_sRGB_write_control
Implements support for the glBlitFramebuffer edge case in the
EXT_sRGB_write_control spec, and fully exposes this extension.
Bug: angleproject:5075
Test: SRGBFramebufferTest*.*Vulkan*
Change-Id: I05f044abbc5cb272825d1fc4b9028217f18e63c2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2785641
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
|
|
525fde75
|
2021-03-22T14:55:21
|
|
Fix potential mod by 0 with invalid formats.
If the format passed to MakeValidSize is invalid, there
is potential for a mod by 0 which can result in a crash.
Test: Verify no crash when format is invalid.
Bug: b/182823289
Change-Id: I7f538be5d984070984f5581a5cc7ea47264109f4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2780557
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Doug Horn <doughorn@google.com>
|
|
010d61f2
|
2021-03-24T13:08:38
|
|
Disable Framebuffer Fetch test.
See issue for more details.
Bug: angleproject:5792
Change-Id: I7a72dfe75a85f2bf69e3528f35c01ca69c67f8f2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2785420
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
dd5705e7
|
2021-03-24T08:18:24
|
|
Add missing qualifier type handling in translator
Translator checks tessellation shader unsized array type qualifier.
sample in/sample out were missing in handling qualifier type.
Bug: angleproject:5557
Test: GLSLTest_ES31.VaryingTessellationSampleInAndOut*
Change-Id: I8a2f2c4c4fcc9cc88000d3b2d448ab51fb9e5d38
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2776263
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
|
|
ef17c650
|
2021-03-08T18:50:53
|
|
Vulkan: Add test for filament gltf usage case
filament gltf sample code is rendering to a level that is excluded from
[base_level, max_level]. This is allowed by OpenGL spec. We are crashing
right not. This CL adds tests for the exact usage pattern for filament.
Bug: b/181800403
Test: FramebufferTest_ES3.RenderAndInvalidateImmutableTextureWithBeyondMaxLevel
Test: FramebufferTest_ES3.RenderAndInvalidateImmutableTextureWithSubImageWithBeyondMaxLevel
Test: FramebufferTest_ES3.RenderAndInvalidateImmutableTextureWithBellowBaseLevelLOD
Change-Id: I69bab8bc3961bbc2dcc78ba2db3c8759f277416b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2752897
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
2be71410
|
2021-03-19T14:07:02
|
|
Handle inactive structure type varyings correctly
Correctly handle inactive varyings of structure type when collecting
transform feedback varyings. Previously, all varyings of structure type
were marked as active by mistake.
Bug: angleproject:5557
Test: TransformFeedbackTest.InactiveStructureVarying*
Change-Id: Ica1cbce5c551cdbb97999eeac59d09a961937615
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2770680
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
7fe44a53
|
2021-03-20T09:39:09
|
|
Vulkan: Don't acquire new BufferHelper for external buffers
EXT_external_buffer spec -
This extension allows the data store for an immutable buffer to be
sourced from an external EGLClientBuffer, allowing sharing of EGL
client buffers across APIs, across processes, and across different
processing cores such as the GPU, CPU, and DSP.
The intent is for a single backing memory to be reused across various
processes and processors. Ensure that a glBuffer backed by external
memory does not orphan the memory when glBuffer APIs like
glBufferSubData or glMapBufferRangeEXT modify the glBuffer.
Bug: angleproject:4380
Bug: angleproject:5073
Tests: ExternalBufferTestES31.*DoesNotCauseOrphaning*Vulkan
Change-Id: I4e88f80d93ee1ba1208378121412926351d10af8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2776192
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
d5bc8a27
|
2021-03-17T18:21:35
|
|
Vulkan: Add VUID-vkCmdDraw-None-04584 validation error to ignore list
Aztec ruins is using the same texture (but different level controlled by
a uniform variable) for textureLod and rendering. This triggers vulkan
validation error. This CL put it in the ignore list so that it can pass.
Bug: b/175584609
Change-Id: I7623e7b448514b3c12268aa5fe154f4c2f59b059
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2770686
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
867411a4
|
2021-03-08T19:08:14
|
|
Vulkan: Track images used for both attachment and sampler
This CL adds a new layout ImageLayout::ColorAttachmentAndShaderRead. We
detect that the same ImageHelper object is used for both sampler and
attachment and will pick this new layout instead of ColorAttachment.
Bug: b/175584609
Change-Id: I2089f59d4dc1ad4de7edab0e067797adcfa9b020
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2749479
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
0a80f2e1
|
2021-03-15T16:56:08
|
|
D3D: Mark images dirty after recovering from storage
When images are recovered from storage due to resizing storage, they
were marked as clean and not always re-copied to the new storage.
Bug: angleproject:5757
Bug: chromium:1188854
Change-Id: Idd11025820433ab74ff769cd9508efcec4575c32
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2763282
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
ba0bd785
|
2021-03-15T16:00:33
|
|
Fix the assert error and inbalence parens for SSBO
This PR strengthens below two cases:
1. Support calculate unsized array size for any type. Previously,
it reported error when the type was a structure.
2. Correctly add the right paren for store function when any
load/length functions are nested in it.
Bug: angleproject:5734
Change-Id: I3428fa35f1481275e1d193094ceddb011f747cf1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2762655
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jiajia Qin <jiajia.qin@intel.com>
|
|
1f1b4ffe
|
2021-03-08T11:44:28
|
|
Vulkan: Test render and sample the same texture but with different LOD
This simulates aztec ruin's usage. This works properly on native OpenGL
but generates validation error on vulkan backend and renders incorrect
as well.
Bug: b/175584609
Test: FramebufferTest_ES3.SampleFromAttachedTextureWithDifferentLOD
Change-Id: I402c205a1b625669cae29ee201dddd144e0dfbde
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2743797
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|