src


Log

Author Commit Date CI Message
Shahbaz Youssefi cf11beed 2020-06-22T15:51:51 Add mip-related corner-case tests Bug: angleproject:4780 Bug: angleproject:4781 Change-Id: Iaf8e1df576c3676249751413a646244da41a0eaf Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2258476 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi ce3d3413 2020-06-23T09:29:05 Update glslang_validator binary for Linux. This binary was updated using update_glslang_binary.py. Please see instructions in tools/glslang/README.md. Bug: None Change-Id: Ib1c3ae292a90ec6aabc79b9396ca2e35007edc16 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2260573 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@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>
Shahbaz Youssefi ea15439b 2020-06-23T00:17:52 Add mipmap generation perf test for emulated formats Add a variation to mipmap generation perf test to measure performance when given a format that requires emulation in the Vulkan backend, in this case GL_RGB. Bug: angleproject:4551 Change-Id: I4c533d13e35279fec9e007691fb64353735040d7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2259199 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
angle-autoroll 7db2dcec 2020-06-19T07:01:08 Roll Vulkan-ValidationLayers from 04f0b691eb4c to 74ed6cfd05c1 (20 revisions) https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers.git/+log/04f0b691eb4c..74ed6cfd05c1 2020-06-18 tony@lunarg.com layers: Remove leading comma in lists 2020-06-18 mark@lunarg.com corechecks: Fix DrawIndexedIndirect VUID name 2020-06-18 jeremyk@lunarg.com tests: Add combined image sampler test 2020-06-18 jeremyk@lunarg.com layers: Add combined image sampler check 2020-06-18 jeremyk@lunarg.com layers: Add CMD_TYPE parameter to pipeline binding 2020-06-18 tony@lunarg.com layers: Add is_khr to acceleration_structure_state 2020-06-17 mark@lunarg.com tests: Don't run ManySmallIndexedDrawCall test on shieldTV 2020-06-17 s.fricke@samsung.com tests: Add export handleType VUIDs 2020-06-17 s.fricke@samsung.com layers: Add export handleType VUIDs 2020-06-17 s.fricke@samsung.com layers: Wrap non external AHB logic together 2020-06-17 s.fricke@samsung.com tests: Validate maxSamplerAllocationCount 2020-06-17 s.fricke@samsung.com layers: Validate maxSamplerAllocationCount 2020-06-17 s.fricke@samsung.com layers: Add function calls to error log messages 2020-06-17 mark@lunarg.com tests: Add filters for BP Android test failures 2020-06-17 mark@lunarg.com tests: Compile best practices tests for Android 2020-06-17 mark@lunarg.com tests: Replace setenv with private settings extension 2020-06-17 mark@lunarg.com layers: Add private settings extension and write support 2020-06-17 s.fricke@samsung.com layers: Remove invalid check for AHB format 2020-06-17 szilard.papp@arm.com tests: Adding test for triple buffering 2020-06-17 szilard.papp@arm.com practices: Adding checks for triple buffering If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/vulkan-validation-layers-angle-autoroll Please CC courtneygo@google.com on the revert to ensure that a human is aware of the problem. To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/master/autoroll/README.md Bug: None Tbr: courtneygo@google.com Change-Id: I8c35e56e998560c53e8b54bfd26749d334172b30 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2254490 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tobin Ehlis <tobine@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Tobin Ehlis cfbf769d 2020-06-22T10:14:02 Vulkan:Level/Layer hash fix-up Simplify has function for level/layer of imageView and add asserts to make sure that there won't be hash collisions. Bug: angleproject:4651 Change-Id: I8ab86a4f3d7aa668ad2c08e61bd5fd57744fcd12 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2257265 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Tobin Ehlis <tobine@google.com>
Le Hoang Quyen 113c5e29 2020-05-11T22:49:03 Metal: deferred render command encoder creation. MTLRenderCommandEncoder creation will be deferred until a render pass ends. Commands will be stored into a back-end owned buffer during render pass. At the end of the render pass, those commands will be re-encoded into an actual MTLRenderCommandEncoder. Benefits: - Useful for future implementation of occlusion query buffer where it could be allocated right before the end of a render pass to be big enough to store all queries within the render pass. - It's possible to change load option (deferred clear) as long as there is no draw call issued yet. This is not implemented yet. - Possibility of commands' re-ordering. Bug: angleproject:2634 Change-Id: I1348716aa882c0540d9120bf175d8dac13fb58bd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2193196 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Xiaoxuan Liu a7587fcf 2020-06-22T14:59:30 Vulkan: Skip Texture2DArrayCopy.SnormFormats on Mali GPU. Bug: angleproject:4744 Change-Id: I911b184daffde616d874af8cd698f1f796a9cfcc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2257120 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Corentin Wallez 47ad6801 2020-06-22T14:27:28 Suppress TransformFeedbackTest failure on Mac AMD. TBR=jmadill@chromium.org Bug: angleproject:4775 Change-Id: I22e8c0c42e48c4c2d0527b39ec740497083656c2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2256208 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Shahbaz Youssefi b772a955 2020-06-16T23:32:47 Vulkan: Make texture syncState aware of upcoming generateMipmap By letting TextureVk::syncState know it's being called for generateMipmap, it can make a better decision to initialize the image: - Staged updates to mips that are going to be overwritten are dropped - The image is created with full mipchain to avoid a redefine in the following generateMipmap() call. Bug: angleproject:4551 Change-Id: Ic70ee6c0a0b29c7bd62beaff612b2f2d5276defb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2249340 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Courtney Goeltzenleuchter 2919dc6e 2020-06-15T18:39:39 Add immutable samplers to descriptor set layout To support YUV conversion we need to track the use of immutable samplers in the descriptor set layout. Bug: b/155487768 Change-Id: Ic7dc6a08551f5125c4a519b5cfada312f95ab914 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2225423 Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Ian Elliott <ianelliott@google.com>
Jonah Ryan-Davis f56ba018 2020-06-19T11:30:59 Fix TSAN build error This typo was hidden behind a THREAD_SANITIZER flag so it was uncaught by the CQ. I verified this fix locally. Bug: chromium:1097082 Change-Id: I4e31d1d1253cbcaf292c9a588bcd54fc298e85b6 TBR=jmadill@chromium.org Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2254558 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Tobin Ehlis 34ca1ac7 2020-06-16T12:05:12 Vulkan: Fix FramebufferVk cache Migrate Serial from Image to ImageView. Imageviews are what are utimately used in FramebufferVk, so move the Serials into the ImageViewHelper class. Since that class also knows the level/layer of the imageView, we can revert to using a single Serial per ImageView instead of the AttachmentSerial that included the layer and level. ImageViewHelper caches Serials per layer/level combo. Bug: angleproject:4651 Change-Id: I3741d7d03523eada84295cb712c1cc1e6e3c3867 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2248203 Commit-Queue: Tobin Ehlis <tobine@google.com> Reviewed-by: Mohan Maiya <m.maiya@samsung.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill fe902f4b 2020-06-19T14:28:36 Test Runner: Stub histogram writer. The Android tests require a valid output for the perf test results. The smallest valid output is an empty array. Bug: angleproject:3162 Change-Id: I1bf7602b02358d634347d587b406c0c2d7c838a2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2254088 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Brian Sheedy <bsheedy@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Jamie Madill b11af52f 2020-06-19T14:39:29 Suppress failing XFB tests on Intel/Win/Vulkan. Bug: angleproject:4533 Bug: angleproject:4767 Change-Id: I34973d4160df993f2b1ed4d97d5d9f3871ecb9f3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2254090 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Brian Sheedy <bsheedy@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Manh Nguyen 9dee8e3f 2020-06-15T10:59:18 Automate testing of capture_replay automation script will: 1. compile all tests in angle_end2end with framecapture enabled 2. run each test with frame capture 3. compile CaptureReplayTest with cpp trace files 4. Run CaptureReplayTest Test: run_tests_with_framecapture.py Bug: angleproject:4749 Change-Id: Ieb21c6137653632d73beedea48712e46fc15a0f3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2246321 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Manh Nguyen <nguyenmh@google.com>
Mohan Maiya f16e94cd 2020-06-17T10:43:19 Prefer retrieval of TLS values through ASM code on Android On the Android platform prefer using the ASM code to retrieve TLS context object even for single threaded apps. This helps get rid of a branch in GetGlobalContext() and GetValidGlobalContext() further improving the CPU perf of TLS operations. Bug: angleproject:4717 Change-Id: I58d3d3b7061d613b24f945c07bed497c7c4be25c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2250318 Commit-Queue: Mohan Maiya <m.maiya@samsung.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Cody Northrop c028fc73 2020-06-19T09:06:03 Tests: Update traces to include draw surface width/height The traces now contain the original resolution they ran with, so we can set that based on testID. This fixes correctness problems on Android, where only a fraction of the screen could be seen during replay. Bug: b/159238311 Test: angle_perftests --gtest_filter="*Trace*" Change-Id: I47b92ee31681998260bad059cde0856a25ae0fc6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2250863 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Manh Nguyen <nguyenmh@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Courtney Goeltzenleuchter e474cc9e 2020-06-18T16:03:30 Download restricted trace data To ensure that things are built we need to update the modification time on the files we download. This adds a script to download the requested files and then touch everything that was downloaded in the traces folders. Bug: chromium:1096577 Change-Id: Idce6abb6100e7c662429a9db71b1a44a78dd88a6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2252544 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
Shahbaz Youssefi 3589d9a0 2020-06-16T15:32:18 Add a test for generateMipmap after modify To make sure TextureVk::syncState is called before generateMipmap. Bug: angleproject:4551 Change-Id: Ibce0738b72fc81270e07617f04ffee57f1c8ed20 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2248209 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Cody Northrop 1c484343 2020-06-17T10:10:16 Capture/Replay: Track the draw surface width/height In order for captures to replay correctly, track the original width and height of the draw surface, as provided by eglMakeCurrent. Bug: b/159238311 Test: angle_perftests Change-Id: Ic8697abaca7dbdb94dabf34b872f69faf17b0b4d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2250861 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Manh Nguyen <nguyenmh@google.com>
Shahbaz Youssefi 6cb8345f 2020-06-17T23:22:57 Vulkan: Non-zero memory initialization for all images This was only implemented for single-level, single-layer, single-sample color images. This change implements clear for all images. Additionally, the move to VMA broke the initialization of the staging buffer, so even for the supported case, the image was being initialized with uninitialized data. Bug: angleproject:4092 Bug: angleproject:4551 Change-Id: Ic2eee3f8454a93f1bcf3ca725afabcdc693047e1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2249376 Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Jonah Ryan-Davis c70b8f84 2020-06-17T17:06:27 GL: Workaround NVIDIA issue in glLinkProgram When TSAN is enabled, it catches some bad memory access in the NVIDIA driver on Linux during glLinkProgram with multithreaded linking. To workaround this, assume we don't have native support for KHR_parallel_shader_compile Bug: chromium:1094869 Change-Id: I92f042b39028df108de2c5378311cc0c7b683e08 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2250938 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Shahbaz Youssefi e7ae237e 2020-06-12T23:52:09 Vulkan: ANGLE_copy_texture_3d support Bug: angleproject:4748 Test: CopyTexImage*Vulkan:Texture3DCopy*Vulkan:Texture2DArrayCopy*Vulkan Test: dEQP.KHR_GLES3/copy_tex_image_conversions_required_cubemap*cubemap* Change-Id: Ifdc3d455ca8c9e732d0adf4afa9e2809d780ae18 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2246320 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Cody Northrop c81f0b7b 2020-06-18T15:32:48 Tests: Update trace timestamps Move all timestamps forward to get CQ working again. TBR=courtneygo@google.com,jmadill@chromium.org Test: angle_perftests --gtest_filter="*Trace*" Bug: angleproject:4762 Change-Id: I1aff31a705d9a014d4ec3463d3d7b4bf6f3208a2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2252542 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Shahbaz Youssefi 24945828 2020-06-18T10:00:33 Disable ES3 perf tests on Nvidia/windows7/Vulkan Notry: true Bug: chromium:1096510 Change-Id: I488d572f448d48402138e38b42fbf46c940a8b97 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2252118 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi d44da6e9 2020-06-17T23:55:02 Fix restricted_traces/.gitignore Use a pattern to exclude all compressed and uncompressed test files instead of relying on them being manually entered. Bug: None Change-Id: I76a3117ebeb22f25c46059e84457afffa5ef6757 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2251319 Reviewed-by: Manh Nguyen <nguyenmh@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Ian Elliott fa3d64bf 2020-06-17T15:14:02 Minor edits to top of EGLPreRotationTest.cpp Bug: b/158337857 Change-Id: Id415496fbf38b63975b29834cd93c3b3c56defcb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2250940 Reviewed-by: Ian Elliott <ianelliott@google.com> Commit-Queue: Ian Elliott <ianelliott@google.com>
Ian Elliott 6f568b08 2020-06-16T11:55:39 Split/refactor the pre-rotation BlitFramebuffer tests Making several, smaller, more-focused tests will aid in debugging problems. Bug: b/158337857 Change-Id: I3d1efd93a5ad7cd20352174a07f3547175eb2bb5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2248201 Commit-Queue: Ian Elliott <ianelliott@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Stuart Morgan 5dba723d 2020-06-16T09:29:16 Add newline-eof to warnings Bug: angleproject:4757 Change-Id: I8ff6cb1277bf31ed8d6af667aa59ab8029633fe0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2247488 Commit-Queue: Jamie Madill <jmadill@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>
Etienne Bergeron 9e83c151 2020-06-04T19:53:36 Active the delegate worker pool for chromium (3/3) This CL is activating the delegate WorkerPool in Chromium. Must land after: https://chromium-review.googlesource.com/c/angle/angle/+/2231708 Related CLs: 1) https://chromium-review.googlesource.com/c/angle/angle/+/2231708 2) https://chromium-review.googlesource.com/c/chromium/src/+/2231864 3) [this CL] Bug: chromium:1091259 Change-Id: I62c7175fec2846fee014702d8561eeaf48ca93de Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2231710 Commit-Queue: Etienne Bergeron <etienneb@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Xiaoxuan Liu de4611c9 2020-06-04T13:44:17 Vulkan: Update eglDupNativeFenceFDANDROID() implementation. When exporting vkfence FD with vkGetFenceFdKHR() in SYNC_FD semantic, vkfence could be reset. Dup and store the SYNC_FD created vkfence's FD in SyncHelperNativeFence by exporting FD during initializeWithFd() meanwhile make the eglDupNativeFenceFDANDROID() only dup the mNativeFenceFd in SyncHelperNativeFence. Test: angle_end2end_tests --gtest_filter=EGLSyncTest.AndroidNativeFence_* Bug: angleproject:2517 Change-Id: I354185d26d0fda72baeb61702c879ed5665db6ec Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2230062 Reviewed-by: Jeff Vigil <j.vigil@samsung.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi 340da145 2020-06-16T10:58:47 Vulkan: Disable 1xMSAA on integer formats too This was pending swiftshader support for 4xMSAA support for integer formats, which is long done. Bug: angleproject:4197 Change-Id: I843a9674e20a48b5387bd67b8c0efc8617841382 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2248198 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Ian Elliott <ianelliott@google.com>
Shahbaz Youssefi 51487e1e 2020-06-15T23:35:39 Add mipmap generation perftest Bug: angleproject:4551 Change-Id: Iae205674029888447d070e0df30b65828b6fa6eb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2246732 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Tim Van Patten 68fcfea3 2020-05-29T12:34:08 Vulkan: support format aliasing in texture images glBindImageTexture specifies the format which should be used to interpret the texture data and this format is independent from the texture's own internal format. This change allows the VkImage's format to be mutable to handle glBindImageTexture calls with different formats. Bug: angleproject:3885 Test: dEQP-GLES31.functional.image_load_store.*.format_reinterpret.* Change-Id: Ia1ad762b4ccae0f510c8b4918781234fcf51c5f1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2222610 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Tim Van Patten <timvp@google.com>
Mohan Maiya 33c28e35 2020-06-12T08:17:47 Optimize thread specific storage and retrieval with native ASM Android reserves specific TLS slots to store thread specific values. Given that the Context object gets queried on every call we leverage Android's ASM code to improve the speed of this operation. TLS_SLOT_OPENGL is an unused slot in Android and using that in combination with the ASM code,rather than using the pthread API, allows angle to store and retrieve thread specific context object much more efficiently. Bug: angleproject:4717 Change-Id: I27a117fe82e62407e01c8c372918b866aaea9ee5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2231883 Commit-Queue: Mohan Maiya <m.maiya@samsung.com> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@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>
Tim Van Patten 289365fa 2020-06-12T17:09:13 Remove ProgramExecutable::mProgram[Pipeline]State Remove the ProgramExecutable::mProgram[Pipeline]State pointers. Bug: angleproject:4520 Test: Build/CQ Change-Id: I1717e291ff9beec226bd2888e990b27d8078797c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2243764 Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Stuart Morgan f4e6ae91 2020-06-15T15:56:43 Fixes missing newlines in headers Bug: angleproject:4757 Change-Id: Ic5d9bb62834cbd66463086c298ebcaeb3eb44ad0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2247486 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi b900f4e2 2020-06-12T16:01:58 Vulkan: Use GPU path for copy to sRGB textures To avoid creating aliasing views for sRGB textures, the ImageCopy texture will do/undo sRGB transformation such that the final result is as-if both source and destination views were linear. Possible future optimizations: - If either of source or destination has already been created with the MUTABLE flag, i.e. has a linear view already available, that can be used. - If destination is sRGB but not renderable while its corresponding linear format is, and if the image is already created with the MUTABLE flag, using the linear view would allow the copy to go through the GPU instead of the CPU. Bug: b/157934810 Bug: angleproject:4092 Change-Id: I43aaf882c90e1c60d0d9eb04636c203fc04090a4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2241622 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Antonio Maiorano <amaiorano@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Tim Van Patten ce29916b 2020-06-12T14:40:22 Remove mProgramState from ProgramExecutable::isCompute() ProgramExecutable::isCompute() is being updated to no longer use mProgramState or mProgramPipelineState, as part of the effort to remove those members from ProgramExecutable. Functionally, things are the same for PPOs, but Programs are being updated to use the boolean ProgramExecutable::mIsCompute rather than checking the linked shader stages to determine draw vs compute. Slightly unrelated, but this CL also removes the unused function ProgramPipeline::hasImages() which was missed in one of the earlier CLs in this relation chain. Bug: angleproject:4520 Test: Build/CQ Change-Id: Ief28021310d6d0b1be5b7608a59deb87b0cf591d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2243326 Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tim Van Patten a28efb2f 2020-06-12T13:14:48 Remove mProgramState from ProgramExecutable::updateActiveImages() Use of the member variable mProgramState is being removed to reduce the circular coupling of ProgramExecutable and ProgramState. Bug: angleproject:4520 Test: Build/CQ Change-Id: I31d7e607fb06a374a0b0e1d35eb2a092614badf5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2243323 Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Mohan Maiya bc8199fa 2020-06-15T10:00:01 Vulkan: Ensure tiling mode compatibility while deciding copy path When decided whether to use transfer or the draw path to perform an image to image copy make sure to account for compatibility in tiling modes. Bug: angleproject:4743 Change-Id: I757aab0ac8628f08092dc2dfc39f06d112db5089 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2246527 Commit-Queue: Mohan Maiya <m.maiya@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 959037e0 2020-05-25T15:40:38 Vulkan: Preserve RPs on XFB changes when possible. Instead of unconditonally ending the RenderPass we keep a set of active XFB buffers in the ContextVk. This lets us re-use RPs when we don't write to the same buffer repeatedly. Reduces the RenderPass count in our Manhattan capture from 29->23. Bug: angleproject:4622 Change-Id: I28c2d4d3db1490e5d07be3c48d21fd2cc6ff85d6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2196957 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi d2d8282a 2020-06-14T04:50:22 Refactor 3D/2DArray copy texture tests The test methods were duplicated between 3d and 2d array tests. This change creates common methods that can be called by the two test sets. Additionally: - Input colors are symbolized as they are repeated multiple times. - The color used for unmultiply-alpha test is slightly tweaked to avoid generating exactly x.5 values with undefined rounding. Bug: None Change-Id: If0cf694017724a72976d3d5cb0f54f8c49a0502a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2246319 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Shahbaz Youssefi 7005248b 2020-06-11T16:00:23 Vulkan: Fix glCopyTextureCHROMIUM if source is swizzled A no-swizzle view is added for this use-case. Bug: angleproject:4004 Change-Id: Id654af9a4f520357c91bf2b06501c9e1ea169f11 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2241623 Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Mohan Maiya 1a455f4e 2020-06-12T15:49:46 Vulkan: Set external image's usage flags based on AHB usage flags For vkImages that are backed by external memory we need to derive the VkImageUsageFlags based on the usage flags of the AHB. Bug: angleproject:4739 Change-Id: I92bee943c66f7eadd9b63bb9bf1b59ffe5bc5a37 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2243765 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
shrekshao e6124500 2020-06-02T12:02:55 Fix baseVertex and baseInstance with streaming attributes baseInstance: Fixed by adding the intial offset to each copy for streaming attributes baseVertex: make sure mShaderConstants.onFirstVertexChange takes in correct firstVertex value for dynamic attribs (where firstVertex passed to StateManager11::updateState already include baseVertex) Bug: chromium:1078330, angleproject:3402 Change-Id: I289c4e3733fdf6f78af8c3adee84112c05a5abce Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2227022 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shrek Shao <shrekshao@google.com>
Geoff Lang ec010006 2020-06-15T16:36:05 Revert "Remove redundant BlendStateArray tracking" This reverts commit c746ac65e9d64aa74065ee30d7e7e810088c429c. Reason for revert: Possible performance regression BUG=chromium:1085996 Original change's description: > Remove redundant BlendStateArray tracking > > Keep legacy BlendState for now. > > Bug: angleproject:4394 > Change-Id: Icba2b2f3a071d0f838a5480ff94869d35b776d94 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2169093 > Reviewed-by: Geoff Lang <geofflang@chromium.org> > Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> > Commit-Queue: Kenneth Russell <kbr@chromium.org> TBR=geofflang@chromium.org,kbr@chromium.org,jonahr@google.com,jmadill@chromium.org,lexa.knyazev@gmail.com # Not skipping CQ checks because original CL landed > 1 day ago. Bug: angleproject:4394 Change-Id: Id05b382e951a7256805cffe696325b6b6d940e96 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2246719 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 59656899 2020-06-15T12:48:23 Don't expose pixmap support from DisplayEGL. BUG=angleproject:4560 BUG=chromium:1094634 Change-Id: Iebab16207eb21175b6d2f1236502bb8a26c43d90 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2246322 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Mohan Maiya 20dbfdd9 2020-06-15T11:29:05 Vulkan: Addition of ImageRespecificationTest There is a bug in the way the Vulkan backend handles image respecification. Add 2 tests that expose this bug - 1. When texture format is swizzled it needs to destroy only the read image views 2. When texture is respecified using external images the FramebufferVk cache has a bug where it doesn't invalidate the object with the orphaned attachment Bug: angleproject:4651 Test: angle_end2end_tests.exe --gtest_filter=ImageRespecificationTest* Change-Id: Id564a700ea44eb4f804694613f597320ea811c07 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2246532 Commit-Queue: Mohan Maiya <m.maiya@samsung.com> Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Manh Nguyen 46594c96 2020-06-11T15:20:10 Fill in missing GL methods for TextureTest Bug: angleproject:4732 Change-Id: Ic475e29b6ca641029243712115d6a578a48c85f0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2241624 Commit-Queue: Manh Nguyen <nguyenmh@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Manh Nguyen 09be185d 2020-06-05T13:30:18 Fill in missing GL methods and fix crashes for MultiviewDrawTest Implements the capture of the following methods 1.glDrawArraysIndirect 2.glDrawElementsIndirect 3.glGetQueryObjectuivEXT Fix glVertexAttribPointer replay compilation error Bug: angleproject:4692 Bug: angleproject:4693 Change-Id: Id8b10354bad6b90beeb93837dcdb602ba8292659 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2233398 Commit-Queue: Manh Nguyen <nguyenmh@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Lingfeng Yang 98d0f30c 2020-06-10T22:04:03 Add to names map even if it's a prefixed name Previously, we skipped adding to the names map if it was a prefixed name. This prevents the mapping of glsl es to glsl names from being accessible by an outside client. Bug: b/158533223 Change-Id: Ib1d1e229ceb6d836df8dd0c30ea848b081a40cad Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2240637 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Lingfeng Yang <lfy@google.com> Commit-Queue: Lingfeng Yang <lfy@google.com>
Kenneth Russell af727792 2020-06-10T21:55:43 Improve EGL_ANGLE_power_preference on dual-GPU MacBook Pros. Add the ability to release and reacquire the high-power GPU, and to respond to changes in the active GPU. In Chromium, the GPU process can not access the WindowServer. An external process must inform ANGLE that the active GPU has changed, and that ANGLE should switch its internal context to the new GPU. Incorporates a couple of functions from WebKit, used with permission, to effect this GPU switch. A follow-on change in Chromium which uses these new APIs will make the existing dual-GPU tests pass with ANGLE and the passthrough command decoder. Carry forward Chromium's workaround of disabling GPU switching on older MacBook Pros to ensure stability. Document the process of adding new EGL extensions to ANGLE. Bug: chromium:1091824 Change-Id: I499739156e851b493555d4d6e4aef87d8b97fa31 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2240638 Commit-Queue: Kenneth Russell <kbr@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Kenneth Russell 0bd0a913 2020-06-12T15:24:55 Skip FramebufferTest_ES3. TextureAttachmentMipLevelsReadBack on Mac ASAN. Reporting out-of-range accesses in the OpenGL driver. Bug: angleproject:4737 Tbr: syoussefi@chromium.org Change-Id: Ib2598ba569c395ec39687fd1395149be5110f37f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2243757 Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Kenneth Russell <kbr@chromium.org>
Tim Van Patten c5014259 2020-06-11T23:30:47 Move ProgramState::mImageBindings to ProgramExecutable The member ProgramState::mImageBindings is being moved to ProgramExecutable to allow ProgramExecutable::getImageBindings() to answer the query without relying on the Program[Pipeline]State. Bug: angleproject:4520 Test: Build/CQ Change-Id: Ia4934c8e57b5ba49b0a399dcad7c1b324c43385d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2241750 Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Tim Van Patten <timvp@google.com>
Geoff Lang 4e6f6545 2020-04-16T16:31:24 GLX: Support X11 pixmaps Add support for creating EGL pixmaps from X11 pixmaps using GLX. Pixmaps are needed for various external APIs such as VAAPI. Add support for EGL_NOK_texture_from_pixmap to allow binding pixmaps to textures. BUG=angleproject:4560 Change-Id: I4a6d3ad7e87151ff5317bbdaaf093ac1b46daf5f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2153805 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Mohan Maiya 0eae0d6c 2020-06-11T08:53:39 Vulkan: Set external image's tiling mode based on AHB usage flags For external images which can be accessed by CPU, the tiling mode should be linear. So, query the usage of the Android Hardware Buffer and derive the tiling mode based on AHB usage flags. Bug: angleproject:4735 Change-Id: I1b91c6800d414d73091032e40d8e4f1e8f6c101b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2241780 Commit-Queue: Mohan Maiya <m.maiya@samsung.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Tim Van Patten c117e360 2020-06-05T15:48:36 Move ProgramState::mSamplerBindings to ProgramExecutable The member ProgramState::mSamplerBindings is being moved to ProgramExecutable to allow ProgramExecutable::getSamplerBindings() to answer the query without relying on the Program[Pipeline]State. Bug: angleproject:4520 Test: Build/CQ Change-Id: I0daa997424d6e2aa5172e0731da221db72063435 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2233363 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Commit-Queue: Tim Van Patten <timvp@google.com>
Jamie Madill 11e26fa0 2020-06-11T13:32:10 Allow running Samples against native GL. Useful for perf testing/comparison. Bug: angleproject:4729 Change-Id: Ic46424570dcef0a30d506962f546910ba7440595 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2241620 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Ian Elliott 12ed3b6e 2020-06-11T14:16:25 Vulkan: Create a pre-rotation BlitFramebuffer test This test creates a predictable 256x256 pattern in an FBO (i.e. x-axis is red and y-axis is green), and then uses glBlitFramebuffer() to blit all or different halves of that FBO to the default framebuffer (i.e. the Vulkan swapchain). When run on a rotated Android device, the predictable pattern helps to determine if/how anything is wrong. Bug: b/158337857 Change-Id: I858964fcb34b8ee5fbdbeade0e1dacaafaea7fa3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2236994 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Ian Elliott <ianelliott@google.com> Commit-Queue: Ian Elliott <ianelliott@google.com>
Tim Van Patten b55f0f78 2020-06-02T18:01:24 Compress Program binaries saved in blob cache The Android blob cache has a limit of 2MB, so ANGLE should compress the Program binaries that are saved into it to maximize its effectiveness. ANGLE will gzip the program binaries before being stored in the blob cache and then uncompress them when retrieved. Using gzip, the binaries are compressed to ~25% of their size when running the T-Rex benchmark. Some examples (in bytes): Uncompressed: 20193, Compressed: 4455 Uncompressed: 8767, Compressed: 2369 Uncompressed: 11144, Compressed: 2927 This doesn't appear to affect the T-Rex benchmark since all of the programs are loaded/decompressed as part of the benchmark initialization, and the programs are small enough to all fit in the blob cache without compression. Bug: b/155184635 Test: T-Rex, CQ Change-Id: Ie6a101c32ab5fd49baae1cb7aecdd26a934e15af Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2227529 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Tim Van Patten <timvp@google.com>
Shahbaz Youssefi ff2ebce4 2020-06-10T22:46:17 Vulkan: allow texture copies from one mip to another As a first implementation, this makes the copy go through the staging buffer. Once anglebug.com/4719 is implemented, this can be optimized to perform the copy directly. Bug: angleproject:2914 Bug: angleproject:4274 Change-Id: I2c9863381f54c3467ca939d049336960c21f60b0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2240671 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi ac44f8c5 2020-06-05T23:30:53 Vulkan: Apply SPIR-V optimization to internal shaders Shaves about 40KB from binary size. Bug: angleproject:2022 Bug: angleproject:3432 Change-Id: I008c18e0040b1bafe022087113681e2ace6eb7b8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1616963 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi 15cff312 2020-06-10T22:44:22 Move lod-sampling shaders to shader utils Will be reused in a test in a following change. Bug: angleproject:2914 Change-Id: I4e255d5c762f2a6c064b06c558519d82ec6ead5f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2239085 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Shahbaz Youssefi 000a79f1 2020-06-04T23:06:58 Vulkan: Better handling of texture level redefinition If a texture level is being redefined, there are two scenarios to consider: 1. The level is outside the base/max level, for which the image was allocated. 2. The level is within the base/max level, but it's being redefined to a different size or format. In the former case, we simply don't need to release the image. The latter case itself has two possibilities: 2.1. There is only one level in the image. 2.2. There are multiple levels in the image. In case 2.1, the whole image is being redefined (as it has only a single level), so the image can (and should) be released. Prior to this change, this behavior was adopted for all cases. This change retains this behavior for this case only. In case 2.2, the texture is becoming incomplete. However, the image shouldn't yet be released because another one of its mips may be bound to a framebuffer. In such cases as glCopyTexImage2D(), that framebuffer may in fact be the source of the copy operation (which would be destroyed if the image is released). If the base/max level of the texture doesn't change, redefining the level and making the texture incomplete doesn't make the framebuffer incomplete; this is achieved at the same time by not releasing the image. This change ensures that updates to the redefined level are staged in cases 1 and 2.2. Bug: angleproject:4274 Change-Id: I3fac3203c2fbbc16e8e4a35b1334b767120b2dcf Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2230853 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill aad69df9 2020-06-11T13:27:52 Run TracePerfTests in WGL configs. Uses the "native" naming pattern. Bug: angleproject:4728 Change-Id: I28cafcdb8c5c1fb48bba51adeca641e88bfe3446 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2241619 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Tim Van Patten c39d25ae 2020-06-01T12:42:33 Update State to check mExecutable A user may be using Program Pipelines, rather than monolithic Programs, so State should check if mExecutable is valid, rather than mProgram, since that indicates the presence of either a PPO or a Program. Exercising these paths requires additional tests: SimpleStateChangeTestComputeES31PPO::DeleteImageTextureInUse() Texture2DTestES31PPO::TexStorage() Texture2DTestES31PPO::SingleTextureMultipleSamplers() These new tests exposed bugs in the PPO implementation where updates to the active Program's ProgramExecutable were not being propagated to the Executables of the PPO's containing that Program. In these particular cases, updates to the active samplers/images/textures were not being copied to the PPO's Executable. Bug: angleproject:3570 Test: end2end tests listed above Change-Id: I297cac2d0367f180dd7fa01a1ee7ba53996867c4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2225417 Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Etienne Bergeron 707868ae 2020-06-04T19:46:08 Implement a WorkerPool delegate to execute background task (1/3) This CL is adding a WorkerPool delegate to allow an embedder to post task on a custom thread pool. The target for this code is Chromium. The plan is to post tasks into the Chromium ThreadPool. Related CLs: 1) [this] 2) https://chromium-review.googlesource.com/c/chromium/src/+/2231864 3) https://chromium-review.googlesource.com/c/angle/angle/+/2231710 Bug: chromium:1091259 Change-Id: Ib990b06d4672b6f859d04b97ac4311a7a80ef7a9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2231708 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Charlie Lao d87927c1 2020-06-10T17:40:28 Vulkan: Initialize stencil ops with DontCare for color attachments Even though they shouldn't matter for color attachment, but Qualcomm's performance validation layer is producing tons of this warning message. This basically always set to DontCare even for color attachment. Bug: b/158708100 Change-Id: Iaba39e099c9cc4716548f337ded74fa5f29bb654 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2240498 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Tim Van Patten 555e11e3 2020-06-04T13:02:31 Add android:exported to AndroidManifest.xml Any app that targets S+ will need to have an explicit android:exported defined if intent filters are present for an activity/service/receiver. Apps failing this requirement will fail to install. While ANGLE doesn't explicitly target S, to prevent hitting this in the future we should add android:exported to its AndroidManifest.xml since we use several receiver intent-filters. Bug: b/158221251 Test: CQ Change-Id: I565c6ff5aaf25380d7e6ad2418612ab10f4c185f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2231249 Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Tim Van Patten <timvp@google.com>
Shahbaz Youssefi da980b40 2020-06-10T23:19:40 Vulkan: Reduce ConvertVertex.comp variations Handling RGB10A2 and A2BGR10 formats are made through dynamic flags. One or two `if` checks (based on format) is not worth doubling the number of shaders. Shaves about 50KB from binary size. Bug: angleproject:2022 Bug: chromium:1084580 Change-Id: Ia603a935b66d002dbacdee9342950ceed4042f86 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2240672 Reviewed-by: Mohan Maiya <m.maiya@samsung.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Tobin Ehlis b50541b2 2020-01-14T09:07:03 Vulkan:Adding key perf trace markers Adding trace markers in performance-critical functions. Primary areas of interest are command buffer processing and cleanup and memory mapping. Bug: b/156403378 Change-Id: Icba53024771711d79f7eee7085bf4dae0e033e63 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2002689 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Tobin Ehlis <tobine@google.com> Commit-Queue: Tobin Ehlis <tobine@google.com>
Shahbaz Youssefi d8074714 2020-06-08T13:41:40 Vulkan: add autogen dependency to shader variations files Bug: angleproject:3432 Change-Id: If16e5264d539c6a3944a60f4d28f4e6aa5420fe3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2235353 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tim Van Patten db3ef872 2020-05-28T20:04:06 Move ProgramState::mDefaultUniformRange to ProgramExecutable The member ProgramState::mDefaultUniformRange is being moved to ProgramExecutable to allow ProgramExecutable::hasDefaultUniforms() to answer the query without relying on the Program[Pipeline]State. Bug: angleproject:4520 Test: Build/CQ Change-Id: Ic0d78b7193a28962b7ab6480964f8920a23bb7be Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2220776 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Commit-Queue: Tim Van Patten <timvp@google.com>
Cody Northrop 53c3ea8f 2020-06-05T17:21:44 Perf: Add a trace of Angry Birds 2 Test: angle_perftests --gtest_filter="*Trace*" Bug: b/157672184 Change-Id: If4885398aff73ce774987fbeefb63d140f7fab1d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2233367 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Cody Northrop a6c8e1c0 2020-06-04T17:01:22 Capture/Replay: Fix default uniform matrix capture We were only reading back a single location, rather than multiple locations required for arrayed types. Test: Angry Birds 2 MEC Bug: b/157672184 Change-Id: I8029dc5ece3b9dbff7c3c84c188996e622362767 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2231804 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi 3d2de99e 2020-06-09T01:14:42 Vulkan: Fix RTs attached to textures with non-0 mip Cleared confusion between GL level indices and VK level indices by adding the corresponding suffix to variables and function arguments. A handful of places that sent one index and expected the other are fixed. The conversion between the two is given by: levelIndexGL = levelIndexVk + baseLevel; Bug: angleproject:4695 Change-Id: I84ecbaf867d00a40fb39b6db7ad79658016f4d9a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2235362 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Etienne Bergeron d80d9044 2020-06-08T14:56:14 Reland "Add trace event to angle Program compilation API" This reverts commit be04c04729df41e359ebce625690af4368f12142. Reason for revert: The appropriate fix for ASAN is landed here: https://chromium-review.googlesource.com/ c/angle/angle/+/2233410 Original change's description: > Revert "Add trace event to angle Program compilation API" > > This reverts commit 7685a79eb4a38c212b67d4a830958d69b409bc4c. > > Reason for revert: Causing TSAN failures, see issue. > > Bug: chromium:1091723 > > Original change's description: > > Add trace event to angle Program compilation API > > > > Bug: chromium:1064662 > > Change-Id: I2ee48718ff3946ab9307ba27177a02858bf436b0 > > Reviewed-on: https://chromium-review.googlesource.com/ c/angle/angle/+/2230789 > > Commit-Queue: Etienne Bergeron <etienneb@chromium.org> > > Reviewed-by: Jamie Madill <jmadill@chromium.org> > > TBR=etienneb@chromium.org,jmadill@chromium.org > > Change-Id: I92148677ac53c1ff7a9bc880e0a0834a03fc92ea > No-Presubmit: true > No-Tree-Checks: true > No-Try: true > Bug: chromium:1064662 > Reviewed-on: https://chromium-review.googlesource.com/ c/angle/angle/+/2231870 > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Commit-Queue: Jamie Madill <jmadill@chromium.org> TBR=etienneb@chromium.org,jmadill@chromium.org # Not skipping CQ checks because original CL landed > 1 day ago. Bug: chromium:1091723, chromium:1064662 Change-Id: I6e2ccfcb29fcddc5e0bffee43d3a737c8a6a75ea Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2235915 Commit-Queue: Etienne Bergeron <etienneb@chromium.org> Reviewed-by: Etienne Bergeron <etienneb@chromium.org>
Etienne Bergeron f8fd9cfb 2020-06-09T10:52:57 Fix racy GetCategory with trace_event See racy trace_event: http://crbug.com/1091723 The trace event macros were racy because of this code: INTERNAL_TRACE_EVENT_GET_CATEGORY_INFO(...) The macro is using a static variable which is not thread-safe. The design of tracing was racy (by design) and rely on the fact that addTraceEvent(...) is threadsafe internally via TraceLog::lock_ This CL is replacing the static variable with a scope (C++11) pattern. The static variable is guaranted (C++) to be atomic and it is implemented efficiently. see: ยง6.7 [stmt.dcl] p4 " If control enters the declaration concurrently while the variable is being initialized, the concurrent execution shall wait for completion of the initialization. " Bug to track follow-up migration: http://anglebug.com/4702 Bug: chromium:1091259, chromium:1091723 Change-Id: If67b501e6e826ccf603eb2349c3f0aa6272c9a52 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2233410 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Cody Northrop 22c95964 2020-06-04T17:00:52 Capture/Replay: Support buffer map/unmap state during MEC Angry Birds 2 is the first app we've targeted that maps buffers across frame boundaries. This exposed some gaps and assumptions we had in the code, and required additional support for MEC. To support this, we track each buffer's starting map/unmap state and how it changes throughout the trace. Then during Reset, we emit calls to return them to the correct state: void ResetContext3Replay() { ... glBindBuffer(GL_ARRAY_BUFFER, gBufferMap[546]); glUnmapBuffer(GL_ARRAY_BUFFER); glBindBuffer(GL_ARRAY_BUFFER, gBufferMap[550]); gMappedBufferData[gBufferMap[550]] = glMapBufferRange(GL_ARRAY_BUFFER, 0, 8192, GL_MAP_WRITE_BIT); ... } Test: MEC of Angry Birds 2 Bug: angleproject:4599 Bug: b/157672184 Change-Id: I5c73ca4d4eba7f1ecea01467ae887bae7f2d27fd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2231803 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Qin Jiajia 5abc0c56 2020-06-09T14:32:28 Fix failures that alpha channel is not correct Previously, the alpha channel was not set which resulted the intended swapchain buffer format is B8G8R8X8_UNORM. It means that the format supports 8 bits for each color channel and 8 bits unused. However, in our test case, we expect to compare the alpha channel. So we should set alpha channel explicitly. Bug: angleproject:4575 Bug: angleproject:4576 Change-Id: Ic26ee81a6a34dc44d0ae32e3dc463e9afa16e05c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2237189 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi 8a7b3d61 2020-06-08T23:23:56 Update glslang_validator binary for Linux. This binary was updated using update_glslang_binary.py. Please see instructions in tools/glslang/README.md. Bug: None Change-Id: I1aed97de25baa3cb47ae81b63a70339a962d957d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2235361 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi dbb18b53 2020-06-05T15:23:17 Add texture base-level related tests Bug: angleproject:4695 Bug: angleproject:4696 Bug: angleproject:4698 Bug: angleproject:4699 Bug: angleproject:4701 Change-Id: Ia49e2100851c029b1ae05bc1398528170d71c3cb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2233402 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Cody Northrop 5d7014e4 2020-06-05T15:38:47 Unmap buffers targeted by glBufferData When glBufferData is called on a mapped buffer, per the OpenGL ES 3.0 spec it is implicitly unmapped. Later calls to glMapBufferRange should not throw an error. This CL unmaps the buffer in BufferData if it is already mapped. Also adds a new test that verfies the behavior. Test: angle_end2end_tests --gtest_filter=BufferDataTestES3.BufferDataUnmap/* Test: Angry Birds 2 MEC Bug: angleproject:4599 Bug: b/157672184 Change-Id: I1a1e458aa5f50da4dfde9f6847f71cd5b6f6c08a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2233365 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Manh Nguyen <nguyenmh@google.com>
Cody Northrop 15328f69 2020-06-04T16:59:22 Capture/Replay: Don't assert when reading combined depth/stencil We can't actually read them back at the moment, so this needs a proper fix. In the meantime, the apps we are tracking don't need this value at the beginning of the trace. Test: Angry Birds 2 MEC Bug: angleproject:3662 Bug: angleproject:4688 Bug: b/157672184 Change-Id: I67190092bcce7080edc69714f1ca1194c37d54fb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2231802 Reviewed-by: Manh Nguyen <nguyenmh@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Cody Northrop 4360c6b9 2020-06-04T16:58:16 Perf: Ensure last frame is replayed for traces This is now required for upcoming buffer mapping resets. Test: Angry Birds 2 MEC Bug: b/157672184 Change-Id: I6358acf42ca9b92bfff621f12f207be7c3655e52 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2231801 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Manh Nguyen 66ec30a7 2020-06-03T10:45:34 Fix ExceedMaxVertexAtomicCounters test crash with FrameCapture The AtomicCounterBufferTest31.ExceedMaxVertexAtomicCounters crash is because when program linking fails, as it should for this test, the code tries to get the info log by calling glGetProgramInfoLog. The FrameCapture capturing this call currently tries to make sure that the program is linked. However, glGetProgramInfoLog does not require the program to be linked to execute. Bug: angleproject:4679 Change-Id: Ibbb87d6437152e9eb225e411100b1729e56e4c4a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2227857 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Manh Nguyen <nguyenmh@google.com>
Tim Van Patten 97bb5a64 2020-06-04T12:30:52 Implement EGL_CreatePlatformWindowSurface() The function EGL_CreatePlatformWindowSurface() was introduced by EGL 1.5 and is required by dEQP starting with 3.2.6. ANGLE has worked around EGL_CreatePlatformWindowSurface() being unimplemented by submitting conformance on 3.2.5, but Android's internal master uses ToT dEQP so we need to implement this to pass CTS and enable SWANGLE on CuttleFish. Bug: b/157670307 Test: Android CtsDeqpTestCases, CQ Change-Id: Ib21929701c7881a7dc3a22196e48139a5c8e2ddf Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2231247 Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Tim Van Patten <timvp@google.com>
Antonio Maiorano 111a4d97 2020-06-05T16:56:45 Fix copy texture to sRGB in ANGLE/VK Like the GL backend, use the CPU copy path rather than the draw path when the target is sRGB. Fixes the following WebGL tests: conformance2/textures/canvas/tex-2d-srgb8_alpha8-rgba-unsigned_byte.html conformance2/textures/canvas/tex-2d-srgb8-rgb-unsigned_byte.html conformance2/textures/image_bitmap_from_canvas/tex-2d-srgb8_alpha8-rgba-unsigned_byte.html conformance2/textures/image_bitmap_from_canvas/tex-2d-srgb8-rgb-unsigned_byte.html Re-enable CopyTextureTestES3.ES3UnormFormats for Vulkan as they now pass with this change. Bug: b/157934810 Bug: angleproject:4092 Change-Id: I6b76e5f4345d204a084f5483e206c5bb4ff2f139 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2233405 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Antonio Maiorano <amaiorano@google.com>
James Darpinian 336e8915 2020-05-29T16:09:47 Workaround broken copyTexImage2D on iOS Use BlitGL to reimplement copyTex[Sub]Image2D on iOS. Bug: angleproject:4674 Change-Id: Ie3018d6d33da57797162922410f76557124df4b6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2222718 Commit-Queue: James Darpinian <jdarpinian@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 4038679a 2020-06-05T16:15:01 Vulkan: Don't invalidate index buffers on vertex change. The vertex state should not affect index state changes. Split off from a larger CL. Bug: angleproject:4622 Change-Id: Ie7c3148a16b5da89b79d95e1de130a1ff0e6c634 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2233404 Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Yang Gu e9a0cb87 2020-05-18T17:45:52 Fix assertion when running tests without suffix on Windows On Windows, we may omit suffix ".exe" when running an executable. However, this will trigger an assertion failure in current code and this CL is to fix this issue. Bug: angleproject:4640 Change-Id: I7edfdc0b4a7c590c874817530b19a812018b9288 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2206425 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi d80adf4e 2020-06-03T11:50:04 Vulkan: Remove non-triggering validation error suppression Bug: angleproject:4510 Change-Id: I04f989943ec2abe17cfe90f32a276e20c5a42cea Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2227811 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 6fad384b 2020-06-04T15:36:17 Vulkan: Add test for RT created from mip-incomplete texture The Vulkan backend creates an image with 3 mips, while it should only create one with a single mip. Bug: angleproject:4686 Change-Id: Ide7f9612c9440bfb9d9650637f6a1ad42be61208 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2230797 Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill 6b946a7b 2020-06-05T16:04:34 Vulkan: Zero-init ContextVk dirty bit handlers. This allows for a better debugging experience and can solve some potential invalid ASSERTs due to some dirty bit handlers not being initialized. Bug: angleproject:4622 Change-Id: Ib34e35dea6c6c7de250ae6600576f0324c150ae6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2233403 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Geoff Lang 60803838 2020-05-20T17:24:49 GL: Work around drivers that generate mipmaps in linear color space Mac drivers generate mipmaps in linear color space. To work around this, copy the sRGB texture to a linear texture, generate mipmaps and then copy back. TEST=conformance2/textures/misc/tex-srgb-mipmap.html BUG=angleproject:4646 Change-Id: I8675d0ab004bcd2985f685d64cbb84deff5f1c86 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2211083 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Jamie Madill 9fa671d5 2020-06-05T14:19:18 Make GLES 1 tests use ANGLE EGL headers. This will allow us to more easily support a different test target topology for the standalone test harness that uses an intermediate source_set. Also it's better in the long run to only have to worry about one set of EGL headers. Bug: angleproject:3162 Change-Id: I738dbb68df1abc0c0569748e18d6826914d90a52 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2233399 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>