src/libANGLE/renderer/vulkan/BUILD.gn


Log

Author Commit Date CI Message
Shahbaz Youssefi 558981c1 2021-11-10T23:13:03 Vulkan: Make write-after-invalidate checks more precise Previously, the size of the command buffer was used as indication for whether the render pass attachments might have been modified after glInvalidateFramebuffer. In that case, the invalidate was undone. This is made more precise by making sure only vkCmdClearAttachments and vkCmdDraw* calls are counted for this purpose. For example, inserting event markers after glInvalidateFramebuffer now retains the invalidation. Note that this can be even further optimized by tracking real writes to attachments. For example, currently a draw call with depth test disabled still undoes the invalidation of the depth buffer, but it shouldn't. Bug: angleproject:5079 Change-Id: I6257b4116a73213884b919bc7f3c86ff39b6aeed Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3274176 Reviewed-by: Ian Elliott <ianelliott@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill d8c18ac6 2021-10-08T13:00:19 Re-land: "Isolate commit_id.h from other code." Re-land limits the angle_version deps to Windows to fix an iOS visibility rule violation in GN. Instead of recompiling multiple source files, we can seal off the files that include commit_id to prevent recompilations when the commit changes and source files don't change. Bug: angleproject:2551 Change-Id: I033f00ec7afe4bfd01e29e0eea8848eea27747a0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3233899 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi 7defdb60 2021-10-19T14:07:07 Revert "Isolate commit_id.h from other code." This reverts commit 6d7ebf656d06f1152967aa5f4457d3787a24732c. Reason for revert: Suspected reason for failing ANGLE roll into Chromium Original change's description: > Isolate commit_id.h from other code. > > Instead of recompiling multiple source files, we can seal off the > files that include commit_id to prevent recompilations when the > commit changes and source files don't change. > > Bug: angleproject:2551 > Change-Id: I98800c5a8e04ec7d4c3e57ea0eb3b636d3b224bb > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3212895 > Commit-Queue: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Geoff Lang <geofflang@chromium.org> > Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Bug: angleproject:2551 Bug: angleproject:6588 Change-Id: I19f41141f57d0683efb9a4ec043e078a9f7dc925 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3226056 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Jamie Madill 6d7ebf65 2021-10-08T13:00:19 Isolate commit_id.h from other code. Instead of recompiling multiple source files, we can seal off the files that include commit_id to prevent recompilations when the commit changes and source files don't change. Bug: angleproject:2551 Change-Id: I98800c5a8e04ec7d4c3e57ea0eb3b636d3b224bb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3212895 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Shahbaz Youssefi 2f1d503b 2021-09-16T21:49:14 Vulkan: Fix Vulkan secondary command buffers This change abstracts initialization, begin/end, reset and recycle of command buffers such that both Vulkan and ANGLE secondary command buffers are supported. Bug: angleproject:6100 Change-Id: I8c79764ac98b599fda08fe45cf8c4f0a6573f0f9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2987873 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 458389f2 2021-09-02T22:41:40 Vulkan: Support Linux dma-bufs This change adds support for EGL_EXT_image_dma_buf_import and EGL_EXT_image_dma_buf_import_modifiers on top of Vulkan's VK_EXT_external_memory_dma_buf and VK_EXT_image_drm_format_modifier. Bug: angleproject:6248 Change-Id: I581987f88e9ddcf351dc721f499f63912dca05f9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3145610 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill 48da1c35 2021-07-16T13:24:34 Vulkan: Prefer the local vulkan loader over the system one. Load the Vulkan loader ourselves and give vkGetInstanceProcAddr to volk. This allows us to always prefer loading from the current module directory instead of using the platform-specific ordering. Refactor angle::Library loading to use ModuleDir instead of ApplicationDir. CL originally authored by Geoff Lang. Bug: chromium:1219969 Change-Id: I21d1926e90fd66e1c23cea7323991ae55f3d22d4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3035444 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Sergey Ulanov b73eee71 2021-07-07T18:51:35 Reland: [Vulkan] Add DisplayVkNull Currently all DisplayVk implementations depend on VK_KHR_swapchain and VK_KHR_surface extensions. When running Chromium on Fuchsia these extensions are never used (content is shown on the screen using ImagePipe API without dependency on swapchain). ANGLE still depended on these extensions for DisplayVkFuchsia. This CL adds DisplayVkNull, which allows to run ANGLE without dependency on swapchain. It's usable only offscreen and cannot present content on a surface. Bug: chromium:1203879 Change-Id: I5cadcdf46ed1cfb5ebb3cb69dbfef063e9e2b826 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3012368 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
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>
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 1aa88398 2021-05-24T14:19:05 CL: program object creation for front end and pass-through Add program object to back end and implement creation and info query. Bug: angleproject:6001 Change-Id: If94db8ab8b491e1ac21c767347cabb6f4f3b3cba Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2912465 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: John Plate <jplate@google.com>
John Plate e3dd7161 2021-05-24T12:47:38 CL: sampler object creation for front end and pass-through Add sampler object to back end and implement creation and info query. Bug: angleproject:6001 Change-Id: If5b7d09564d773d6aeda7612728e19bfec7f6155 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2912806 Commit-Queue: John Plate <jplate@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
John Plate efd8da4d 2021-05-21T15:39:11 CL: buffer object creation for front end and pass-through Add Buffer object to front end and Memory object to back end. Implement creation of buffer and sub-buffer objects. Make cl::Object destructor virtual to support destruction of Buffer. Cache more Device info for Buffer validation. Add missing and move existing version checks into validation. Bug: angleproject:5956 Change-Id: Iea7665be5f6bdd8469e81f5fe4935a9fb0e03436 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2912677 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: John Plate <jplate@google.com>
John Plate 6622d2b4 2021-05-18T21:26:39 CL: command queues for front end and pass-through Bug: angleproject:5956 Change-Id: I6d9d4e4e7dfc5402408e3b002e66e4eae752967d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2903091 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: John Plate <jplate@google.com>
Geoff Lang 88156d26 2021-05-18T23:55:32 Revert "[Vulkan] Add DisplayVkNull" This reverts commit cbbaf76b758fb6a37175795b1f424549d535fbdc. Reason for revert: Suspecting this breaks the fuchsia_x64 bot WebGL tests. Ex: https://chromium-review.googlesource.com/c/chromium/src/+/2904812 Original change's description: > [Vulkan] Add DisplayVkNull > > Currently all DisplayVk implementations depend on VK_KHR_swapchain and > VK_KHR_surface extensions. When running Chromium on Fuchsia these > extensions are never used (content is shown on the screen using > ImagePipe API without dependency on swapchain). ANGLE still depended > on these extensions for DisplayVkFuchsia. > This CL adds DisplayVkNull, which allows to run ANGLE without dependency > on swapchain. It's usable only offscreen and cannot present content on > a surface. > > Bug: chromium:1203879 > Change-Id: I4d1307060967ffa68877c4300ea4d5590eeb2152 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2861313 > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Commit-Queue: Jamie Madill <jmadill@chromium.org> Bug: chromium:1203879 Change-Id: I6701ffff48fcb925f387e63b356d2d5cf360ea7e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2904183 Reviewed-by: Geoff Lang <geofflang@chromium.org> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Sergey Ulanov cbbaf76b 2021-04-29T16:09:09 [Vulkan] Add DisplayVkNull Currently all DisplayVk implementations depend on VK_KHR_swapchain and VK_KHR_surface extensions. When running Chromium on Fuchsia these extensions are never used (content is shown on the screen using ImagePipe API without dependency on swapchain). ANGLE still depended on these extensions for DisplayVkFuchsia. This CL adds DisplayVkNull, which allows to run ANGLE without dependency on swapchain. It's usable only offscreen and cannot present content on a surface. Bug: chromium:1203879 Change-Id: I4d1307060967ffa68877c4300ea4d5590eeb2152 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2861313 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
John Plate 48b835cf 2021-05-09T22:47:00 CL: Implement context for front end and passthrough Bug: angleproject:5904 Change-Id: I23b764bba87be3a51a1b5b44b13968fc572efde9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2883773 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: John Plate <jplate@google.com>
John Plate 16a919b1 2021-04-27T11:36:11 Add stubs for CL platform layer back ends Bug: angleproject:5904 Change-Id: If23c7f76013a17c3c67c13194566438035beb3d1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2853582 Commit-Queue: John Plate <jplate@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Shahbaz Youssefi 8844599f 2020-09-11T22:41:36 Vulkan: Create unresolve shader directly in SPIR-V Per issue 4889, dependency to glslang is being dropped. This change generates the unresolve UtilsVk shader directly in SPIR-V. This shader is trivial and contains repeating patterns per attachment. As a result, generating its SPIR-V is exceptionally simple. The SPIR-V in this change is first generated by glslang validator and is then adapted for autogeneration. See comments in the code for details. Bug: angleproject:4889 Change-Id: I48dd77ae04e1035c05a8aef7bf2f161e105ae2a4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2407179 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Shahbaz Youssefi da4aa8b8 2021-02-25T16:26:53 Vulkan: Move SPIR-V validation function to common/ For future use by the translator. Bug: angleproject:4889 Change-Id: I051ad48e6edb58ce3055c5fd276c18a6e29a66ac Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2717020 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Peng Huang 9c450bee 2021-02-12T14:23:42 Use the default build target vulkan_memory_allocator Bug: chromium:1170339 Change-Id: I00c868e205a16a889e193383c35b2ed42d8a61ef Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2693028 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Peng Huang a5ab7974 2021-01-28T12:32:10 Turn on vulkan backend for android ndk level < 26 Fixes two issue for build Vulkan backend for android ndk level < 26, * Disable Vulkan validation layers for android ndk level < 26 * Share vulkan memory allocator implementation with chrome to avoid duplicated symbols link errors. * Only run vulkan backend test with Android P or newer Note: This change will break android-binary-size try bot, we need to update expected_static_initializer_count to 4 at [1] while rolling this change into chromium. [1] https://source.chromium.org/chromium/chromium/src/+/master:chrome/android/static_initializers.gni;l=19?q=expected_static_initializer_count&ss=chromium%2Fchromium%2Fsrc Bug: chromium:1170339 Change-Id: Idb9238d8f339724c4d8f9ac136305b95ff06fae4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2656980 Commit-Queue: Peng Huang <penghuang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Peng Huang 122a1cc5 2021-01-26T20:06:24 Fix several vulkan backend problem on Android. * Load AHardwarebuffer API dynamically, so vulkan backend can be built with old NDK, but can work with newer android releases. * Do not link with libvulkan on android. * Expose EGL_ANDROID_get_native_client_buffer extension with vulkan backend. Bug: chromium:1170339 Change-Id: Idf7f6867a86ae40ba6d57a86e419c610ba404ba8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2653506 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Peng Huang <penghuang@chromium.org>
Mohan Maiya f197ebac 2020-11-16T15:16:56 Vulkan: Add EXT_external_buffer support Addition of buffer support for external memory Also adds new end2end tests for these usecases * SubData update * map/unmap buffer * dispatch compute with external buffer Bug: angleproject:5073 Test: ExternalBufferTestES31.*Vulkan Change-Id: Ib3cccaca77b76830effe49d3731782552e7424ec Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2525105 Commit-Queue: Mohan Maiya <m.maiya@samsung.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Xiaoxuan Liu 1f344d60 2020-11-05T16:33:42 Vulkan: Add support for headless surface How to enable: add below args config to args.gn in linux build ``` use_x11=false use_ozone=false angle_vulkan_display_mode="headless" ``` Bug: angleproject:5260 Change-Id: Iec931e74c061b56376ef028814859aa58af07f2f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2536518 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Xiaoxuan Liu 61180d01 2020-10-12T16:40:13 Reland "Add support for Linux vulkan backend with VK_KHR_display" This is a reland of a7bb6a9b15ddeb8497523f8871deb25de2676d9f Original change's description: > Add support for Linux vulkan backend with VK_KHR_display > > Implement Linux simple display mode with vulkan backend > through VK_KHR_display. > > Added value 'EGL_PLATFORM_VULKAN_DISPLAY_MODE_SIMPLE_ANGLE' for > attribute EGL_PLATFORM_ANGLE_NATIVE_PLATFORM_TYPE_ANGLE to identify > the new simple display mode. Also reserved > EGL_PLATFORM_VULKAN_DISPLAY_MODE_HEADLESS_ANGLE for headless mode. > > How to enable: > Add > > ``` > use_x11=false > angle_vulkan_display_mode="simple" # default value > ``` > > into args.gn, then compile with linux vulkan args. > > Bug: angleproject:5214 > Change-Id: I1247585b9de8b55df106aba99322281f1c183203 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2494320 > Commit-Queue: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Bug: angleproject:5214 Change-Id: I3921f6cb292c86658f39e739a878baad1ef64dba Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2515327 Commit-Queue: Xiaoxuan Liu <xiaoxuan.liu@arm.com> Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 807e6b33 2020-11-02T17:15:03 Revert "Add support for Linux vulkan backend with VK_KHR_display" This reverts commit a7bb6a9b15ddeb8497523f8871deb25de2676d9f. Reason for revert: Failing on Ozone builder, see bug. Bug: angleproject:5289 Original change's description: > Add support for Linux vulkan backend with VK_KHR_display > > Implement Linux simple display mode with vulkan backend > through VK_KHR_display. > > Added value 'EGL_PLATFORM_VULKAN_DISPLAY_MODE_SIMPLE_ANGLE' for > attribute EGL_PLATFORM_ANGLE_NATIVE_PLATFORM_TYPE_ANGLE to identify > the new simple display mode. Also reserved > EGL_PLATFORM_VULKAN_DISPLAY_MODE_HEADLESS_ANGLE for headless mode. > > How to enable: > Add > > ``` > use_x11=false > angle_vulkan_display_mode="simple" # default value > ``` > > into args.gn, then compile with linux vulkan args. > > Bug: angleproject:5214 > Change-Id: I1247585b9de8b55df106aba99322281f1c183203 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2494320 > Commit-Queue: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> TBR=syoussefi@chromium.org,sunny.sun@arm.com,jmadill@chromium.org,xiaoxuan.liu@arm.com Change-Id: I3e2a2a044c220ed8d25be0d82184e5fba7b9c06a No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: angleproject:5214 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2514637 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Xiaoxuan Liu a7bb6a9b 2020-10-12T16:40:13 Add support for Linux vulkan backend with VK_KHR_display Implement Linux simple display mode with vulkan backend through VK_KHR_display. Added value 'EGL_PLATFORM_VULKAN_DISPLAY_MODE_SIMPLE_ANGLE' for attribute EGL_PLATFORM_ANGLE_NATIVE_PLATFORM_TYPE_ANGLE to identify the new simple display mode. Also reserved EGL_PLATFORM_VULKAN_DISPLAY_MODE_HEADLESS_ANGLE for headless mode. How to enable: Add ``` use_x11=false angle_vulkan_display_mode="simple" # default value ``` into args.gn, then compile with linux vulkan args. Bug: angleproject:5214 Change-Id: I1247585b9de8b55df106aba99322281f1c183203 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2494320 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Ian Elliott bc4ec4c1 2020-10-05T17:10:18 Vulkan: Plumb OpenGL ES commands to AGI/debuggers Use vkCmd*DebugUtilsLabelEXT() calls to delimit all GLES commands, and group them under GLES draw/dispatch calls. Plumb calls from the EVENT macro (for every GL entrypoint) to vkCmd*DebugUtilsLabelEXT() via a newly-implemented DebugAnnotatorVk class. Use a new dirty bit so that cached entrypoints are associated with a triggering draw/dispatch command. The DebugAnnotatorVk::beginEvent() method saves a string in a vector of all GL commands in ContextVk. The dirty bit converts the strings into begin-end vkCmd*DebugUtilsLabelEXT() pairs. The DebugAnnotatorVk::endEvent() method makes the final vkCmdEndDebugUtilsLabelEXT() call for a draw/dispatch command. Enable the OGL->VK mapping feature by setting "angle_enable_trace = true" in GN args. Bug: b/162068318 Bug: b/169243237 Change-Id: I61b6a8d113168c0ce578d6efd002d8a393659aba Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2451517 Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Ian Elliott <ianelliott@google.com>
Jamie Madill 6534a6f8 2020-10-02T01:10:54 Revert "Vulkan:Add debug labels for OpenGL calls" This reverts commit 3705fc41315b50a64299ecb1d75015a33fefd6aa. Reason for revert: Causes errors on Debug bots. See bug. Bug: angleproject:5121 Original change's description: > Vulkan:Add debug labels for OpenGL calls > > Implement the DebugAnnotatorVk class, and plumb the EVENT macro in the > GL entrypoints to save a string of call info in the vector of all > GL calls in ContextVk. > > Then add a vkCmdBeginDebugUtilsLabelEXT() call that includes the > OpenGL draw/dispatch call prior to any Vulkan Draw or Dispatch calls. > Also embedded under that label add a second > vkCmdBeginDebugUtilsLabelEXT() call labeled "OpenGL Commands" that > includes all of the OpenGL calls leading up to the draw/dispatch. > Each individual OpenGL call is then given its own > vkCmdBegin/EndDebugUtilsLabelEXT() pair so that the complete sequence > of GL calls leading up to a draw call is visible for each Draw. > > Enable the OGL->VK mapping feature by setting > "angle_enable_trace = true" in GN args. > > Note: This will create an ANGLE APK on Android that generally won't > work with games, unless launched by AGI (which provides the debug > utils extension). A future version will disable these labels unless > the debug utils extension is found. > > Bug: b/162068318 > Bug: b/169243237 > Change-Id: I09886f17fa9287528c12552698738ea1fe2a4b8c > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2427557 > Commit-Queue: Ian Elliott <ianelliott@google.com> > Reviewed-by: Tim Van Patten <timvp@google.com> > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> TBR=courtneygo@google.com,ianelliott@google.com,timvp@google.com,syoussefi@chromium.org,jmadill@chromium.org # Not skipping CQ checks because original CL landed > 1 day ago. Bug: b/162068318 Bug: b/169243237 Change-Id: I772d549213e1ad64ae58a1937e5de0f7ea740084 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2444094 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Ian Elliott 3705fc41 2020-09-28T21:40:57 Vulkan:Add debug labels for OpenGL calls Implement the DebugAnnotatorVk class, and plumb the EVENT macro in the GL entrypoints to save a string of call info in the vector of all GL calls in ContextVk. Then add a vkCmdBeginDebugUtilsLabelEXT() call that includes the OpenGL draw/dispatch call prior to any Vulkan Draw or Dispatch calls. Also embedded under that label add a second vkCmdBeginDebugUtilsLabelEXT() call labeled "OpenGL Commands" that includes all of the OpenGL calls leading up to the draw/dispatch. Each individual OpenGL call is then given its own vkCmdBegin/EndDebugUtilsLabelEXT() pair so that the complete sequence of GL calls leading up to a draw call is visible for each Draw. Enable the OGL->VK mapping feature by setting "angle_enable_trace = true" in GN args. Note: This will create an ANGLE APK on Android that generally won't work with games, unless launched by AGI (which provides the debug utils extension). A future version will disable these labels unless the debug utils extension is found. Bug: b/162068318 Bug: b/169243237 Change-Id: I09886f17fa9287528c12552698738ea1fe2a4b8c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2427557 Commit-Queue: Ian Elliott <ianelliott@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Tim Van Patten e78d9a61 2020-07-24T11:58:45 Convert unordered_map to absl::flat_hash_map for select files This is the initial CL to start migrating to abseil in various places: - formatutils.h - FramebufferVk.h - Program.h - ProgramExecutableVk.h - RewriteRowMajorMatrices.cpp This intentionally hits a couple different places in the code to make sure the abseil dependencies are added to the required targets. Bug: angleproject:4873 Change-Id: Idd6084dff2ebce47833f304c605bbf3151b97414 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2402382 Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Jamie Madill 512059a9 2020-09-16T21:33:32 Tests: Allow tests to function without VVLs. This is necessary to run angle_end2end_tests with sanitizers. We don't currently support building the VVL in sanitized configs. Bug: b/168744561 Change-Id: If16a25ac5786f5f5aeb8ae50d9f7fa22c6c87995 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2415513 Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Tim Van Patten d29d4c6b 2020-08-25T12:40:06 Vulkan: Avoid linking to SPIR-V validation if possible We unconditionally link to $angle_spirv_tools_dir:spvtools_val, but we only use SPIR-V validation with ASSERTs. This CL removes this dependency when ASSERTs are disabled. Bug: angleproject:4887 Test: CQ Change-Id: Ic403b78196ecd895e4a0cdefb54ab4497651ccac Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2375872 Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Jamie Madill 8d412db2 2020-08-29T22:25:18 Revert "Convert unordered_map to absl::flat_hash_map for select files" This reverts commit 1acaf4eced42a26f09b4d9180a9e5db0f37bc9a4. Reason for revert: Fails when is_component_build is not set: lld-link: error: <root>: undefined symbol: public: __cdecl absl::Condition::Condition<struct std::__1::atomic<bool> const>(bool (__cdecl *)(struct std::__1::atomic<bool> const *), struct std::__1::atomic<bool> const *) <snip> Original change's description: > Convert unordered_map to absl::flat_hash_map for select files > > This is the initial CL to start migrating to abseil in various places: > - formatutils.h > - FramebufferVk.h > - Program.h > - ProgramExecutableVk.h > - RewriteRowMajorMatrices.cpp > > This intentionally hits a couple different places in the code to make > sure the abseil dependencies are added to the required targets. > > Bug: angleproject:4873 > Change-Id: I68c7d067b6912b0cc0ecde231501dbed92f0b189 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2321735 > Commit-Queue: Tim Van Patten <timvp@google.com> > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Charlie Lao <cclao@google.com> TBR=timvp@google.com,jmadill@chromium.org,cclao@google.com Change-Id: I75041532fc5126b4c7cc5e0d4529883fb357e05b No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: angleproject:4873 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2383870 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Tim Van Patten 1acaf4ec 2020-07-24T11:58:45 Convert unordered_map to absl::flat_hash_map for select files This is the initial CL to start migrating to abseil in various places: - formatutils.h - FramebufferVk.h - Program.h - ProgramExecutableVk.h - RewriteRowMajorMatrices.cpp This intentionally hits a couple different places in the code to make sure the abseil dependencies are added to the required targets. Bug: angleproject:4873 Change-Id: I68c7d067b6912b0cc0ecde231501dbed92f0b189 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2321735 Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Jamie Madill 5c56f228 2020-08-28T14:45:14 Enable two override suggestion warnings. -Wsuggest-destructor-override and -Wsuggest-override. Bug: skia:7647 Change-Id: Iaac1baa8f34fdf210baf2fdbe811a582b3ac2d14 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2376717 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Alexis Hetu a20f5b17 2020-08-18T11:26:50 Silence Control Flow Integrity (cfi) errors The cfi bot is throwing 3 different errors with ANGLE when using the Vulkan backend: - ChoosePhysicalDevice causes a "function with wrong dynamic type" error when using vkGetPhysicalDeviceProperties - In volk.c, using vkGetInstanceProcAddr and vkGetDeviceProcAddr also causes a "function with wrong dynamic type" error - In vk_mem_alloc.h, included from vk_mem_alloc_wrapper.cpp, GetAllocationCallbacks() causes a "unrelated cast" error This cl silences all 3 cfi errors. Bug: chromium:1116053 Change-Id: I864ec8d9e2acaec493f472e01b3987dcc641c58f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2363209 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Alexis Hétu <sugoi@chromium.org>
Shahbaz Youssefi 36a97db1 2020-07-02T23:29:45 Vulkan: Compress internal shaders Shaves ~200KB in binary size. The compressed SPIR-V blobs are in most cases a little smaller than 1/3 of the original size. The internal shader blobs at this point take ~100KB. Bug: angleproject:2022 Change-Id: I1a2cec073cb1f330632c8dce7a550a0cca1e373d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2280945 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Antonio Maiorano b47cc50a 2020-06-22T10:59:09 Enable validation layer custom extensions With this change, Vulkan-ValidationLayers will allow the specified extensions to pass through, instead of being nulled out: * VK_STRUCTURE_TYPE_SAMPLER_FILTERING_PRECISION_GOOGLE * VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT Bug: b/159027603 Bug: b/154620295 Change-Id: I0ace3acdac06a6c115834ef88b0c883fa2dd4744 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2246304 Commit-Queue: Antonio Maiorano <amaiorano@google.com> Reviewed-by: Antonio Maiorano <amaiorano@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Antonio Maiorano 13816d2d 2020-06-16T14:27:04 Move vulkan_headers/entry_points to common/vulkan This will allow us to move common headers, such as extension headers, to common/vulkan. Bug: b/159027603 Bug: b/154620295 Change-Id: I1ff73dc5b7ee8f7dfb3ac0c5f30bd4b3a8183aeb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2248205 Commit-Queue: Jamie Madill <jmadill@chromium.org> Commit-Queue: Antonio Maiorano <amaiorano@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Joe Spiro c8040e54 2020-06-04T19:45:26 Fix includes to fuchsia headers Includes to non-third_party headers should use "" style instead of <> style includes.This also forces us to be correct about supplying fuchsia dependencies. Bug: angleproject:4676 Change-Id: Id7f542db429d562474891937763610dd667a3fdc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2231980 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Tobin Ehlis 02fa7313 2020-05-05T17:01:18 Vulkan:Initial worker thread disabled by default Created new CommandProcessor class that can be run as a worker thread. Running CommandProcessor within RendererVk as a worker thread that takes a CommmandBufferHelper (CBH) ptr as the interface and processes that CBH into a primary command buffer. Main thread has a queue of CBH to draw from. After submitting a CBH to the worker, it pulls next CBH from the queue. Worker thread releases CBH back to the main thread queue when done. Synchronization goes two ways: 1. Work submitted to worker thread is managaed with a mutex and condition variable based around the work queue. 2. Available CBH ptrs for the main thread have a mutex and condition variable that manages the CBH queue. The worker thread is disabled by default, and, when enabled, it will currently behave and perform as the non-threaded code. This is because the kNumCommandBuffers const in ContextVk.h is set to 2. With only 2 command buffers, they will be assigned to the inside and outside RenderPass command buffers respectively. Then, as soon as one is submitted, the main thread will stall waiting for it to be completed and put back into the queue mentioned in #2 above. The next step is to move command submission to the worker thread and update the number of command buffers so that processing/submission will occur in parallel with the main thread. Right now there is a race condition issue when attempting to run in parallel because the main thread updates and submits the same primary command buffers that are used in the worker thread, which is in violation of the Vulkan spec. The follow-on CL will fix this issue as the main thread will only touch SecondaryCommandBuffers and the worker thread will be the only thread touching the primary command buffers. Bug: b/154030730 Change-Id: Ib0c518bbd7ca9a3a7e789f4e1f2f7131ddc0509e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2174719 Commit-Queue: Tobin Ehlis <tobine@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Antonio Maiorano 4f343f3e 2020-05-13T14:11:51 Reland "Add support for GL_CHROMIUM_texture_filtering" This is a reland of 38780ae3921d2570316119a881adfb9520e7e296 modulo the changes to disable VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT, as this was causing problems. With this landed, the extension will not work on SwiftShader until we find a way to allow this extension through the validation layers. Bug: b/146423360 Bug: b/154620295 Change-Id: Ie09fc507c01a47be3bb227bc78771660170ba5d3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2199639 Commit-Queue: Antonio Maiorano <amaiorano@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Michael Spang e8d71eb3 2020-05-12T14:40:44 Vulkan: Fix ANGLE_ENABLE_VULKAN_VALIDATION_LAYERS_BY_DEFAULT Unfortunately this was broken by 605af42e1 ("Vulkan: Move ICD overrides to a common place"). This adds an unconditional dependency on the layers to tests. Tests don't respect angle_enable_vulkan_validation_layers, so we need to ship the layers irrespective of that setting. Bug: angleproject:4634 Change-Id: Ided291ea645a72e6c3bdb960e55d15013aa20a3a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2197279 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Tim Van Patten 3b82fdcf 2020-05-12T23:44:07 Revert "Add support for GL_CHROMIUM_texture_filtering" This reverts commit 38780ae3921d2570316119a881adfb9520e7e296. Reason for revert: Breaks SWANGLE-VK: 05-12 23:42:28.612 22836 22861 D libEGL : dlopen_ext from APK (libEGL_angle.so) success at 0x79f4485a10 05-12 23:42:28.617 22836 22861 D libEGL : dlopen_ext from APK (libGLESv1_CM_angle.so) success at 0x79f4485eb0 05-12 23:42:28.619 22836 22861 D libEGL : dlopen_ext from APK (libGLESv2_angle.so) success at 0x79f4485c60 05-12 23:42:28.624 14223 14223 D StatusBar: disable<e i a s b h r c s > disable2<q i n > 05-12 23:42:28.633 14014 14057 V DisplayPowerController: Brightness [0.19986142] reason changing to: 'automatic', previous reason: 'automatic [ dim ]'. 05-12 23:42:28.635 22836 22861 D vulkan : searching for layers in '/data/app/~~0AfWfBsFEO78tqKlnanevg==/org.khronos.gl_cts-NOs3SGclHqlbcqe-08gHrw==/lib/arm64' 05-12 23:42:28.635 22836 22861 D vulkan : searching for layers in '/data/app/~~0AfWfBsFEO78tqKlnanevg==/org.khronos.gl_cts-NOs3SGclHqlbcqe-08gHrw==/base.apk!/lib/arm64-v8a' 05-12 23:42:28.632 22836 22836 W .khronos.gl_cts: type=1400 audit(0.0:218): avc: denied { ptrace } for scontext=u:r:zygote:s0 tcontext=u:r:untrusted_app_25:s0:c512,c768 tclass=process permissive=0 b/77925912 app=org.khronos.gl_cts 05-12 23:42:28.636 14014 14034 I EventSequenceValidator: Transition from ACTIVITY_LAUNCHED to ACTIVITY_FINISHED 05-12 23:42:28.637 22836 22861 F SwiftShader: external/swiftshader/src/Vulkan/libVulkan.cpp:425 vkCreateInstance TRACE_ASSERT: pCreateInfo->pNext sType = 1000247000 --------- beginning of crash 05-12 23:42:28.637 22836 22861 F libc : Fatal signal 6 (SIGABRT), code -1 (SI_QUEUE) in tid 22861 (.khronos.gl_cts), pid 22836 (.khronos.gl_cts) Original change's description: > Add support for GL_CHROMIUM_texture_filtering > > Chromium enables a custom extension, GL_CHROMIUM_texture_filtering, when > using SwiftShaderGL, to enable high precision filtering. This change > makes it so ANGLE also handles this same extension when using the > SwiftShaderVK backend, by enabling the new > VK_GOOGLE_sampler_filtering_precision custom extension. > > Bug: b/146423360 > Bug: b/154620295 > Change-Id: I69cafc1ccf5970a3d220ac7e13ec3c8fdd4a9643 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2185822 > Commit-Queue: Antonio Maiorano <amaiorano@google.com> > Commit-Queue: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> TBR=geofflang@chromium.org,jmadill@chromium.org,amaiorano@google.com # Not skipping CQ checks because original CL landed > 1 day ago. Bug: b/146423360, b/154620295 Change-Id: I803d7a7baac81cf178b59c4bf2789346ec1d3f87 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2197168 Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Tim Van Patten <timvp@google.com>
Antonio Maiorano 38780ae3 2020-05-06T16:05:02 Add support for GL_CHROMIUM_texture_filtering Chromium enables a custom extension, GL_CHROMIUM_texture_filtering, when using SwiftShaderGL, to enable high precision filtering. This change makes it so ANGLE also handles this same extension when using the SwiftShaderVK backend, by enabling the new VK_GOOGLE_sampler_filtering_precision custom extension. Bug: b/146423360 Bug: b/154620295 Change-Id: I69cafc1ccf5970a3d220ac7e13ec3c8fdd4a9643 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2185822 Commit-Queue: Antonio Maiorano <amaiorano@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 20e631fe 2020-05-05T12:19:58 Update VMA integration again. This time using a simpler integration and no template. Bug: chromium:1074162 Change-Id: Ia770f2bf724ffb9b8120dbdbc707133fc61e16c6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2182173 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill ca50ad42 2020-05-01T16:37:00 Vulkan: Update VMA integration. This will allow ANGLE to share the same source location as Chromium. Bug: chromium:1074162 Change-Id: I3ea9820cc1fe9cd0bfec81d734168213e5c1bb0b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2176067 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
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>
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>
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 76d52be3 2020-04-07T09:14:29 Vulkan: Add VulkanMemoryAllocator to DEPS. Bug: angleproject:2162 Change-Id: If91ae40c1fe818a59d775bb2fa066227dd52859d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2139992 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Mohan Maiya <m.maiya@samsung.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Tim Van Patten 10ade024 2020-02-13T18:11:54 Create the ProgramExecutableVk Class The ProgramExecutableVk class is being created to collect data structures that are common to both ProgramVks and ProgramPipelineVks, as well as any shared functions. This allows callers to make Program-/ProgramPipeline- specific queries without needing to know exactly which responded by querying the current ProgramExecutableVk. This will also allow the necessary data structures to only be populated and stored within the ProgramExecutableVk when necessary and reused as often as necessary. A few things are being moved into this class: - mVariableInfoMap This information will be required to defer translating the SPIR-V until when the vulkan pipeline layout is determined and the actual locations are known.   This will also allow removing determining these locations twice (during GLSL->SPIR-V compilation and pipeline layout). - createPipelineLayout() - update*DescriptorSet() - Descriptor Set Layout lists - Pipeline Layout - Various other functions/members related to pipeplines, descriptor sets, etc. Bug: angleproject:3570 Change-Id: I4b5ababeafec865148783c8ffd4c15f659f4856d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2055656 Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill a741abb9 2020-02-21T16:37:37 Vulkan: Rename CommandGraphResource to Resource. Also renames the h and cpp files to ResourceVk (to keep distinct from other resource.h/cpp files) and renames 'onResourceAccess' to 'retain'. Cleans up a few remaining mentions of the command graph in comments. Bug: angleproject:4029 Change-Id: Ifc8e880c8cea3fc48a4aec4730191c88aa35a076 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2065920 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Wez bb654cf8 2020-02-15T23:54:44 [fuchsia] Migrate to SDK-provided FIDL & package targets. Bug: chromium:1050703 Change-Id: I7c031f4501b567fde117c30b25f0bc071d4acc44 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2058948 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jonah Ryan-Davis 806ba566 2019-12-12T13:02:01 Extend ANGLE_iosurface_client_buffer to Vulkan backend for Swangle Implement an IOSurface-backed pBuffer surface for the Vulkan backend on Mac, through SwANGLE. ANGLE will pass a raw pointer to Swiftshader and handle locking/unlocking the IOSurface. Bug: chromium:1015454 Change-Id: Ia3ead55334736003d405b54ba8dcc7701706fbb2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1965434 Commit-Queue: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Ethan Lee 8c396a9c 2019-12-31T01:37:49 Ignore vulkan-loader dependency for GGP Bug: angleproject:4254 Change-Id: If551d96941bc4aa487514ba3d8f793dcf45131e9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1982785 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Eric Binet 5aed7c74 2020-01-08T17:42:21 Narrow point size range clamping to affected versions Bug: angleproject:2970 Change-Id: Ie14725b0cf30738d394320c24a72bc947135f5cf Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1993204 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Tobin Ehlis 545c6142 2019-12-17T13:53:28 Vulkan:Lazily link libvulkan Move libvulkan to a data_dep as we no longer statically link it. Bug: angleproject:4225 Change-Id: I96458d4727d2d47d8c259ec51d91fd852067c059 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1972192 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tobin Ehlis 5fd73782 2019-08-09T11:46:46 Vulkan: Use volk to load vk* func ptrs Thanks to Jamie Madill for some fixes to get all CI test passing w/ volk. This change updates all ANGLE targets that use Vulkan to dyanmically link all of the VK entrypoints using the volk OSS library from https://github.com/zeux/volk. It's only two source files so baking them directly into ANGLE repo. Also it's used in both the tests and libANGLE trees so added to src/common/third_party/volk dir. Updated volk and the renderer to track latest instance and device that were loaded and renderer will refresh vk* function pointers if the current and previous device and/or instance don't match. This prevents errors in the test framework as we transition between backends, especially between VK HW & SwiftShader ICDs. This change rolls the Vulkan Loader forward to use the latest loader version which no longer allows static linking but requires dynamic linking. Bug: angleproject:3740 Bug: angleproject:4092 Bug: angleproject:4162 Bug: angleproject:4210 Bug: angleproject:4225 Change-Id: I8a0b7d24c9545bbfdfaa4b9357a9bfe6793e0140 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1965640 Commit-Queue: Tobin Ehlis <tobine@google.com> Reviewed-by: Tobin Ehlis <tobine@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill c4faeb79 2019-11-25T10:33:52 Use SwiftShader-based ICD generation. We moved this into the SwiftShader repo proper in: https://swiftshader-review.googlesource.com/c/SwiftShader/+/38491 We can remove ANGLE's custom rules. Also removes the layer generation script which was now unused. Also cleans up the Vulkan back-end BUILD.gn a bit. Bug: dawn:283 Change-Id: I490e8e8fc6fcadec58aca53a157ce7c4a47def3c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1932340 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jonah Ryan-Davis 5afd5ec6 2019-10-25T10:53:40 Vulkan support for MacOS (using SwiftShader) Created a new WindowSurface/Display for MacOS/Vulkan, along with some GN changes to get it working. Bug: 1015454 Change-Id: I3f7a12f173795efe598856c702ce53b1e50831eb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1880163 Commit-Queue: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 2ed71c81 2019-11-27T11:42:08 Vulkan: Isolate DisplayVk.h from Display.cpp. With this change we no longer can access Vulkan (or Volk) headers in the ANGLE front-end. The only header that needs to be visible is the new "DisplayVk_api.h". This will simplify a bit of Volk integration. Also reworks how the entry points and headers are exposed to the tests. Bug: angleproject:3740 Change-Id: Ic1434f304619427ed6ad6370bc090ceb7858df94 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1936707 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tobin Ehlis <tobine@google.com>
Ethan Lee d22b8be4 2019-11-15T12:26:39 GN: Make X11 optional, based on a user-defined variable. Not all Linux platforms will have X11 available (Wayland, GGP), so we have to declare a variable that checks use_x11 separately. Bug: angleproject:4116 Change-Id: I7e33956da6344b8db4d4e32dbbd1b42f58f7019c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1919632 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill c898ec1a 2019-11-04T15:20:18 Add EGL GGP extensions. This CL adds two new extensions: * EGL_ANGLE_ggp_stream_descriptor: Introduces a new attribute to CreateWindowSurface. Allows the app to pass in a stream descriptor to VkCreateSurfaceKHR. Mirrors VK_GGP_stream_descriptor_surface. * EGL_ANGLE_swap_with_frame_token: Introduces a new function 'eglSwapBuffersWithFrameTokenANGLE'. This allows the app to pass a GGP frame token down to vkQueuePresentKHR. Mirrors VK_GGP_frame_token. Bug: angleproject:4078 Change-Id: I4313ac4c264e68999905049f661bc64b44f72fab Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1897315 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Alexis Hetu 5e6be1d6 2019-10-11T11:29:22 Provoking vertex feature support enabled Added support in ANGLE for the provoking vertex feature, which allows to choose the provoking vertex convention (first or last) for flat shading. Just copying the vk_ext_provoking_vertex.h file into ANGLE src tree for now. When the extension lands in the vulkan header we'll migrate to that and remove this file from ANGLE. With this, all these tests pass with SwANGLE: dEQP-GLES3.functional.fragment_out.* (fixes 526 failures) dEQP-GLES3.functional.rasterization.flatshading.* (fixes 6 failures) dEQP-GLES3.functional.shaders.linkage.varying.* (already passing before, still passing) Bug: angleproject:3430 Bug: angleproject:3677 Bug: angleproject:4063 Change-Id: Icc361f567072c12472398e37a94a61d7f95007ad Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1855681 Commit-Queue: Alexis Hétu <sugoi@chromium.org> Reviewed-by: Alexis Hétu <sugoi@chromium.org>
Le Quyen a48f95ab 2019-10-14T14:49:49 Move Vulkan GlslangWrapper code to a shared location. Metal backend will reuse Vulkan's GlslangWrapper code. The Metal backend will use this code to translate glsl to spirv then cross compile to Metal Shading Language using spirv-cross. So the source code of GlslangWrapper should be moved outside vulkan folder. Bug: angleproject:2634 Change-Id: I208062daf0d77756c9d32cfdab925b7dfdf83e05 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1858042 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill f483d4ee 2019-10-16T14:13:17 Vulkan: Move SwiftShader ICD json to root_out_dir. This fixes loading SwiftShader in Chrome and in Renderdoc. Requires explicitly specifying the ICD and module directories ("./" or ".\\"). Bug: angleproject:3876 Bug: b/142756865 Change-Id: I9183c81cb0e8ac117fc5d7a8f2048dc0555632c4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1864315 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Tobin Ehlis 8952dd65 2019-10-16T13:54:38 Revert "Vulkan: Define VK_USE_PLATFORM_XLIB_KHR" This reverts commit bedeb781e8ca8a57c31b56d28ba1cde983e5ba47. Reason for revert: <INSERT REASONING HERE> Original change's description: > Vulkan: Define VK_USE_PLATFORM_XLIB_KHR > > For vulkan x11 build need to define VK_USE_PLATFORM_XLIB_KHR. > > Bug: 1011068 > Change-Id: I1ff51a37618eb3a095bdf18e0615a3610225b6fc > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1863319 > Commit-Queue: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> TBR=penghuang@chromium.org,tobine@google.com,jmadill@chromium.org Change-Id: I6cf135e36603ea01bc418fd6f7ce7f131890531e No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: 1011068 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1864579 Reviewed-by: Tobin Ehlis <tobine@google.com> Commit-Queue: Tobin Ehlis <tobine@google.com>
Tobin Ehlis bedeb781 2019-10-15T12:31:11 Vulkan: Define VK_USE_PLATFORM_XLIB_KHR For vulkan x11 build need to define VK_USE_PLATFORM_XLIB_KHR. Bug: 1011068 Change-Id: I1ff51a37618eb3a095bdf18e0615a3610225b6fc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1863319 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Sergey Ulanov 6950a87f 2019-10-10T18:01:23 [Fuchsia] Exclude libvk_swiftshader.so on Fuchsia libvk_swiftsahder.so was pulled on web_engine package after swiftshader was enabled in Angle. We don't need it so it can be excluded. This is a reland of https://chromium-review.googlesource.com/c/angle/angle/+/18228630 . Bug: fuchsia:37278 Change-Id: I4de8c7fe4706104791dfe5fc9b4e021db9f2948b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1854883 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Brian Sheedy cc4d8331 2019-09-11T17:26:00 Reland "Add export_targets.py to presubmit" This is a reland of c40a21f353a2d0a37e83f3dce3a1c3096574be64 Changes: Fixed presubmit failing on Windows due to being unable to find gn, fixed export_targets.py failing on Windows for Googlers due to being unable to find Visual Studio files. Original change's description: > Add export_targets.py to presubmit > > Adds export_targets.py to run as part of presubmit in order to help > prevent breaking Firefox with BUILD.gn changes. > > Bug: chromium:1003151 > Change-Id: I5a7ab00891cd7c094c797e6150f642f803a726b6 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1802038 > Commit-Queue: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Bug: chromium:1003151 Change-Id: I321ade86f2d969601afb8e1ed61c36bf166887b5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1842127 Commit-Queue: Brian Sheedy <bsheedy@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 1ba72546 2019-10-04T15:17:49 GN: Allow building without /build/ folder. This will allow for ANGLE to be used in the Skia build. Bug: angleproject:3943 Change-Id: Idd1840f4445c63e696a7cdcd8b873623b8408306 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1835346 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Jamie Madill a4242146 2019-10-04T18:57:25 Revert "Add export_targets.py to presubmit" This reverts commit c40a21f353a2d0a37e83f3dce3a1c3096574be64. Reason for revert: Seems to be failing locally on Windows. See bug for more info. Original change's description: > Add export_targets.py to presubmit > > Adds export_targets.py to run as part of presubmit in order to help > prevent breaking Firefox with BUILD.gn changes. > > Bug: chromium:1003151 > Change-Id: I5a7ab00891cd7c094c797e6150f642f803a726b6 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1802038 > Commit-Queue: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Yuly Novikov <ynovikov@chromium.org> TBR=ynovikov@chromium.org,bsheedy@chromium.org,jgilbert@mozilla.com,jmadill@chromium.org Change-Id: Ic9a2eb58d847a40349e64b931c369f07c24b799c No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: chromium:1003151 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1841877 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Brian Sheedy c40a21f3 2019-09-11T17:26:00 Add export_targets.py to presubmit Adds export_targets.py to run as part of presubmit in order to help prevent breaking Firefox with BUILD.gn changes. Bug: chromium:1003151 Change-Id: I5a7ab00891cd7c094c797e6150f642f803a726b6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1802038 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Jamie Madill 1f08ab28 2019-10-03T16:22:52 Re-land "GN: Componentize vulkan back-end build." Re-land fixes angle_end2end_tests disabling Vulkan. This moves the build configuration into the Vulkan back-end dir. This should be a little easier to maintain as all Vulkan-related config is in one place. Note that this should not interfere with Skia's build as they do not import the Vulkan back-end sources. One additional possiblity that this enables is testing other compile-time permutations of the Vulkan back-end more easily. For example we could make a simple change to enable compile testing of the Vulkan back-end with custom command buffers disabled. Also fixes a few errors affecting less tested configs. Bug: angleproject:3943 Change-Id: I0161668abcc58fcf529dde120998d4b99445fdd5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1838454 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 2328d65a 2019-10-03T02:27:07 Revert "GN: Componentize vulkan back-end build." This reverts commit d46e2fb1e341a7ba7da56072658d3b4b1a540077. Reason for revert: Broke Vulkan angle_end2end_tests. Bug: angleproject:3954 Original change's description: > GN: Componentize vulkan back-end build. > > This moves the build configuration into the Vulkan back-end dir. > This should be a little easier to maintain as all Vulkan-related > config is in one place. > > Note that this should not interfere with Skia's build as they do > not import the Vulkan back-end sources. > > One additional possiblity that this enables is testing other > compile-time permutations of the Vulkan back-end more easily. For > example we could make a simple change to enable compile testing > of the Vulkan back-end with custom command buffers disabled. > > Also fixes a few errors affecting less tested configs. > > Bug: angleproject:3943 > Change-Id: Iaf819936896e4f5d3e6415ed16ab0c940e46cdb6 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1829662 > Commit-Queue: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Tobin Ehlis <tobine@google.com> TBR=tobine@google.com,jonahr@google.com,jmadill@chromium.org Change-Id: I7cf3db4f6b7d8b779625ea2491172bb429b498a9 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: angleproject:3943 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1837233 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill d46e2fb1 2019-09-27T16:22:35 GN: Componentize vulkan back-end build. This moves the build configuration into the Vulkan back-end dir. This should be a little easier to maintain as all Vulkan-related config is in one place. Note that this should not interfere with Skia's build as they do not import the Vulkan back-end sources. One additional possiblity that this enables is testing other compile-time permutations of the Vulkan back-end more easily. For example we could make a simple change to enable compile testing of the Vulkan back-end with custom command buffers disabled. Also fixes a few errors affecting less tested configs. Bug: angleproject:3943 Change-Id: Iaf819936896e4f5d3e6415ed16ab0c940e46cdb6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1829662 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tobin Ehlis <tobine@google.com>