src


Log

Author Commit Date CI Message
Shahbaz Youssefi 24155b13 2021-06-17T18:09:29 Vulkan: Free DynamicBuffer buffers after dip in allocation size In a pattern like this: - allocate 100 bytes - allocate 200 bytes - allocate 50 bytes - allocate 100000000 bytes - allocate 100 bytes - allocate 200 bytes - allocate 50 bytes The DynamicBuffer class switches to making 100MB allocations even if that allocation was a one-off. A small future allocation would then tie up 100MB in memory for future allocations. Another 100MB is also left tied up in the free list. With this change, if an allocation is made that's less than a quarter of the DynamicBuffer's current allocation size, it's taken as a sign that the previous large allocation was a one-off and the size is moved back to the DynamicBuffer's original initial size. Bug: b/187757166 Change-Id: I0c6f00eec7c81298f9dc41a41cc308510ce76623 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2971004 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
John Plate 69562546 2021-06-11T19:12:11 CL: Refactor info structs and fix conformance bug - Remove variable name prefix from Info structs to be more consistent with other ANGLE structs. - Fix CL object validation check with magics, since the Mesa solution doesn't work without RTTI. - Add support for some extensions required by OpenCL 1.1 and for some optional extensions. - Fix more conformance bugs. Bug: angleproject:6015 Change-Id: I41b1c45d95059a9994f5dc78bf9b74476cc6f2d4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2956349 Commit-Queue: John Plate <jplate@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Ian Elliott ecf27c71 2021-06-16T13:13:31 GL: Fix bug with: Skip redundant flushes. The ANGLE-into-Skia autoroller is blocked because of the following CL: https://chromium-review.googlesource.com/c/angle/angle/+/2956453 Michael Ludwig, a Skia engineer, found that this change fixes the problem and will unblock the auto-roller. Bug: chromium:1181068 Change-Id: I514b2762f6643e25b36aab0290a57af4abf3c660 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2965615 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Ian Elliott <ianelliott@google.com>
Mohan Maiya b77a6c25 2021-06-16T11:01:14 Vulkan: Avoid using VK_WHOLE_SIZE when using dynamic offsets Binding descriptor sets that use VK_WHOLE_SIZE with a dynamic offset results in the VUID-vkCmdBindDescriptorSets-pDescriptorSets-01979 validation error. Updated the updateDefaultUniformsDescriptorSet function to use the uniform's size instead of using VK_WHOLE_SIZE. Bug: angleproject:5924 Tests: dEQP-GLES31.functional.shaders.multisample_interpolation.* SimpleStateChangeTest.UniformUpdateTest*Vulkan UniformTestES3.MatrixUniformUpload*Vulkan Change-Id: Ie4633af61d59a9401f599d336a5b9040cdf18004 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2950309 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi 99a98963 2021-06-10T16:11:13 Vulkan: SPIR-V Gen: Support discard This is simply done with OpKill. If-else blocks now check if the block is already terminated (through return, discard, continue or break) before adding the branch to merge block. Bug: angleproject:4889 Change-Id: I713286cf38e40f9048486d2914a4355ddbc686ac Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2953369 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Shahbaz Youssefi 9c500951 2021-06-10T15:48:57 Vulkan: SPIR-V Gen: Fix user-defined blocks The _u prefix was missing from blocks and their fields. Bug: angleproject:4889 Change-Id: I31f3b393bc81352c8cf7a433dd652692833fc3f7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2953368 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Shahbaz Youssefi 5a737833 2021-06-10T15:19:59 Vulkan: SPIR-V Gen: Fix row-major matrices Prior to this change, row-major and column-major matrices generated different types. That is not correct. With this change, the same type is generated for both. Row-major only comes into account when calculating the alignment and offset of fields in a block. Bug: angleproject:4889 Change-Id: Ifa03e1799a2510b90323d9d4fc2f681a3184069b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2953367 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Shahbaz Youssefi e48f2210 2021-06-10T13:23:34 Vulkan: SPIR-V Gen: Support short-circuiting && and || When short-circuiting is necessary (because the right-hand side has side effects), the following code is generated in SPIR-V: // For left && right: result = left if (left) result = right // For left || right: result = left if (!left) result = right Bug: angleproject:4889 Change-Id: Id87b56dc4a1463ed781852a23d2ba6eb2015d700 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2953366 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Shahbaz Youssefi a76f224f 2021-06-16T00:43:55 Fix build Two CLs went in at the same time, causing a build breakage. Bug: angleproject:4889 Change-Id: I0dacda7263959014fb4ad9bd83733f58a5e98fe6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2965319 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: John Plate <jplate@google.com>
Shahbaz Youssefi 8b869a95 2021-06-13T01:09:27 Translator: Generate Ops for all built-in functions EOpCallBuiltInFunction is removed in this change, as well as the "op": "auto" property in builtin_function_declarations.txt. Instead, gen_builtin_symbols.py automatically generates Ops for every built-in function and generates the TOperator enum accordingly. This simplifies SPIR-V code generation by allowing switches to be used on operators instead of string comparisons. Bug: angleproject:4589 Bug: angleproject:4889 Change-Id: Ia351524400b0e12a10a5572e27e9b88c6ec2e61c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2958869 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Tim Van Patten <timvp@google.com>
Shahbaz Youssefi 64ca25f1 2021-06-08T17:15:49 Vulkan: SPIR-V Gen: Unary operators The line raster emulation coded uses round() which was previously not translated. This change implements all operations supported by TIntermUnary nodes. Bresenham line emulation is now allowed. Bug: angleproject:4889 Change-Id: I1ffbe3f9bf0299f7efa2c6d1e8f011fefdbb2ddb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2951624 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Shahbaz Youssefi 0297779c 2021-06-08T01:06:21 Vulkan: SPIR-V Gen: Handle invariant variables The Invariant decoration is applied to variable declarations and block members as necessary. When invariant is applied to a gl_PerVertex built-in, it's applied to the appropriate member in DeclarePerVertexBlocks. Bug: angleproject:4889 Change-Id: Idaa8d4ab92f975381a0237d372f0a4044ff983e0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2946116 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Peter Kasting f33a41be 2021-06-15T16:59:57 Another fix for -Wc++11-narrowing. Bug: chromium:1216696 Change-Id: I65955fe818917a1909c3d1af391718aaa82652bb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2965535 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 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>
Shahbaz Youssefi a1d43971 2021-06-12T23:11:48 Translator: Pack TSymbol and TFunction fields Shaves ~45KB off of binary size in an ANGLE build on Linux, coming from the built-in TVariable and TFunction variables. Bug: angleproject:4889 Change-Id: I5466c9e26b069a07bf52d00fc2a9c5d49f3c0feb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2958868 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 18ddd131 2021-06-07T14:59:43 Vulkan: SPIR-V Gen: Support mediump/lowp The mediump and lowp precisions translate to a RelaxedPrecision decoration in SPIR-V. This change implements this decoration and enables SPIR-V generation when emulating Bresenham lines. Prior to this change, Bresenham line emulation resulted in a validation error due to the vertex shader output being without RelaxedPrecision but the fragment shader input (translated by glslang) with it. The function that produces a new id is given a list of decorations to apply, which itself is automatically deriven from the TType where applicable, to minimize the risk of any id missing this decoration. Bug: angleproject:4889 Change-Id: I30cc5a278634c5d83d63cd65b057336f9f573baa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2946113 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Shahbaz Youssefi af1eed2e 2021-06-10T01:55:59 Vulkan: Generate gl_FragColor/Data declarations in AST gl_FragColor and gl_FragData are not available in Vulkan. Prior to this change, their declaration as webgl_FragColor and webgl_FragData was done in text. This change implements an AST transformation that declares a normal fragment output variable and replaces all references to these built-ins with those variables. Bug: angleproject:4889 Change-Id: If224e089dec25e4aa580beb135e1be2890de7887 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2953042 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Alexis Hetu 4fbb6f43 2021-06-14T18:20:06 Vulkan: Fix accessing index buffer with uninitialized memory This was discovered by Clusterfuzz on MacOS. The issue was that is index buffer of a draw indexed call was missing, causing SwiftShader to access uninitialized memory, leading to the ASAN crash. The missing index buffer was caused by DIRTY_BIT_INDEX_BUFFER not being set. This was in turn caused by ContextVk::flushDirtyGraphicsRenderPass() not setting dirty bits not included in the dirtyBitMask, despite needing to be set for future processing. Bug: chromium:1183068 Bug: chromium:1190493 Change-Id: I65b398d8737b3df5fd51a03a2c8074a774a94a81 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2961690 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang 8333d061 2021-06-14T11:01:35 GL: Respect TexSubImage upload limits for robust init The chunked_texture_upload splits texture uploads for glTexSubImage calls but ANGLE uses glTexSubImage internally for robust resource initialization. Also chunk those uploads. Bug: chromium:1181068 Change-Id: Ia6eaac8117173946630f420b396cbc54c163b7ce Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2961230 Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
John Plate 2c8d9a9a 2021-06-09T16:09:35 CL: Remaining functions for OpenCL 1.2 Add support for the remaining functions for OpenCL 1.2 for the front end and pass-through back end. Also fix several bugs discovered by the conformance tests. Bug: angleproject:6015 Change-Id: I1dca1c3f4c1d9aea7f0501094c171116ea01381f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2954259 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: John Plate <jplate@google.com>
Geoff Lang 222a81cf 2021-06-11T14:34:52 Reland: GL: Skip redundant flushes. Skip flushes when there is no work submitted since the last flush. Bug: chromium:1181068 Change-Id: Iab31f8949f7eb07dffb7b0930069cbb3ca69ef57 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2956453 Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Ian Elliott ebf75698 2021-06-10T18:55:04 Vulkan: Fix AGI clear hierarchy bug for clear commands This approach properly handles outside-render-pass clears. Bug: b/190622922 Change-Id: Ia4a9d6ec13d7da8c4a445af1127e82c03f37e8b2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2951960 Reviewed-by: Mark Lobodzinski <mark@lunarg.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Ian Elliott <ianelliott@google.com>
John Plate 55df3ec1 2021-06-08T18:57:15 CL: Add remaining enqueue commands Add support for remaining OpenCL 1.2 enqueue commands to front end and pass-through back end. Bug: angleproject:6015 Change-Id: Iab650e42d51e2105dc826088d3606c56d5cd0fd5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2944966 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: John Plate <jplate@google.com>
Ian Elliott 1fcbf77c 2021-06-10T16:02:31 Vulkan: Fix AGI hierarchy for query commands Treat glBeginQuery* and glEndQuery* commands the same as glDraw* commands, generating a hierarchy. This results in vkCmdBeginQuery and vkCmdEndQuery commands being nested under gl*Query*, instead of being a peer of glDraw* commands. This change necessitated plumbing some of the existing "end" path to return angle::Result. Bug: b/190512191 Change-Id: I898d3fdd9b4b7d86e76dfae2ffc5d6f7316a55ef Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2950926 Reviewed-by: Mark Lobodzinski <mark@lunarg.com> Reviewed-by: Ian Elliott <ianelliott@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Ian Elliott <ianelliott@google.com>
Shahbaz Youssefi 29227eef 2021-06-05T22:25:01 Vulkan: SPIR-V Gen: Specialization constants With specialization constant qualifier and ids set in the node types, the SPIR-V generation for these variables are trivially handled. This is in preparation for enabling line raster emulation as well as fragment shaders in general. Bug: angleproject:4889 Change-Id: Ie4d4e47b222ac66d1e0eee29f55ac09990313580 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2939337 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Shahbaz Youssefi ac704c80 2021-06-10T17:51:07 Roll VK-GL-CTS from d17a353c6cd4 to 7f2ec8531b64 (15 revisions) https://chromium.googlesource.com/external/github.com/KhronosGroup/VK-GL-CTS.git/+log/d17a353c6cd4..7f2ec8531b64 2021-06-10 siglesias@igalia.com Check resource limits properly 2021-06-10 rgarcia@igalia.com Capture early errors on instance creation 2021-06-10 ilkka.saarelainen@siru.fi Add depth execution mode tests 2021-06-10 alexander.galazin@arm.com Merge vk-gl-cts/opengl-es-cts-3.2.7 into vk-gl-cts/master 2021-06-09 rgarcia@igalia.com Test instance matrix update after command recording 2021-06-09 rgarcia@igalia.com Test null miss shader group handles work 2021-06-09 rgarcia@igalia.com Test tracing rays from inside AABBs 2021-06-09 siglesias@igalia.com Fix wait semaphore count value 2021-06-09 marcin.kantoch@amd.com Fix internal error for fragment stage in RT tests 2021-06-09 alexander.galazin@arm.com Add GL_ARB_separate_shader_objects requirement 2021-06-09 alexander.galazin@arm.com Raise glsl version to 420 for compute shaders 2021-06-09 alexander.galazin@arm.com Raise glsl version to 410 core for shaders with GL_ARB_shader_atomic_counters 2021-06-09 alexander.galazin@arm.com Remove shaders.switch from the Khronos mustpasses 2021-06-07 zzyiwei@google.com Add a test for VK_EXT_global_priority_query 2021-06-07 alexander.galazin@arm.com Update Vulkan headers If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/vk-gl-cts-angle-autoroll Please CC syoussefi@google.com,angle-bots+autoroll-info@google.com on the revert to ensure that a human is aware of the problem. To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/master/autoroll/README.md Bug: None Tbr: syoussefi@google.com,angle-bots+autoroll-info@google.com Change-Id: Iac5faae807430cb114617f77543768ea6047f3a2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2953060 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: angle-autoroll <angle-autoroll@skia-public.iam.gserviceaccount.com> Bot-Commit: angle-autoroll <angle-autoroll@skia-public.iam.gserviceaccount.com>
Shahbaz Youssefi 31641b8e 2021-06-05T02:17:47 Declare specialization constants in the AST A new qualifier (EvqSpecConst) is added so that specialization constants can be declared in tree. This enables TVariable references to specialization constants to be validated, which were in fact invalid as every reference declared a new variable. That is fixed. Bug: angleproject:4889 Change-Id: I1711e41cbc5a1260843d2d004d3568bdae11e963 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2941451 Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
John Plate 82654e5d 2021-06-06T15:46:53 CL: Add program build commands Add program build commands to front end and pass-through back end. Bug: angleproject:6015 Change-Id: I1175646d35ff050796b718d7f0e269520292b319 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2940839 Commit-Queue: John Plate <jplate@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
John Plate 2e772e04 2021-06-04T14:01:42 CL: Add image enqueue commands Add image enqueue commands to front end and pass-through back end. Bug: angleproject:6015 Change-Id: I133e84020975679fafd29432c965cd19f086d2b4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2940837 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: John Plate <jplate@google.com>
Sergey Ulanov c670917c 2021-06-02T14:43:03 [Fuchsia] Cleanup vulkan_fuchsia_ext.h Removed defintions of fuchsia-specific vulkan types from vulkan_fuchsia_ext.h . Instead, the types provided by vulkan_fuchsia.h are used now. Also re-enabled vulkan validation on Fuchsia. Bug: chromium:1215736 Change-Id: I795347b7fb61d90033749533cefd42cf180730fb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2934718 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Gert Wollny 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>
Shahbaz Youssefi 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>
Gert Wollny cb4f8a79 2021-06-08T10:39:47 Capture: Add a specialization for TGLeglImageOES When writing out the parameter TGLeglImageOES an additional cast is needed. Bug: angleproject:6036 Change-Id: I7470a58a6ae17b0185d0c2e3fe1184b698f3efaf Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2944952 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
Peter Kasting 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>
Brandon Schade 69f2fb00 2021-03-08T10:49:31 Vulkan: Expose OES_geometry_shader extension Modify the symbol table generation script to accept a list of supported extensions. This allows for the EXT and OES versions of the geometry shader extension to be exposed. Test: angle_deqp_khr_gles31_tests --deqp-case=*geometry_shader* Bug: angleproject:3571 Change-Id: Ia7127a03dbd3fce78957f0505d3ce0c9bab6cb15 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2765011 Commit-Queue: Mohan Maiya <m.maiya@samsung.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 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>
Shahbaz Youssefi 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>
Mark Lobodzinski 4bafc503 2021-06-01T10:59:17 Vulkan: Fix AGI hierarchy for clear commands Treat mid-render-pass glClear* commands the same as glDraw* commands, generating a hierarchy. This results in vkCmdClearAttachment commands being nested under glClear, instead of being a peer of glDraw* commands. Bug: b/183547523 Change-Id: Ibc6900b0485fd174d79c8fe6c94ea17dbefa520b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2941364 Reviewed-by: Mark Lobodzinski <mark@lunarg.com> Reviewed-by: Mike Schuchardt <mikes@lunarg.com> Reviewed-by: Ian Elliott <ianelliott@google.com> Commit-Queue: Ian Elliott <ianelliott@google.com>
Michael Yu 7c253fca 2021-06-02T13:18:44 D3D11 additional context-loss logging This makes logging more consistent when we encounter context loss. In Renderer11::testDeviceLost, note DXGI_ERROR_INVALID_CALL is a valid GetDeviceRemovedReason, but was not detected prior. SwapChain11::resize and SwapChain11::reset added more logging, likewise with Context11::handleResult. This covers everywhere d3d11::isDeviceLostError is invoked, though that might not be exhaustive of all cases we detect device loss. Bug: b/188291915 Test: Manually trigger conditions to test logging. Change-Id: Idd57363101b53bc2d3c4c306ee78a42012a1a320 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2935696 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Doug Horn <doughorn@google.com> Commit-Queue: Michael Yu <warty@google.com>
Shahbaz Youssefi df977aaf 2021-06-08T01:04:32 Translator: Validate global qualifier declaration's symbol Global qualifier declarations (invariant, precise) apply to already-declared variables. This is now validated. Bug: angleproject:4889 Change-Id: I9889f2d68dcd6a2fc0de2b20a1291899397982d0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2946114 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 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>
Shahbaz Youssefi c3e397c6 2021-06-07T17:25:59 Use float clamp unconditionally for indirect index clamping Suspecting a Qualcomm driver bug with integer clamp affecting WebGL2 tests. Bug: chromium:1217167 Change-Id: I6b323a9de5828b3a11cbe2650d66c7627b90a9f4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2946111 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 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>
Gert Wollny 1ab6d214 2021-06-07T08:49:09 Capture: Create group variable for BlockMemberInfo Also declare GroupScope as NO_DISCARD. Bug: angleproject:6016 Change-Id: I738f137727d52a0930cd8c400fbc05f1cc8cfdad Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2943927 Commit-Queue: Gert Wollny <gert.wollny@collabora.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi 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>
Gert Wollny c1932fb5 2021-06-07T12:25:47 Serializer: Print FBO attachment name instead of a number Bug: None Change-Id: I419a0ca6d1c2e3c47dc84b106baf40dc0abb85cb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2943930 Commit-Queue: Gert Wollny <gert.wollny@collabora.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill d99864c0 2021-06-07T12:48:01 Gold Tests: Fix flaky test handling. Indead of just retrying the batch, retry individual tests. This should correctly handle the Intel flake pattern. Bug: angleproject:5415 Change-Id: I029c2514ff8e7a45184c5c105bf2d0350171da29 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2940049 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Mark Lobodzinski 0a6c6c00 2021-06-01T10:59:17 Vulkan: Submit Dispatch commands outside renderpass Compute dispatch commands must be submitted outside a renderpass, but their associated debug event markers were being submitted on the renderpass commandbuffer. The dispatch debug event markers are now handled separately from those for draw calls and are now submitted on the correct commandbuffer. Failure manifested in malformed AGI traces for Ragnarok M: Eternal Love Bug: b/181611786 Change-Id: I768eeccd76be38818fc99d6d56f5899290c8fc5b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2930818 Reviewed-by: Ian Elliott <ianelliott@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Ian Elliott <ianelliott@google.com>
Jamie Madill 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>
Cody Northrop 7231c705 2021-06-07T14:03:45 Tests: Skip genshin_impact on Intel Linux Bug: angleproject:6029 Change-Id: I2f25dcedf36d9f341d134baeb9752fb3e3aada6b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2944621 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Shahbaz Youssefi 77831a6d 2021-05-31T22:41:58 Vulkan: SPIR-V Gen: If-else blocks This change implements if-else blocks as well as a few simple binary operations (equality, less-than etc). It builds on prior work to generate the function in separate blocks and introduces a "conditionals" stack to support nesting of if-else blocks, switches and loops. Bug: angleproject:4889 Change-Id: If7694000487811837ed5946753568b41d67199f0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2929660 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Shahbaz Youssefi 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>
Mohan Maiya 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>
Sunny Sachanandani 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>
Jamie Madill 046f70a3 2021-06-04T15:40:16 Revert "Remove unused code from ValidateES2CopyTexImageParameters" This reverts commit fcd7affb6bfd9e17d6c12e836158f8f0fc634b14. Reason for revert: Differences in format checks make the validation logic trip a newly added ASSERT. Bug: chromium:1216276 Original change's description: > Remove unused code from ValidateES2CopyTexImageParameters > > Compressed formats are rejected earlier with > ValidateCopyTexImageParametersBase > > Bug: angleproject:5731 > Change-Id: I7809140af84f2c565008e211adf0f998a0e57e91 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2741580 > Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Geoff Lang <geofflang@chromium.org> Bug: angleproject:5731 Change-Id: I7734d9bce538e5679c8ee672f547941f5f693261 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2940904 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi fafd64a6 2021-06-01T17:08:07 Vulkan: SPIR-V Gen: Matrix decorations Matrices in blocks require MatrixStride and one of ColMajor or RowMajor decorations. Bug: angleproject:4889 Change-Id: I14ddb32fd3dbc977bf41703b016dc6d1c0722475 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2930368 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Mohan Maiya 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>
Cody Northrop 135d1483 2021-06-03T13:24:16 Tests: Skip flaky capture_replay_tests Several VulkanExternalImageTest* tests are timing out locally, but not consistently. Bug: angleproject:5721 Change-Id: Iffb6d319bb31206af3287a70259a47857b64f434 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2937736 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Shahbaz Youssefi 683064b7 2021-06-02T02:59:55 Vulkan: Fix missing operand list in OpExecutionMode parser & builder Bug: angleproject:4889 Change-Id: Ie864031caeddfcf5202044b0f9c197b3883ceaf7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2934782 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill 16b10a54 2021-05-21T15:35:00 Revert "Capture/Replay: Emit SetupReplay() late" This reverts commit 54ba6f0135715737a55f2dc4fc1cb86874fb98f9. Reason for revert: breaks MEC. Bug: angleproject:5999 Original change's description: > Capture/Replay: Emit SetupReplay() late > > Only emit SetupReplay() after all captured frames have been run, > so that InitializeReplay() is called with values of > readBufferSize and the maxClientArraySize that are sufficiently > large for all frames. > > Bug: angleproject:5965 > Bug: angleproject:5895 > Change-Id: Ic59597dc27f733fb210d7cc5a144a86e54cd2040 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2894486 > Commit-Queue: Gert Wollny <gert.wollny@collabora.com> > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Cody Northrop <cnorthrop@google.com> Bug: angleproject:5965 Bug: angleproject:5895 Change-Id: Ia901183b2052fa2b4552ad2e09818a2894fbdf6b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2911878 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Cody Northrop 9ba86e06 2021-06-03T13:41:39 Revert "FrameCapture: Write the frame cpp file even if frame is empty" This reverts commit 6619c464e5f6237d7465ec945d24164372aa4196. Reason for revert: breaks MEC. Bug: angleproject:5999 Original change's description: > FrameCapture: Write the frame cpp file even if frame is empty > > The index file will add a reference to this file, and the replay will > also expect that the frame execution function and the context function > exist, so write the file even if the frame is empty > > Bug: angleproject:5939 > Change-Id: I265d061fdae51b86131d145116ad1c0f9ca8c93f > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2882581 > Commit-Queue: Gert Wollny <gert.wollny@collabora.com> > Reviewed-by: Cody Northrop <cnorthrop@google.com> > Reviewed-by: Jamie Madill <jmadill@chromium.org> Bug: angleproject:5939 Change-Id: I759d44ba847c69faf1caf97a9818836d1be3b058 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2937737 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Jamie Madill 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>
angle-autoroll 05d5e0d3 2021-06-03T09:34:12 Roll VK-GL-CTS from 2e0ecf9812ba to c25238228ea4 (11 revisions) https://chromium.googlesource.com/external/github.com/KhronosGroup/VK-GL-CTS.git/+log/2e0ecf9812ba..c25238228ea4 2021-06-03 jari.komppa@siru.fi Static code analysis fix for bounding box test 2021-06-03 jari.komppa@siru.fi Add timer query handle reuse test for opengl es 2021-06-03 boris.zanin@mobica.com Invalid VkPipelineRasterizationLineStateCreateInfoEXT chained 2021-06-03 mika.vainola@siru.fi Fix vertex count calculation in XFB query tests 2021-06-03 pdaniell@nvidia.com Set the recursion depth for chit and miss cases 2021-06-03 siglesias@igalia.com Add depth-stencil tests that do vkCmdCopyImage() with both image aspects 2021-06-03 marcin.zajac@mobica.com Test for fragment shading rate in FragCoord.zw 2021-06-03 siglesias@igalia.com Add tests for vkCmdCopyQueryPoolResults and pipeline statistics 2021-06-02 alexander.galazin@arm.com Update glslang, SPIR-V Tools/Headers 2021-06-02 zzyiwei@chromium.org Check return code for vkGetAndroidHardwareBufferPropertiesANDROID 2021-06-02 venni.ihanakangas@siru.fi Add script for comparing dEQP SwiftShader runs If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/vk-gl-cts-angle-autoroll Please CC ynovikov@google.com,angle-bots+autoroll-info@google.com on the revert to ensure that a human is aware of the problem. To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/master/autoroll/README.md Bug: None Tbr: ynovikov@google.com,angle-bots+autoroll-info@google.com Change-Id: I664cd69b0e4a594077d193fa4f81c47b8812f2c6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2934721 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Shahbaz Youssefi c2ad5824 2021-05-31T12:20:27 Vulkan: SPIR-V Gen: Code blocks This change lays the foundation for implementing branches and loops. In SPIR-V, every block starts with an OpLabel (which identifies the block and serves as the branch target to that block), and ends in a branch. An `if` for example implies the existence of four blocks, the header including code leading up to the if, the true and false blocks and the "merge" block, including the code following the if-else blocks. This change includes support code for generating function code split in blocks, even though only one block is currently used. Bug: angleproject:4889 Change-Id: I10f96b78b6f00c20bc7f9c81e854ab5543bf8fde Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2929659 Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill bc9d5223 2021-06-02T18:19:08 Experimental fix for stdout freopen race. Bug: chromium:1213184 Change-Id: I2e2741f4100b2a5516210f2250dc82511fafd05b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2933602 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Yuly Novikov 10f15011 2021-06-03T19:22:53 Revert "Make SH_CLAMP_INDIRECT_ARRAY_BOUNDS do proper AST transformation" This reverts commit a474fd7de769ae817db83490d410510cdbed75b2. Reason for revert: breaks GLES2ConformTest, see roll into Chromium: https://chromium-review.googlesource.com/c/chromium/src/+/2935093 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: I911cfe0199b04dbc3d6d4265775b6c2de00a9777 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2937024 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Cody Northrop 9193a909 2021-05-26T15:07:54 Tests: Add Genshin Impact trace Test: angle_perftests --gtest_filter="*genshin_impact*" Bug: b/181794064 Bug: angleproject:6023 Bug: angleproject:6024 Change-Id: Ic0debb1e284d672b8ab179ac24cd711c9e5d7e9d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2921069 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Tim Van Patten <timvp@google.com>
Shahbaz Youssefi a474fd7d 2021-06-02T22:04:45 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>
Jamie Madill 8c51ac2b 2021-06-02T19:50:46 Gold Tests: Fix sharding + batching. Clearing the GTEST args from the env vars will run the proper subset of tests instead of applying sharding arguments twice. This should fix the tests on the bots running a small subset of the tests. Also updates logging control for the script. Bug: angleproject:5966 Change-Id: Ic8a21e6aacfed17eff836d4301a6a50464b2cb92 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2935196 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi 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>
Yuly Novikov c39e2a18 2021-06-02T22:58:30 Skip flaky end2end tests on Mac AMD OpenGL IndexBufferOffsetTestES3.UseAsUBOThenUpdateThenUInt8Index IndexBufferOffsetTestES3.UseAsUBOThenUpdateThenUInt8IndexSmallUpdates Bug: angleproject:6025 Change-Id: Ie1038b9a33d7870c8c1f03c5a88196463615c535 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2935597 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Shahbaz Youssefi 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>
Ian Elliott 152450f8 2021-06-02T15:38:35 Fix ContextVk::handleNoopDrawEvent() for when no cmd buffer ContextVk::handleNoopDrawEvent() was created to handle no-op glDraw*'s. However, it assumed/assert'd a valid mRenderPassCommandBuffer. That is not always the case. Fix this by having handleDirtyEventLogImpl() check for a valid command buffer. Bug: b/189967673 Bug: b/184888395 Change-Id: Ice7c5da842a6f41f27c24af8e858147d01be86bc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2935756 Reviewed-by: Ian Elliott <ianelliott@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Ian Elliott <ianelliott@google.com>
Shahbaz Youssefi 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>
Shahbaz Youssefi 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>
Yuly Novikov 6207b871 2021-06-02T16:10:52 Mark a dEQP.GLES31 test slow dEQP.GLES31/functional_ssbo_layout_random_all_shared_buffer_36 Bug: angleproject:6021 Change-Id: Ic8c7a30c16ca8250abc964ea33268055f62ba1c4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2935296 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Cody Northrop 71584e36 2021-05-27T11:50:47 Tests: Disable trace compilation for MSVC and GCC New traces are hitting string literal limits with MSVC. Since we don't use MSVC or GCC for trace development or testing, this CL disables trace compilation for non-clang setups. Bug: b/181794064 Bug: angleproject:6009 Change-Id: I0377792a049153a5505ecda4346a3cec57c12e9e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2922682 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
John Plate 41b817f3 2021-05-31T17:38:43 CL: Add buffer enqueue commands Add buffer enqueue commands to front end and pass-through back end. Bug: angleproject:6015 Change-Id: I936530d31903e395550e4540339ebec2e6702e65 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2928425 Commit-Queue: John Plate <jplate@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
John Plate daf18594 2021-05-31T12:04:42 CL: Refactor front end entry functions Move all front end functions that are only called from the OpenCL entry points to a separate section at the top of the front end object class bodies, which improves readability. Bug: angleproject:6001 Change-Id: Id360adbf0c439e4068c379aa4ea1da25e99f7b53 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2928419 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Cody Northrop 3c1b02b5 2021-06-01T16:22:47 Tests: Turn lineage_m on for Nvidia Linux The test is no longer failing. Test: angle_perftests --gtest_filter="*lineage_m*" Bug: angleproject:5748 Change-Id: Ic25471c1628d99b6e305c6b4ce6fa4b1e3558514 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2930820 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Ian Elliott 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>
John Plate baca10b7 2021-05-29T16:26:57 CL: Remove object cache and fix multi-threading All CL front end objects used to be cached to be able to determine if an object has been created by the front end to check its validity. The validity is now checked with the existence of an intrinsic value (the dispatch table pointer), which is consistent with the patterns found in Mesa and clvk (though clvk uses a magic value). This allows the removal of all cached objects. The cached objects were stored with std::unique_ptr. These are now gone and all remaining pointers are now custom intrinsic reference count pointers. Also remove global lock which causes deadlocks, e.g. when CL API is called from a separate thread to unlock a blocking call with a user event. Most of the front end is constant and already thread-safe. The ref count is also thread-safe now (atomic). A few remaining locks will follow. Without the global lock it was now possible to make the API reentrant, and to remove the workaround with the Khronos ICD loader to skip ANGLE's OpenCL library. Bug: angleproject:6001 Change-Id: I7d3b52db9011a02cb7ea9ebdeb6e22c4c702ef5b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2927395 Commit-Queue: John Plate <jplate@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
John Plate 076974a9 2021-05-28T11:44:54 CL: event creation for front end & passthrough Add event object to back end and implement creation and info query. Bug: angleproject:6001 Change-Id: Id4951b726b66afa289fafe1a716a7cfdb6f5826d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2925477 Commit-Queue: John Plate <jplate@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Kyle Piddington d7aa0130 2021-04-26T16:56:15 Upstream Apple's direct-to-Metal backend: compile translator. This change is meant to merge the translator changes from Apple's direct-to-Metal backend. Taken from Kyle Piddington's CL: https://chromium-review.googlesource.com/c/angle/angle/+/2857366/ The goal of this CL is to merge the translator code in a state that compiles, but not to switch the Metal backend over to use this translator backend yet. Bug: angleproject:5505 Change-Id: I68a6354604498cd5fd1eb96c13fc56f3b38f2bd0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2897536 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
John Plate 9459456b 2021-05-27T13:43:41 CL: kernel creation for front end & passthrough Add kernel object to back end and implement creation and info query. Bug: angleproject:6001 Change-Id: I6e3fdd2b35d7e73ed56144dc938bf21436d3559f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2922150 Commit-Queue: John Plate <jplate@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
John Plate 51ab3dc3 2021-05-25T16:54:11 CL: Improve validation readablity Improve validation readablity by introducing a bit field class and by changing how the CL error code is returned. Bug: angleproject:6001 Change-Id: I51deb745454e5281de725481edef85eb30be28c7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2919690 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: John Plate <jplate@google.com>
Geoff Lang c12f594a 2021-05-31T10:48:20 GL: Chunk uploads of texture data >120kb on Mac. Mac drivers are hanging and crashing after large glTexSubImage uploads. Chunk those uploads to avoid this problematic path in the driver. Bug: chromium:1181068 Change-Id: I7dca0b8e49420f015ff7830283c14283a0515826 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2928098 Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Cody Northrop 1e832ad6 2021-06-01T13:47:53 Tests: Require cube_map_array for cookie_run_kingdom Tbr: jmadill@google.com Bug: angleproject:6018 Change-Id: Ie27b82b4716aaf5164c65e890cd2d6fad3f2b836 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2930817 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Cody Northrop 6b837109 2021-05-31T22:23:08 Tests: Add Subway Princess Runner trace Test: angle_perftests --gtest_filter="*subway_princess_runner*" Tbr: jmadill@google.com,timvp@google.com Bug: b/189794097 Change-Id: I79ed00da91e0f304bf3899a0ab9ebfd2c1426739 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2929460 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Shahbaz Youssefi c072daec 2021-05-26T14:26:28 Add FastVector constructor with begin/end iterators Useful to construct a FastVector out of a subrange of another container. Bug: angleproject:4889 Change-Id: I0e62b601c7d171167343d526d198fa21ba52f0f9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2920191 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Cody Northrop eeeeed39 2021-05-31T20:48:29 Tests: Add Cookie Run: Kingdom trace Test: angle_perftests --gtest_filter="*cookie_run_kingdom*" Tbr: jmadill@google.com,timvp@google.com Bug: b/189788024 Bug: angleproject:6017 Change-Id: I5cd9912d099d1749b5677cf43e25fe73ee38d17c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2927509 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Cody Northrop a44b16d3 2021-05-26T09:35:56 Capture/Replay: Force validation on when capturing Genshin Impact is using EGL_KHR_create_context_no_error to create a context that exposes GL_KHR_no_error. If it successfully creates the context, it sends down call sequences that check query results available immediately after genning query objects: glGenQueries(1, reinterpret_cast<GLuint *>(gReadBuffer)); UpdateQueryID(415, 0); glGetQueryObjectuiv(gQueryMap[415], GL_QUERY_RESULT_AVAILABLE, ...); This throws errors on every platform I have access to, with either native or ANGLE as the driver. The spec is ambiguous as to whether this should cause an error, but practically we can't allow this if we want error free playback of traces. To support this, we will force validation on in the context when FrameCapture is enabled. When the app submits invalid calls, they will be dropped by FrameCapture. Test: Genshin Impact MEC Bug: b/181794064 Change-Id: If882d27d74661cd95bc23687eff3056a0f64e3cc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2921068 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jonah Ryan-Davis fe93fcdd 2021-05-27T13:28:18 Workaround Mesa 20 Intel driver bug with GLX_OML_sync_control Disable the use of this extension on Mesa 20/intel, it's causing GPU hangs. Bug: chromium:1187475 Change-Id: Ic7029b1f72bd0b0f4a2c11a7fceb0a59f51be8aa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2920811 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Yuly Novikov 1429130b 2021-05-28T14:02:58 Gold Tests: Fix batch result reporting Previously artifacts were not reset for a new trace in a batch Bug: angleproject:5966 Change-Id: Ia6ed8c070eaaeca7e6cea887419666f630648df8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2925218 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Yuly Novikov ce7d80bd 2021-05-27T18:16:07 Gold Tests: Fix batch uploading Uploading to Gold used to stop after the first failure in the batch Bug: angleproject:5966 Change-Id: Iff89c106b18a9aab5a43742a6085c5f9a3c9a188 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2923784 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Charlie Lao b6bd039c 2020-10-06T13:34:53 Vulkan: Fine-grained depth stencil layout transition barrier Gfxbench Manhattan uses depth attachment as texture in the same render pass, which creates a feedback loop. The layout we are using for this has kAllShadersPipelineStageFlags even though it only used by fragment shader. This creates an unnecessary vertex/fragment dependency that hurts performance on some mobile GPUs. This CL split DepthStencilReadOnly to DSAttachmentReadAndFragmentShaderRead, DSAttachmentReadAndAllShadersRead, and DepthStencilAttachmentReadOnly, so that if it is used by fragment shader, we only barrier against fragment stage. If not used by any shader, we don't block any shader stages. To make names consistent, this CL also renames DepthStencilAttachmentAndFragmentShaderRead to DSAttachmentWriteAndFragmentShaderRead, renames DepthStencilAttachmentAndAllShadersRead to DSAttachmentWriteAndAllShadersRead. Bug: b/169891513 Change-Id: Iede497e8af028861f9166a32d122f26dc7aa864a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2453599 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Charlie Lao 5e631c5f 2021-05-20T11:21:18 Vulkan: Disable shadowBuffers feature For PixelUnpack, if the feature is enabled, it always create a shadow CPU mapped memory. Then when mapBuffer is called, it let user write to the shadow memory. At unmapBuffer time, it memcpy the shadow buffer data to context's staging buffer and then issue a vkCmdCopyBuffer from context staging buffer to the PixelUnpack buffer. This involves too many data copies. The proper way to do it is simply make sure to create the buffer as CPU map-able and let user directly write to it. If we find cases that CPU waiting for GPU to finish is causing performance issues, there are two ways to improve/fix it: 1)Add event at end of each renderpass or FBO so that we know if GPU access is finished or not without have to wait for entire frame to finish rendering. 2) Create multiple buffers and ping-pong between them, at least there will be no VkCmdCopyBuffer call involved like shadow buffers do. But we will leave that to future time when we find such need. Bug: angleproject:5986 Change-Id: Ib8300e46e779d20533c1f7f81624de0ce003788b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2909758 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Alexis Hetu 84c42d1b 2021-05-26T12:30:10 Mute MSAN false positive MSAN currently detects false positives on global/static thread_local variables which are created at library load time. This CL mutes the false positive in order to unblock running blink_web_tests with SwANGLE on MSAN bots. Bug: chromium:1211047 Change-Id: I7cd103d470177d783df7f73ca6ceeedc0774b163 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2920486 Commit-Queue: Alexis Hétu <sugoi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Yuly Novikov de7f559e 2021-05-27T16:33:13 Suppress new KHR-GLES32 test on Pixel 2 Added in crrev.com/c/2921449 Bug: angleproject:6008, chromium:1214047 Change-Id: Icb42e438fc87271d1c5abbe2201d6c2bf597a4e4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2923782 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Charlie Lao d151af7b 2021-05-20T10:52:46 Vulkan: Improve generateMipmapsWithBlit barrier usage ImageHelper::generateMipmapsWithBlit() implements glGenerateMipmap using vkCmdBlitImage. For each level it changes layout to VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL and issue a blit. In order to keep all mipmap levels' layout consistent, it issues a vkCmdPipelineBarrier call for the the very last mipmap level to change it to VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL as well. This creates an unnecessary barrier for the next operation, that now it sees a barrier against transfer stage. This CL changes all levels to VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL so that the whole image will have consistent layout. After glGenerateMipmap call, the next reasonable usage is use it in fragment shader, so the barrier is not wasted. Bug: angleproject:5986 Change-Id: I3690ae8417d97bc504fcf036d016f289e6370526 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2909757 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>