src


Log

Author Commit Date CI Message
Michael Spang 605af42e 2020-03-04T21:52:53 Vulkan: Move ICD overrides to a common place We also need the bundled ICDs and selection logic for certain tests that create a vulkan instance. If we don't, the tests will use default vulkan even if ANGLE is using swiftshader-vulkan. Tests of driver specific handle types (e..g opaque fd) will fail in this case. Bug: angleproject:4092 Change-Id: Iff089c9341b8b533ee8634923d0177c5dbcd5cc8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2088659 Commit-Queue: Michael Spang <spang@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Cody Northrop f623bd2e 2020-04-14T10:35:13 Tests: Add program pipeline object tests This CL adds two program pipeline object (PPO) tests based on code inspection during review. They are both disabled awaiting fixes. * The first (DetachAndModifyShader) tests a bug that shaders aren't detached immediately on call. * The second (DifferentTextureTypes) tests PPOs with mismatched texture types. They should not link if the programs use a texture in non-matching ways. Test: ProgramPipelineTest31.DetachAndModifyShader* Test: ProgramPipelineTest31.DifferentTextureTypes* Bug: b/151462886 Bug: b/151449648 Bug: angleproject:3570 Change-Id: Ief0937397d31c972bf5e3a8d56b02d2dbd5a604b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2146997 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Courtney Goeltzenleuchter a48f3c38 2020-04-29T10:03:14 Implement setBinaryRetrievableHint Remove the UNIMPLEMENTED() macro. Doing nothing is an acceptable implementation at this time. Test: Angry Birds 2 Bug: b/154930384 Change-Id: Ie46c084feb2015aa5fecdbbf2295d46e5087e3dc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2172711 Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Jamie Madill 2071b5c3 2020-05-01T15:41:04 Expose EGL 1.5. This is helpful for figuring out if we can support the DEBUG property when initializing an EGL context. It also will be necessary down the line for Android. Bug: angleproject:4596 Bug: b/154921118 Bug: angleproject:4606 Change-Id: I01c2cbaa21495e3620b7858f2a309c9a884033ec Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2176277 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Tobin Ehlis 040e4f6f 2020-05-01T14:50:59 Vulkan: Minor command buffer refactor Fix a couple minor nits with command buffer handling in ANGLE: 1. Make initialize() common CommandBufferHelper function 2. Reduce some common code when starting renderpass Bug: b/154030403 Change-Id: Ie9cfcd7c053c8605b16bc2dee7f8d69418922492 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2175106 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Tobin Ehlis <tobine@google.com>
Ian Elliott 10ee839c 2020-04-30T16:15:41 Vulkan: Improve viewport and scissor for pre-rotation Handle all 4 rotations and non-full-screen viewports & scissors. Test: Running NBA 2K20 while flipping phone left and right (90 & 270) + watching it in Visual Studio and with Android logcat INFO messages Bug: b/150329969 Bug: angleproject:4431 Change-Id: Icd555dbc2419aac1413452c1b306d6227784dc27 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2174961 Commit-Queue: Ian Elliott <ianelliott@google.com> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Jamie Madill 1c3e322c 2020-05-01T12:22:20 Work around strange git cl format issue. For some reason this line of code confused git cl format in that it would generate different results depending on when it was called: "PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALATTRIBSNVPROC ANGLE_EGL_StreamConsumerGLTextureExternalAttribsNV;" I wasn't able to root cause the bug. Instead I worked around it by changing the signatures for this file. Bug: angleproject:4596 Change-Id: I4f18e03d27d378480b19831de51c4e85d815ca66 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2176157 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Mohan Maiya <m.maiya@samsung.com>
Geoff Lang c9e0edc2 2020-04-30T14:48:40 Handle 3D texture entire-mip initialization for FBO attachments FramebufferAttachmentObject::initializeContents clears the entire mip level for layered textures (not including cube map). This was done by special casing 2D array and 2D multisample array textures but did not work for 3D. Generalize the logic to work for all layered texture types. Handle clearing the entire 3D texture mip in Vulkan. TEST=conformance2/misc/uninitialized-test-2.html BUG=angleproject:4602 Change-Id: I35bb9fc3304f0553e8de68d205b0843845bf7549 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2174264 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Cody Northrop 5b16123d 2020-05-01T08:26:28 Capture/Replay: Refactor default uniform handling for arrays Instead of walking through uniform locations, walk through the uniforms themselves and emit arrayed uniforms, which consume multiple locations. Test: MEC capture of Manhattan on Windows Bug: angleproject:3662 Change-Id: Ifd25528721982847d4f0938f469a914a1cb908c5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2175994 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tobin Ehlis 428e4415 2020-04-27T12:27:00 Vulkan: Migrate trace events and occlusion queries Moved GPU trace event and occlusion query commands that were on the primary command buffer to the SecondaryCommandBuffer (SCB). Putting these commands on outside render pass SCB and flushing those commands to primary on-demand as needed to maintain ordering of commands. For resetQueryPool command used by occlusion query, allow the SCB to queue up that command for inside RenderPass SCB. This avoids ending a renderPass prematurely and allows all outstanding reset commands to be executed before the beginRenderPass command since the resets must occur outside of a renderPass. This is groundwork to simplify the hand-off of SCBs from the main thread to a worker thread. Long-term we'd like a single SCB that can handle both inside and outside renderPass commands at the same time to pass to the worker thread for processing into a primary CB. Bug: b/154030403 Bug: angleproject:4603 Change-Id: Ic1023ae27a9b14435743549ea9933edf1c4b318b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2168114 Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Tobin Ehlis <tobine@google.com>
Jamie Madill 942796f6 2020-04-30T16:55:28 Capture/Replay: Use BindAttribLocation to force MEC compat. In some cases we'd end up with attributes that are optimized out by the GL driver. BindAttribLocation forces the programs to use the same attribute indexing numbers so that the command stream works mostly the same even if some attributes aren't active in the shader. Bug: angleproject:4598 Change-Id: I2d02dd38d29a1489706ae70bcc0b262b1c076942 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2174266 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Jamie Madill e09f7a14 2020-04-30T17:43:12 Validation: Fix some function types. These were slightly mismatching the header types. They seemed to link fine despite producing some warnings in a tool. Bug: angleproject:4598 Change-Id: I19cfe4d87eca409c82a7c8cf25fff6f8a4c83ca9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2175057 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Jamie Madill 57d95828 2020-04-30T17:35:50 Revert "Add type for attribute locations." This reverts commit 9349c14344b2d1fd6bc357063b602bc2626c140f and commit d43b057435e6c9e3194dd20627681ffca0c0808e. It's no longer needed after we bind attribute locations before link. Original CL message: This will allow the capture/replay tool to easily intercept and label attribute locations for remapping. There's some inconsistency in implementation in the GL desktop front- end. This is a quick fix and the full implementation is left for when we implement the full desktop GL API set. Bug: angleproject:4598 Change-Id: Ic510159d4d1982eff41560503cabf983a1be0381 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2174076 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Charlie Lao df31624e 2020-04-30T13:28:24 Vulkan: Reduce the onBufferRead/onBufferWrite API verbosity a bit This adds helper functions to handle common use case for onBufferRead and onBufferWrite to reduce the API verbosity a little bit. Also fix the transform feedback bug that we are passing in wrong access/stage flags when it is emulated by vertex shader. Bug: b/155122200 Change-Id: Id2549ca00cad184a90c6230dc3665aaff44dda08 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2174265 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Tobin Ehlis 67da0051 2020-04-30T17:53:58 Vulkan: Fix dbg util label bug Courtney noted this bug from a review. Should begin label on pushGroup instead of insert label. Bug: b/154030403 Change-Id: I5f4da5762e1ef03fe27b414740e34d2064af86b5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2171951 Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Jiajia Qin 85ae836f 2020-03-30T16:03:47 GL: Implement EGL_EXT_image_dma_buf_import Add support for the EGL_EXT_image_dma_buf_import on EGL implementations that support it natively. This extensin is used on ozone to import native compositing buffers. This patch also adds new tokens in EGL_EXT_image_dma_buf_import_modifiers which are used in eglCreateImageKHR. BUG=angleproject:4529 Change-Id: I49bff831b591fb19fcdcec1145c7a61f5d8020c4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2128190 Commit-Queue: Jiajia Qin <jiajia.qin@intel.com> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Qin Jiajia a56537a3 2020-04-29T11:14:03 Enable GL_BGRA_EXT for es backend It's required on Chrome OS. Based on spec EXT_texture_format_BGRA8888, this format is renderable. Bug: angleproject:4594 Change-Id: Ibde0f0de18f4b8079a23f4b13123c6b5c8794a89 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2172638 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jiajia Qin <jiajia.qin@intel.com>
Jamie Madill d43b0574 2020-04-30T14:17:21 Capture/Replay: Fix tool after parameter change. 'index' became 'indexPacked' for attribute locations. It also changed the type. Bug: angleproject:4598 Change-Id: I6393e09dd1d5c1a7c5d0e2ca8a67e4f7bbb05411 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2174263 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 9349c143 2020-04-29T16:36:17 Add type for attribute locations. This will allow the capture/replay tool to easily intercept and label attribute locations for remapping. There's some inconsistency in implementation in the GL desktop front- end. This is a quick fix and the full implementation is left for when we implement the full desktop GL API set. Bug: angleproject:4598 Change-Id: Ibf11bcb8669d27265ea376494a2e3124825cf3be Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2171933 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Cody Northrop 9cac3c58 2020-04-30T09:52:13 Capture/Replay: Disable default uniform updates for arrays We aren't properly handling them, were already firing UNIMPLEMENTED, but can't continue with the loop. Will follow up with real support. Test: MEC capture of Manhattan on Windows Bug: angleproject:3662 Change-Id: I7b77350b39971fda702eac8b19c6f29f36f78146 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2171759 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Charlie Lao f07d0072 2020-04-27T16:51:05 Vulkan: use fine grain stage for buffer barriers We are using VK_PIPELINE_STAGE_ALL_COMMANDS_BIT for mGlobalMemoryBarrierStages, which is used for both src and dst. This will cause a full pipeline stall whenever a buffer object introduces a barrier. This CL will let the caller pass in the specific stage it will be used for, allowing us to track write and read stage dependencies separately and request the corresponding barriers. Bug: b/155122200 Change-Id: I8b8bd291a03b77d07cfbcbe7c3cda2d3771588b9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2169014 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Alexis Hetu 95741743 2020-04-27T18:09:42 Validation fix for draw with primcount <= 0 A buffer size validation check was returning an invalid operation error based on buffer size, even when primcount is <= 0 (so the buffer isn't used). Fixes the following WebGL 1.0.4 test with SwANGLE: conformance/extensions/angle-instanced-arrays-out-of-bounds.html Bug: b/154628007 Change-Id: Ibfe4eb57f17cd07100fb8dfbe8069e9ec7515160 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2168546 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Alexis Hétu <sugoi@chromium.org>
Jamie Madill 5540a307 2020-04-29T11:57:24 GL loaders: Add 'ANGLE' symbol prefix. This should prevent debuggers like RenderDoc from getting confused about symbol names. It's also generally good practice to avoid overloading names. Change-Id: Ie9fd3f77f45479bdf6925dae3e03fb4ac85bdb8a Bug: angleproject:4596 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2171684 Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Ancheng Qiao 78f2e4b8 2020-03-24T16:21:40 Add gles1 covegl test compile Covegl test is hard to suit gtest, so just compile it without gtest (angle_gles1_covegl_no_gtest), we can get the test result by exit code. Bug: angleproject:2303 Change-Id: I67a930c91f23c02e72022329c712a0749e4a903c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2126587 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Brandon Schade fa03eb9d 2020-02-05T15:25:52 Vulkan: Use DynamicBuffer for BufferVk When there is glBufferData API call, if the current VkBuffer is in use, we copy to a staging buffer to be gpu copied later. Instead of doing this second copy, write directly to a new buffer that will be used for subsequent gpu operations. BufferVk now has a DynamicBuffer to handle the logic of acquiring a new/free buffer to be used. Bug: angleproject:4380 Change-Id: I207f334013ae944090eb48c26c692a09e8815f74 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2040513 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Jamie Madill 92b3a720 2020-04-27T15:52:56 Capture/Replay: Generate code integration. This sources the trace list from a json file and uses that to make the "glue" that works with each individual trace test. Bug: angleproject:4590 Change-Id: I40808cbd0e00f9ed01f93c4cfbd678401db3fec0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2168539 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Tobin Ehlis 45bb2b9c 2020-04-22T17:09:41 Vulkan: Add debug label commands to SecondaryCommandBuffer Add begin/end/insert DebugUtilsLabel commands to SecondaryCommandBuffer. Switch use of these commands to the outside renderpass command buffer instead of directly in the primary command buffer. This change should maintain the exact same sequence of commands but avoids some direct use of the primary command buffer. This is desirable for the threaded refactor where a worker thread will process the SecondaryCommandBuffer into a primary and the main thread will no longer use the primary command buffer directly. Note that because the debug utils label has an arbitrarily long string that we need to adjust the command allocation to allow for the string size exceeding the default allocation size. In this case we just make a single larger allocation to accommodate the command with the large string. Bug: b/154030403 Change-Id: Iab7832ffc3d38ce168da2d624bd5b5d5b33ec11b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2161955 Commit-Queue: Tobin Ehlis <tobine@google.com> Reviewed-by: Charlie Lao <cclao@google.com>
Xinghua Cao d93b9559 2020-04-16T16:16:27 Translate uniform block with large matrix array to StructuredBuffer There is a slow compiling issue if translate a uniform block with a large matrix array member to cbuffer, so translate the uniform block to StructuredBuffer. But pack_matrix pragma directive is invalid for matrix element of StructuredBuffer, so pack the matrix into a structure firstly, and then specifies packing alignment for the matrix in this structure, last the structure is used as StructuredBuffer element. Bug: angleproject:4206 Change-Id: I5a2a512e57b37dcdb88c3060d0d078b46f72eb5e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2154525 Commit-Queue: Xinghua Cao <xinghua.cao@intel.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org>
Ian Elliott 718ae508 2020-04-28T08:42:07 Vulkan: Always query EGL_WIDTH and EGL_HEIGHT This fixes the failures of the dEQP EGL resize tests on Android. Those tests don't actually resize the window (which would allow the tests to pass), but do change internal Android Surface values that vkGetPhysicalDeviceSurfaceCapabilitiesKHR queries. Therefore, by freshly querying these values the test passes. Bug: b/153329980 Change-Id: Ie966f221bfaa14988c1503c7f5503f0b21476bcb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2165639 Reviewed-by: Ian Elliott <ianelliott@google.com> Commit-Queue: Ian Elliott <ianelliott@google.com>
Jamie Madill 448b14bb 2020-04-27T13:46:08 Vulkan: Apply binding size in updateBuffersDescriptorSet. Previously we would bind the full Vulkan buffer size in cases of unsized arrays in storage buffers. This then would lead to problems when binding a dynamic buffer that used sub-allocation or larger internal sizes. Instead use the GL binding size or GL buffer size as the size limits. Bug: angleproject:4380 Change-Id: Ia579bfeae3b8d068813336cbd5e1babee9f4f345 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2168020 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
shrekshao d9268889 2020-04-22T20:24:16 Take into account baseVertex for drawElementsImpl D3D11 Also add test for GL_DYNAMIC_DRAW and GL_STREAM_DRAW with vertex color data updating before each draw call to make sure index range is retrieved correctly. Bug: angleproject:3402, angleproject:3911 Change-Id: I5f209292b6e316e4b50505a98b361eb8761a7d6b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2162132 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shrek Shao <shrekshao@google.com> Commit-Queue: Shrek Shao <shrekshao@google.com>
Jamie Madill 1398080c 2020-04-27T16:16:15 Capture/Replay: Simplify .gni integration. Moves a lot of the code out of the gni file into tests/BUILD.gn. In preparation for auto-generating the gni file as a simple array of trace test names. Bug: angleproject:4590 Change-Id: Iaa2b7872dc6e705d59108fa7532594bdc65d365a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2168359 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Xiaoxuan Liu 4262ea04 2020-01-31T22:59:13 Vulkan: Add gles1 conformance support. For Khnoros CTS1 support, ANGLE needs to add conformant and rendererType for OpenGL ES1 version. Bug: angleproject:4457 Change-Id: I58ac4672352d3d42e4b8403b80f86154b6a76edc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2160515 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill fbc2f063 2020-04-24T13:00:11 Vulkan: Refactor AttachmentOpsArray. Will allow for more flexibly setting ops when we defer clears. Bug: angleproject:4517 Change-Id: I7d9116bc92e90eb41a1030fea242eadf1cc74562 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2165629 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Alexey Knyazev 6193fd69 2020-03-07T21:19:05 OpenGL: Implement OES_draw_buffers_indexed OpenGL state sync issues as few GL commands as possible to update the blend state regardless of an application input. Enhanced ClearTestES3.MaskedIndexedClearMultipleAttachments regression test. Disabled OES_draw_buffers_indexed on Windows/AMD/OpenGL. Bug: angleproject:4394 Change-Id: I244ac2975678bc559634152cf4eb997d9dbe83d0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2145874 Commit-Queue: Kenneth Russell <kbr@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Alexis Hetu 6e7d7296 2020-04-24T15:40:57 Fix clearing compressed textures with Vulkan backend When making sure a texture's data is initialized in ANGLE, it is illegal to attempt to clear it when using the Vulkan backend. The Vulkan spec, regarding vkCmdClearColorImage, mentions that: "image must not have a compressed or depth/stencil format" The proper way of initializing the memory of a compressed image in Vulkan is to do a buffer to image copy instead. This was added to ImageHelper::stageRobustResourceClear() so that it may now handle compressed textures properly. Bug: angleproject:4092 Change-Id: I073ed0603d9e92e787b9be8992751dbc0c8978db Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2165636 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Alexis Hétu <sugoi@chromium.org>
Alexey Knyazev d6c7bac9 2020-04-18T01:41:14 Add BlendStateExt helper structure It provides compact storage and comparison operations for per-drawbuffer blend states. Added BitSetT::Zero() static constexpr. Bug: angleproject:4394 Change-Id: I66d6275facb7b28022fc24ff9cc0d8c3c976c99d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2154669 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Arthur Eubanks 226bba3c 2020-04-24T09:57:10 Add -Wno-pointer-to-int-cast This is the last remaining instance of the warning across Chromium. It's fixed upstream but I can't seem to figure out how to successfully roll deqp. So suppressing it here for now. This can be removed once the deqp in Angle has https://github.com/KhronosGroup/VK-GL-CTS/pull/199. Change-Id: Ie954bb2a3d86ea0de644e2a78051531b396e88a8 Bug: chromium:1054220 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2165365 Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Jonah Ryan-Davis 3cb9c4be 2020-03-13T13:56:47 Statically link vulkan-loader on Mac Disable angle_shared_libvulkan on Mac since we are the only client. Re-add codepaths to support this. Bug: angleproject:4477 Change-Id: Ie128c83adaae741636541bbfd6105d160d874a8d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2102954 Commit-Queue: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Tobin Ehlis <tobine@google.com>
Jamie Madill 0f2747e9 2020-04-24T13:10:14 Vulkan: Clean up ClipRectToScissor. Refactoring change only. Split off to make the main CL for deferring clears simpler. Bug: angleproject:4517 Change-Id: I5728a7dcf09de8952d5810061d1d8b135b625339 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2165630 Commit-Queue: Jamie Madill <jmadill@chromium.org> Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Tim Van Patten <timvp@google.com>
Jamie Madill 35e389cc 2020-04-24T13:33:36 Vulkan: Remove unicode character from error string. Will fix presubmit checks on Windows. Bug: angleproject:4586 Change-Id: I36cec3e850c88a015f33d8a0bb7cc8f8c26402d0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2165628 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tobin Ehlis 21c5af31 2020-04-20T10:29:13 Vulkan:Migrate events and queries to secondary Cmd Buffer Replace flushAndGetPrimaryCommandBuffer() function with endRenderPassAndGetCommandBuffer() for events and queries. The end result should be the same, but this allows a number of places that were putting commands directly into the primary to put the commands into ANGLE's custom SecondaryCommandBuffer (SCB) instead. This also fixes a couple of minor bugs related to command buffer ordering. flushAndBeginRenderPass() now flushes any outside RenderPass (RP) commands first. Also, when insideRP commands are flushed to the primary, set "mHasPrimaryCommands = true;" Bug: b/153666475 Change-Id: I68413f25d27175afed0a20bc49f22f4c8d01e4fb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2156932 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Tobin Ehlis <tobine@google.com>
Brandon Schade 5578fc84 2020-04-22T09:34:30 Vulkan: Disable EXT_texture_sRGB_R8 Due to a dEQP bug, EXT_texture_sRGB_R8 cannot be exposed before EXT_texture_sRGB_decode is available. This change disables EXT_texture_sRGB_R8 on the vulkan backend. Bug: angleproject:3609 Test: dEQP-GLES31.functional.srgb_texture_decode.skip_decode.sr8.* Change-Id: I261c80986484e489f6903eb54ac6865433050bfa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2161985 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Tobin Ehlis 23621826 2020-04-23T10:09:03 Vulkan: Manual Validation Layer Roll Latest Vulkan validation layer roll is hitting new error so added exception and rolling manually. Bug: angleproject:4583 Change-Id: Id9f8be7d2e20156ad8397ee0ba7ea5fcc12f6d28 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2163133 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Tobin Ehlis <tobine@google.com>
Jeff Vigil e20f36f4 2020-04-21T15:45:44 EGL: Implement EGL_ANDROID_native_fence_sync on vulkan Check the following - 1. Vulkan ICD supports VK_KHR_external_fence_fd 2. ExternalFenceProperties and ExternalSemaphoreProperties support Android FD. eglCreateSync - if FD was provided import to VkFence, else create VkFence with new FD and then flush and submit VkFence on next vkQueueSubmit. eglGetSyncAttrib - for status call vkGetFenceStatus. eglDupNativeFenceFdANDROID - return FD from vkGetFenceFD call. eglClientWaitSync - call vkWaitForFences. eglWaitSync - dup FD, create VkSemaphore and import FD, then flush() and add VkSemaphore to next vkQueueSubmit as a waiting semaphore. Extended end2end test suite with nativefence test cases. Bug: angleproject:2517 Test: angle_end2end_tests --gtest_filter=EGLSyncTest.AndroidNativeFence_* Change-Id: I8f6a6f4c3d71d83007f662b78377aa015a740035 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2026177 Commit-Queue: Mohan Maiya <m.maiya@samsung.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 963759a3 2020-04-21T15:14:56 Vulkan: Mask out implementation dirty bit in sync. This would needlessly create many redundant sampler objects. Bug: angleproject:4517 Change-Id: Ib8ef28b9bcbbeec804c493fbe677cbee7d9a750d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2159296 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Tim Van Patten <timvp@google.com>
Jamie Madill 492ec932 2020-04-21T13:38:41 Vulkan: Track allocated sampler counts. Helps to diagnose perf bugs where resources are over-allocated. Also can be useful to evaluate caching strategies. Bug: angleproject:4517 Change-Id: I48df5a09fbc394fa0b1712fa8cf28a179665e6e7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2159293 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tobin Ehlis <tobine@google.com>
Jamie Madill 6fc0066a 2020-04-21T17:40:54 Vulkan: Add a sampler cache. This uses a packed sampler description to re-use samplers for multliple VkImages. The samplers will persist for the lifetime of RendererVk. In the future we could look at doing cache eviction for large object counts. Reduces the active VkSampler cache in Manhattan from over 1200 to 9. Also should reduce the number of VkSamplers used with Chrome. Bug: angleproject:4491 Change-Id: Idca00e4ed8cb660a0865281544aaa57cf884bbdb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2160771 Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Tobin Ehlis <tobine@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Tim Van Patten 4671bcf0 2020-04-21T18:12:46 Fix program interface queries for arrays and built-ins Program interface queries for arrays should return an invalid index value for indices with leading zeroes. Program interface queries should return invalid locations for built-in variables. Bug: angleproject:3596 Test: KHR-GLES31.core.program_interface_query.* Change-Id: I484ab6e21dbe0c8a984e135ac947c4583a3fbfa2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2159646 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Tobin Ehlis <tobine@google.com> Commit-Queue: Tim Van Patten <timvp@google.com>
Tim Van Patten 913f4f42 2020-04-15T00:54:37 Vulkan: Support VS, FS, and CS in the same PPO This CL adds support for a Program Pipeline Object to have a VS, FS, and CS attached to the same PPO and then using that PPO for both draw and dispatch calls. Bug: angleproject:3570 Test: KHR-GLES31.core.compute_shader.sso* Change-Id: I262cdbdfd442f6db5ba2b45d1308003102b237cb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2150078 Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Commit-Queue: Tim Van Patten <timvp@google.com>
Jeff Vigil 78dcba58 2020-04-21T15:20:13 Refactor SyncHelper with vk::Resource Set SyncVk's SyncHelper to inherit from vk::Resource. Bug: angleproject:2517 Change-Id: I499414d97e611d029abc12622f19436cbdb3e1f5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2160126 Commit-Queue: Mohan Maiya <m.maiya@samsung.com> Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 1fc354fa 2020-04-22T11:49:00 Re-land: "Vulkan: Forward RenderBuffer/Surface dirty messages." Re-land fixes ASSERT on Android GLES. Previously we were only forwarding Texture staging changes to the Framebuffer for re-sync. We could miss out on clears that were staged in Surfaces and Renderbuffer attachments. Complete the chain by making the SurfaceVk and RenderbufferVk forward notifications from the VkImage. Bug: angleproject:4517 Change-Id: I91d31213b115a58546b574caa574eebbb098266c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2159294 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Tim Van Patten 0e1798d6 2020-04-20T11:25:32 Vulkan: PPO: Allocate uniform descriptor set if list is empty When a Program is used to draw, the buffers to hold uniforms are allocated as part of updateUniforms(), and then if a buffer is allocated, a corresponding descriptor set is allocated for each shader stage with uniforms. However, if that Program is later bound to a PPO, the PPO's descriptor set list is cleared as part of creating the pipeline layout. This means the uniform descriptor sets need to be re-allocated but using the previously allocated buffers so the 'anyNewBufferAllocated' flag isn't enough - we also need to check if the PPO's list of descriptor sets is empty. Bug: angleproject:3570 Test: KHR-GLES31.core.sepshaderobjs.StateInteraction Change-Id: Id8df587b4f5552012590a29d120b6899bbdf677b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2156936 Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Tim Van Patten <timvp@google.com>
Le Hoang Quyen dadd1986 2020-04-21T01:50:00 Implement GL_APPLE_clip_distance - Built-in variable gl_ClipDistance has been added to compiler. - Desktop GL: gl_ClipDistance is supported since GL 3.0. Enable/Disable each gl_ClipDistances[i] works out of the box via glEnable(). - Vulkan/Metal: Use uniform variable to control writing to each gl_ClipDistance. One bit flag controls one element in the gl_ClipDistance array. The writing to the disabled element in vertex shader will be ignored, and turned into zero assignment instead. - Direct3D/Mobile GL: Not implemented yet. - Added ClipDistanceTest to gl_tests and compiler unittests. - GL_APPLE_clip_distance is a subset of GL_EXT_clip_cull_distance, so GL_EXT_clip_cull_distance could be implemented in future if needed. Bug: angleproject:4452 Change-Id: I571ac8b56826989808a680226a04bec4cf59988e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2084324 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Charlie Lao 927ea225 2020-04-21T19:42:18 Vulkan: add vulkan error code in the error message If driver returns error code that we do not know, we simply output "unknown vulkan error code". Instead we should at least include the actual errorCode here so that people can search up to see what it is. Also remove the double period at the end of string and added a few other vulkan error strings. Bug: b/154665382 Change-Id: Ic4138e90534b4e7d97520fe10ac1477d2930d9c8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2160130 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Courtney Goeltzenleuchter b5992a55 2020-04-21T07:58:47 Add capture support for FenceSync This allows us to capture Angry Birds 2 traces. Bug: b/153652100 Change-Id: I99a47f9e41a84218b3bb3d9740df4bb7fc2a01fa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2144763 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
Mohan Maiya b7d6949b 2020-04-17T13:36:14 Vulkan: Enable persistently mapped buffer objects The VMA allocator has a handy feature where during memory allocation we can request persistently mapped memory. This saves IOCTL overhead for apps that update buffers frequently. Bug: angleproject:2162 Change-Id: I870d880033beec343efae6de06f1c5935de4c2c1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2155131 Reviewed-by: Tobin Ehlis <tobine@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Tobin Ehlis <tobine@google.com>
Tobin Ehlis fe60973b 2020-04-21T11:21:03 Vulkan: Allow commands to completely fill allocation If the remaining allocation size for commands in the SecondaryCommandBuffer class is equal to the command allocation size and the follow-on header, then we can fill the allocation. Previously we were conservative and if the size needed exactly equals the size remaining, we would allocate a new block. Bug: b/154030403 Change-Id: Ie31f0f5d33782d12adbaea9e3b02598a004d7643 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2158817 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Tobin Ehlis <tobine@google.com>
Geoff Lang 9dc322d7 2020-04-21T11:41:43 GL: Make sure primitive restart emulation is disabled below GL 3.1 If the GL driver version is below 3.1, we cannot set the primitive restart fixed index (ES3 wont be supported anyway). Make sure the feature is disabled. Speculative fix for crbug.com/1073020 BUG=chromium:1073020 BUG=angleproject:3997 Change-Id: I67756b377aa951da2e70c26f7db978ede9010586 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2159289 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Charlie Lao 03c18fbd 2020-04-13T16:01:01 Vulkan: Skip load if depth/stencil value are undefined EGL1.5 spec says depth/stencil data are undefined after swap. This CL will track the depth/stencil data and mark it as undefined and skip the load if it is undefined. Bug: b/153885625 Change-Id: Ifb3d88d442da547fa78c1eae091cbae08a20d0ab Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2148179 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Tobin Ehlis 764d572b 2020-04-21T11:15:41 Vulkan: Refactor SecondaryCommandBuffers class A strictly cosmetic change to move code into alphabetical order. In working with SecondaryCommandBuffer commands in separate CLs, it can be difficult/annoying to track which commands are already in place as some of them are out-of-order. This change puts the command enums, functions, and processing in alphabetical order to simplify searching and adding new commands. Bug: b/154030403 Change-Id: I6dba4cf48d6f27c056585ac633c694e083b1a263 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2158816 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Tobin Ehlis <tobine@google.com>
Geoff Lang e5491253 2020-04-17T12:37:00 Don't redefine VMA_IMPLEMENTATION in build files and source VMA_IMPLEMENTATION is defined in the build files, it doesn't need to be redefined in vk_mem_alloc_wrapper.cpp. BUG=angleproject:2162 Change-Id: Ie4eceedd2dd3051f8431c7c8c86403250e93f98b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2154538 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 623d0443 2020-04-21T15:15:03 Revert "Vulkan: Forward RenderBuffer/Surface dirty messages." This reverts commit 3fb33ade6ec8f286797bff5645304df580b1a963. Reason for revert: Causing WebGL test failures on GLES/ANGLE/Android. Bug: chromium:1072739 Original change's description: > Vulkan: Forward RenderBuffer/Surface dirty messages. > > Previously we were only forwarding Texture staging changes to the > Framebuffer for re-sync. We could miss out on clears that were staged > in Surfaces and Renderbuffer attachments. Complete the chain by making > the SurfaceVk and RenderbufferVk forward notifications from the > VkImage. > > Bug: angleproject:4517 > Change-Id: I15f36c225517e915f656d0c2464a99631ef9f945 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2150699 > Reviewed-by: Cody Northrop <cnorthrop@google.com> > Commit-Queue: Jamie Madill <jmadill@chromium.org> TBR=cnorthrop@google.com,timvp@google.com,jmadill@chromium.org # Not skipping CQ checks because original CL landed > 1 day ago. Bug: angleproject:4517 Change-Id: I4fd4d79dc11da0ba86065d3a80975de4c791a2a0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2159288 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Tobin Ehlis 293c36c0 2020-04-20T17:35:19 Vulkan: Manual validation roll Manually roll validation layers to latest and ignore two more VUIDs that are being flagged with latest layers. Bug: angleproject:4578 Bug: angleproject:4579 Bug: angleproject:4580 Change-Id: I4fc46d9df3fa3be4be1f8b773eb2d63e6f4bbd92 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2158265 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tobin Ehlis <tobine@google.com> Commit-Queue: Tobin Ehlis <tobine@google.com>
Corentin Wallez 902b5587 2020-04-19T13:54:48 CGL/EAGL: Fix default FBO size on Retina displays This was found while trying to fix https://github.com/glfw/glfw/issues/1169 VulkanSurfaceMtl and metal/SurfaceMtl already handle contentsScale correctly. Change-Id: I234d7b0901dd7c075cf1e9d58466f52140ab1e2b Bug: None Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2154670 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Cody Northrop cff64a83 2020-04-16T17:32:40 Capture/Replay: More mid-execution capture support Test: Temple Run MEC capture and replay Bug: b/152512564 Bug: angleproject:3662 Change-Id: I31be6e7ad9d290c2077f2f4d975c2d66779eb558 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2155490 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Cody Northrop edc7614c 2020-04-17T17:20:08 Capture/Replay: Handle default uniforms during MEC During mid-execution capture, when processing uniforms for a program, capture their values and repopulate during replay. Test: Temple Run MEC capture and replay Bug: b/152512564 Bug: angleproject:3662 Change-Id: If84711ead144b7c88710e6b12d0968e80e263c69 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2155489 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Cody Northrop 8f48ba9f 2020-04-16T17:30:45 Capture/Replay: Use TexStorage for immutable images When we detect a texture is immutable, create it with TexStorage and populate with TexSubImage. Test: Temple Run MEC capture and replay Bug: b/152512564 Bug: angleproject:3662 Change-Id: I1948a0376d2634957329d1da35d60ded3608479a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2155488 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Tobin Ehlis 139f8149 2020-04-20T14:04:25 Vulkan: Suppress VUID-vkCmdClearColorImage-image-01993 The latest VVL roll is generating many new errors for VUID-vkCmdClearColorImage-image-01993. This CL will suppress the error messages to prevent the test failures until they can be fixed. Bug: angleproject:4577 Change-Id: I3ea4986c1f43c7d7921761e537d6d51cac3327e5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2157853 Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Tobin Ehlis <tobine@google.com>
Charlie Lao 54a3d7cb 2020-04-20T12:02:02 Vulkan: Use DontCare for the presentable surface's last renderpass depth/stencil storeOp The EGL spec says depth/stencil value are undefined after swap. We dont need to store depth/stencil value if this is the very last renderpass of a presentable surface and the endRenderpass call is from swap call. Bug: b/153885625 Change-Id: Ie853d2686c8eb15a4fa9dbdd80eb66e9fc037d24 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2157886 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Charlie Lao f13689b6 2020-04-17T14:43:28 Vulkan: Use renderpass' finalLayout to transit to ImageLayout::Present This detects the last renderpass is actually rendering to the image we are going to present and this is the very last renderpass to that image. We use finalLayout of the renderpass to do layout transition to VK_IMAGE_LAYOUT_PRESENT_SRC_KHR instead of a standalone barrier call. Bug: b/153885625 Change-Id: Ifc17c77a1ba12f22c9d6038775f3e254c35655ca Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2155250 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tim Van Patten ebc4846d 2020-04-17T10:42:02 Vulkan: Suppress VUID-vkCmdCopyImageToBuffer-srcImage-01998 The latest VVL roll is generating many new errors for VUID-vkCmdCopyImageToBuffer-srcImage-01998. This CL will suppress the error messages to prevent the test failures until they can be fixed. Bug: angleproject:4572 Test: BindUniformLocationES31Test.ArrayOfArrays/ES3_1_Vulkan_SwiftShader Change-Id: I6b36ab64cea8490e577f9077bb44fc7e5023fbda Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2154833 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Geoff Lang 8cae5e19 2020-04-08T12:28:03 GL: Re-enable emulatePrimitiveRestartFixedIndex This workaround is needed when the GL driver is less than 4.3 (all MacOS). The driver will generate many errors during execution without this enabled which blocks GL driver error checking. Add additional workarounds for Intel drivers that need a sufficiently large primitive restart index when doing DrawArrays calls. BUG=angleproject:3997 Change-Id: Idd293ff1dbc0a3609b11ea1d6b30da0a99e8f5c5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2141714 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Ian Elliott a5e46552 2020-04-20T09:33:21 Vulkan: glDrawElements used old offset into index buffer When the vertex array binding is changed, the value of ContextVk::mLastIndexBufferOffset must be reset so that an old/cached offset (from a previous draw call) is not used for a new draw call. This addresses rendering artifacts and Vulkan validation errors seen with running NBA 2K20 on Android (or the ANGLE trace on Windows). Bug: b/153682968 Bug: angleproject:4575 Bug: angleproject:4576 Change-Id: I69089964b8d278c7fc8610ab003548864a215dab Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2152850 Commit-Queue: Ian Elliott <ianelliott@google.com> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Alexey Knyazev de2935dd 2020-04-14T21:18:43 Add PackedEnums for blend state parameters Bug: angleproject:4394, angleproject:2169 Change-Id: I6c218af3871a1215c2b103847250bbc782159cb3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2149645 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 4d10efbc 2020-04-15T15:14:11 Vulkan: Store ImageType in ImageHelper. We ended up needing this to recover the image type in the RenderTarget. Otherwise we don't have direct access to this information in the FramebufferVk sync state code. Bug: angleproject:4517 Change-Id: I387947e0b7394e1f63f313dd4792bb042b8da73a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2151170 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Tim Van Patten 33b58ebb 2019-11-25T16:31:43 Vulkan: Give unsized arrays at least 1 entry The function ShaderVariable::getNestedArraySize needs to return at least 1 entry for unsized arrays to ensure the shader buffer sizes are reported correctly. This also allows ANGLE to treat unsized arrays of structs and basic types the same way, allowing for the special treatment of unsized arrays in TraverseStructArrayVariable() to be removed. Bug: angleproject:3596 Test: dEQP-GLES31.functional.program_interface_query.shader_storage_block.buffer_data_size.* Change-Id: I3b2a3a68c25e0913b79e989d7c719b34ce9b75fd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1934952 Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Jamie Madill 2d5da029 2020-04-15T17:15:37 Minor angle_end2end_tests cleanups. Minor refactoring and call consolidation. Was done while working on deferring clears in the Vulkan back-end. Bug: angleproject:4517 Change-Id: I60d80d4f9646c990c4cb8bbc349fc0051389bf02 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2151171 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Le Hoang Quyen dc3477f3 2020-03-14T17:22:41 Separate GLES1's state enum switch code from GLES2+ Some enum values such as GLES1's GL_CLIP_PLANE0 and GLES2+'s GL_CLIP_DISTANCE0_EXT have the same value. Thus, the enum switch code has to be separated for GLES1 & GLES2+ Bug: angleproject:4481 Change-Id: I2fcb95f3f75f1fe683a072bee02e797a95686480 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2145284 Commit-Queue: Le Hoang Quyen <le.hoang.q@gmail.com> Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Charlie Lao 8c67c079 2020-04-16T14:42:15 Vulkan: store ImageLayout in PackedAttachmentOpsDesc The layout in the PackedAttachmentOpsDesc only have 5 bits, not enough for raw VKImageLayout enums. This change will store vk::ImageLayout which are ANGLE defined and packed for 5 bits and able to handle the extension bits of VKImageLayout. Bug: b/153885625 Change-Id: Ida268a974094188d8aeee39c61019eef30a60507 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2153845 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tim Van Patten f93cc8bd 2020-04-16T10:29:16 Vulkan: Skip failing BlendIntegerTest tests Several BlendIntegerTest tests are failing due to an update to the Vulkan Validation Layers that are now checking if formats support VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT and generating an error if not while pipeline.pColorBlendState.pAttachments[0].blendEnable is VK_TRUE. Bug: angleproject:4571 Test: BlendIntegerTest* Change-Id: Ibbfe415af3d6d6a879a502adb6541a5bfe8cd13a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2152947 Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Commit-Queue: Tim Van Patten <timvp@google.com>
Jamie Madill aefa3aa9 2020-04-15T14:27:12 Vulkan: Make staged clears store aspect mask. This will allow us to store depth- or stencil-only clear when we defer clears in FramebufferVk syncing. Currently a refactoring change only. Bug: angleproject:4517 Change-Id: Ifc9bf8f9ebab993509155cf6cf66db5b11f35163 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2151169 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 3fb33ade 2020-04-09T15:27:12 Vulkan: Forward RenderBuffer/Surface dirty messages. Previously we were only forwarding Texture staging changes to the Framebuffer for re-sync. We could miss out on clears that were staged in Surfaces and Renderbuffer attachments. Complete the chain by making the SurfaceVk and RenderbufferVk forward notifications from the VkImage. Bug: angleproject:4517 Change-Id: I15f36c225517e915f656d0c2464a99631ef9f945 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2150699 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 1033d55d 2020-04-07T14:01:24 Pass binding enum to Framebuffer::syncState. Will allow us to determine if we're clearing the read or draw FBO. Then we can stash clears for the draw FBO only and issue them immediately for the read FBO in the Vulkan back-end. Bug: angleproject:4517 Change-Id: Ifc043317d6156a75749b13f9d2c44a17e14ee378 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2139997 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jian Li 943c3bc1 2020-04-16T11:25:02 Vulkan: Fix transform feedback on AMD platform Make sure pCounterBufferOffsets is never a null pointer when counterBufferCount is greater than zero. Bug: angleproject:3206 Change-Id: If161473239b53d2a65b1cccaaf1426a4fefd243a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2152030 Commit-Queue: Mohan Maiya <m.maiya@samsung.com> Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Rafael Cintron 49ad8eaa 2020-04-13T17:55:25 Enable allowClearForRobustResourceInit for Intel drivers NVidia drivers have no trouble clearing textures without showing corruption. AMD ones do. Intel drivers that have trouble have been relegated to the DX9 runtime by Chromium. Bug: angleproject:4460 Change-Id: I9ffbfa041e0f7ef8e05edcc14274bf9530eafae3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2147821 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Rafael Cintron <rafael.cintron@microsoft.com>
Ancheng Qiao 1478ec3c 2020-03-18T09:42:37 Add gles1 primtest tests Bug: angleproject:2303 Change-Id: Idece2eb2fb291799c9aae811ce63dafdd9333887 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2143029 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jian Li d5ba916d 2020-04-07T17:59:08 Vulkan: Change to record transform feedback related APIs per spec Fix not to record vkCmdBindPipeline and vkCmdBindTransformFeedbackBuffers during transform feedback is active. Initiated by Hyunchang Kim hckim.kim@samsung.com https://chromium-review.googlesource.com/c/angle/angle/+/1971953 Pause Transform feedback on binding graphics pipeline and end of render pass. Set a new dirty bit to indicate transform feedback may need resume when invalidate graphics pipeline. Test: dEQP-GLES3.functional.transform_feedback.* Test: angle_end2end_tests --gtest_filter=TransformFeedbackTest* Bug: angleproject:3206 Change-Id: I6c70ef461a31dcd618058b167835ac278a21d04a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2139474 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Hyunchang Kim 6e0d718a 2020-03-31T18:41:57 Vulkan: Implement device memory sub-allocation Use AMD Vulkan Memory Allocator for device memory sub-allocation. We now have a mempool from which all glBuffer memory is allocated. The CPU overhead involved in repeated IOCTL calls to the kernel is reduced significantly. Bug: angleproject:2162 Change-Id: Id7681ffe2ac3d2853141ebe34c7df7b7fdd0d55e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2124519 Reviewed-by: Tobin Ehlis <tobine@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
shrekshao d26fb99e 2020-04-10T16:04:26 Add DrawBaseVertexVariants Tests This tests different DrawElements*BaseVertex draw calls from different extensions including OES_draw_elements_base_vertex, EXT_draw_elements_base_vertex, and ANGLE_base_vertex_base_instance, with various combinations of base vertex, base index values. Bug: angleproject:4536 Change-Id: I3cd256522684c6040199d7704aac8575237dbd96 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2146292 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shrek Shao <shrekshao@google.com> Commit-Queue: Shrek Shao <shrekshao@google.com>
Xinyi He 7ce8f3e0 2020-04-14T11:07:25 Enable perFrameWindowSizeQuery by default on Mali It doesn't return out of date error after the native window has resized, so we need to enable perFrameWindowSizeQuery on Mali GPU. Bug: angleproject:4564 Change-Id: Ib454898c5653fbb1b05dc542f7266dfffb03e793 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2145879 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Cody Northrop 83678e51 2020-04-14T08:47:29 Tests: Update dEQP KHR GLES 3.1 expectations Last fix for this test group was merged here: https://github.com/KhronosGroup/glslang/pull/2175 Test: KHR-GLES31.core.shader_bitfield_operation.* Bug: angleproject:4402 Bug: b:153165560 Change-Id: Icfd8fcc0b4ef293870bff6fdc0852e85784bb16e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2148960 Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Tim Van Patten <timvp@google.com>
Charlie Lao dee4d7a5 2020-04-10T10:22:56 Vulkan: Early fragment tests optimization Checks if early fragment tests as an optimization is feasible and enable it if we can. In the link time, if context state diagrees with optimization (in rare case), then remove the ExecutionModeEarlyFragmentTests sprv op code. Bug: angleproject:4508 Change-Id: Ifbb06c0ffb050a9f3ddb16ab50362e908b4b9cf6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2136490 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Mohan Maiya cf2c8e60 2020-04-09T18:52:29 EGL: Relax test skip conditions for a few colorspace ImageTests Relax test skip conditions for the following colorspace ImageTests - - SourceRenderbufferTargetTexture_Colorspace - SourceRenderbufferTargetTextureExternal_Colorspace - SourceRenderbufferTargetTextureExternalESSL3_Colorspace For these tests, it is sufficient to check for support of EGL_EXT_image_gl_colorspace extension Bug: angleproject:3756 Tests: angle_end2end_tests --gtest_filter=ImageTest.SourceRenderbufferTargetTexture*_Colorspace* Change-Id: I123fb14fc79e8f949a903b7586a0badf54297cfa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2144549 Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Xinghua Cao c68dfaf3 2020-04-01T16:36:25 Avoid GPU-GPU copy for StructuredBuffer If uniform block is translated to StructureBuffer on D3D backend, must do a GPU-GPU copy when updating uniform buffer. If buffer's latest usage is StructuredBuffer, directly upload to structured buffer. Bug: angleproject:3682 Change-Id: I7303866d08705a43238732e5f5ae4858f0a33d63 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2131871 Commit-Queue: Xinghua Cao <xinghua.cao@intel.com> Reviewed-by: Jiajia Qin <jiajia.qin@intel.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org>
Tim Van Patten 405f8e7b 2020-02-24T17:38:10 Vulkan: Support Program Pipeline Objects Add support for PPOs to the Vulkan back end. Bug: angleproject:3570 Change-Id: I5403456929847c185467b008d810f31ecfcb60cc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2072652 Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Alexey Knyazev c12c1f57 2020-04-03T01:33:54 D3D11: Skip setting BlendState for integer attachments Some D3D11 drivers may produce unexpected results when blending is apllied to integer attachments. Minor cleanup: early exit for nullptr attachments. New BlendIntegerTest in angle_end2end. Bug: angleproject:4548, angleproject:4547, angleproject:4525, angleproject:4394 Change-Id: I236ac6db1f8dcaca54e9bc1b0803e1775fd75632 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2134448 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Mohan Maiya dac5cc3b 2020-04-08T18:26:46 EGL: Add support for EGL_EXT_image_gl_colorspace extension Add support for creating images with custom colorspace. Bug: angleproject:3756 Tests: angle_end2end_tests --gtest_filter=ImageTest* Change-Id: I9c332c012541c094728d9d9bde7add4189084a33 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2104088 Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Xinghua Cao 2caf7ffd 2020-03-23T12:12:42 Address a TODO for instance uniform block This patch resolves one TODO that Support to translate instance uniform block containing only a large array member to Structured buffer on D3D backend when necessary. Bug: angleproject:4205 Change-Id: If2cd6cf633080820ea33e52269d7d86cd587c9ee Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2114912 Commit-Queue: Xinghua Cao <xinghua.cao@intel.com> Reviewed-by: Jiajia Qin <jiajia.qin@intel.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Geoff Lang 23196076 2020-04-08T10:47:33 GL: Protect against infinite loops with CONTEXT_LOST in CheckError If the GL context generates a CONTEXT_LOST error, stop checking for errors. This error will be generated continuously and result in an infinite loop. BUG=angleproject:3020 Change-Id: Ib78d1ff3f84103e658307f2f892538700916449d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2142312 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>