src/libANGLE


Log

Author Commit Date CI Message
Yuly Novikov 5a8eab96 2024-08-27T10:07:26 Revert "Vulkan: Expose float control properties as angle features" This reverts commit 027cbe1a071f41a09d596c4baa243a0abc3d1a86. Reason for revert: removes needed suppressions, breaking bots: https://ci.chromium.org/ui/p/angle/builders/ci/win-exp-test/569/overview https://ci.chromium.org/ui/p/angle/builders/ci/linux-exp-test/810/overview https://ci.chromium.org/ui/p/angle/builders/ci/android-arm64-exp-s22-test/1060/overview Original change's description: > Vulkan: Expose float control properties as angle features > > The different fp configuration that a vulkan backend supports are > exposed through `VkPhysicalDeviceFloatControlsProperties`. Expose these > as angle features that api's implementations can query. > > The autogen files are changes as reported by running `python3 > scripts/run_code_generation.py` script. > > Bug: angleproject:360031000 > Change-Id: I038cbf2c9e2b10916697994782ef73b35a1caf12 > Signed-off-by: Gowtham Tammana <g.tammana@samsung.com> > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5798053 > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Reviewed-by: Charlie Lao <cclao@google.com> Bug: angleproject:360031000 Change-Id: I88c0a083725320b5e1a8302a50f67d41cbf5c089 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5816829 Auto-Submit: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Gowtham Tammana 027cbe1a 2024-08-13T17:27:27 Vulkan: Expose float control properties as angle features The different fp configuration that a vulkan backend supports are exposed through `VkPhysicalDeviceFloatControlsProperties`. Expose these as angle features that api's implementations can query. The autogen files are changes as reported by running `python3 scripts/run_code_generation.py` script. Bug: angleproject:360031000 Change-Id: I038cbf2c9e2b10916697994782ef73b35a1caf12 Signed-off-by: Gowtham Tammana <g.tammana@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5798053 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Austin Annestrand a2602533 2024-08-16T15:31:43 CL/VK: Update zero-enqueue validation checks According to the spec: CL_INVALID_GLOBAL_WORK_SIZE if global_work_size is NULL or if any of the values specified in global_work_size[0], …​ global_work_size[work_dim - 1] are 0. Returning this error code under these circumstances is deprecated by version 2.1. Since ANGLE supports OpenCL 3.0, we need to remove our "gws[dim] != 0" assert since this is no longer an error. Also adding missing check for LWS[dim] == 0 case since validationCL does not check for this prior to performing a modulo operation. Bug: angleproject:361750102 Tests-Fixed: OCLCTS.test_api.zero_sized_enqueue Change-Id: I02f302fd988bc37e3b52aeea30586843a47cadfd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5807300 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
Austin Annestrand c34e8c75 2024-08-16T14:06:10 CL: Platform check for ValidateCreateContextFromType Bug: angleproject:42266872 Change-Id: Iaf19a2bb6ca1e1a1ce7b02852a3e4fd5290bd557 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5807299 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Alexey Knyazev 6ef39db0 2024-08-20T00:00:00 Metal: Remove obsolete compile guards for texture helpers MTLDevice.supports32BitFloatFiltering - macOS 11.0 (min compile 12.0, min deploy 10.15) - iOS 14.0 (min compile 17.0, min deploy 15.0) - tvOS 16.0 (min compile 17.0, min deploy 17.0) MTLDevice.supportsBCTextureCompression - macOS 11.0 (min compile 12.0, min deploy 10.15) - iOS 16.4 (min compile 17.0, min deploy 15.0) - tvOS 16.4 (min compile 17.0, min deploy 17.0) MTLPixelFormatPVRTC* enums - macOS 11.0 (min compile 12.0) - iOS 8.0 (min compile 17.0) - tvOS 9.0 (min compile 17.0) Bug: angleproject:360147119 Change-Id: Iafb010efc233f9c677a2c6f65cb4efdf0bb9cf9c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5805290 Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Alexey Knyazev 939fafc8 2024-08-20T00:00:00 Metal: Remove MSL version compile guards MTLLanguageVersion1_0 - Deprecated MTLLanguageVersion2_3 - macOS 11.0 (min compile 12.0, min deploy 10.15) - iOS/tvOS 14.0 (min compile 17.0, min deploy 15.0) MTLLanguageVersion2_4 - macOS 12.0 (min compile 12.0, min deploy 10.15) - iOS/tvOS 15.0 (min compile 17.0, min deploy 15.0) Bug: angleproject:360147119 Change-Id: I4a0da9d92ef86e899766bc860f3bc6e7e614f4a9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5806332 Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Geoff Lang e10e31ed 2024-08-26T12:56:42 WebGPU: Add error handling macros for debugging. Add a ANGLE_WGPU_SCOPED_DEBUG_TRY to create an error scope, execute some commands and pop the scope in builds with assertions enabled. A follow-up with full error handling at frame boundaries is still needed. Bug: angleproject:362191737 Change-Id: I4af9e1587f6d70bf14a3f6435b487e26424624ef Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5813006 Reviewed-by: Matthew Denton <mpdenton@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Yuly Novikov 95c30276 2024-08-26T18:14:30 Don't use VK_GOOGLE_surfaceless_query on Samsung S24 Xclipse Apply S22 workaround on S24 as well, tentative fix for bad traces. Bug: b/362253922 Change-Id: I5a04741d7465139f86de5baadbf774eed172b4e5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5812323 Auto-Submit: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Alexey Knyazev 966d0a1a 2024-08-20T00:00:00 Metal: Cleanup memoryless storage mode support detection Bug: angleproject:360147119 Change-Id: Ic47f1d84e748f65194aa819a39418db66b1948c3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5802956 Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com>
Alexey Knyazev 003737c8 2024-08-20T00:00:00 Metal: Adjust texture storage mode compile guards Used managed mode only for macOS and Mac Catalyst compile targets. Fixed compilation for visionOS. Bug: angleproject:360147119 Change-Id: I88fae28ff6d1ecb5ba303d32c4a3874bf3f8aa87 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5802959 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Alexey Knyazev a36c459e 2024-08-20T00:00:00 Metal: Remove redundant symbol redeclarations MTLBlitOptionRowLinearPVRTC - macOS 11.0 (min compile 12.0) - iOS/tvOS 9.0 (min compile 17.0) MTLBarrierScope - macOS 10.14 (min compile 12.0) - iOS/tvOS 12.0 (min compile 17.0) MTLBarrierScopeRenderTargets - Moved compile guards to call sites MTLRenderStages, MTLRenderStageVertex, MTLRenderStageFragment - macOS 10.13 (min compile 12.0) - iOS/tvOS 10.0 (min compile 17.0) Bug: angleproject:360147119 Change-Id: I7dac46accde63be486a7de918284bbd6e8367a4e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5806896 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Alexey Knyazev 1f1b7426 2024-08-20T00:00:00 Metal: Remove compile guards for preserveInvariance MTLCompileOptions.preserveInvariance - macOS 11.0 (min compile 12.0, min deploy 10.15) - iOS/tvOS 14.0 (min compile 17.0, min deploy 15.0) Bug: angleproject:360147119 Change-Id: I54bd75f3136e907ebb738b855f12b80f3c161b41 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5806898 Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Charlie Lao acf63b9e 2024-08-22T09:52:41 Vulkan: call traceGpuEvent after queueSerial has been allocated traceGpuEvent() will write to mOutsideRenderPassCommands. This means if we destroy context immediately it will flush OutsideRenderPassCommands. This will trigger assertion that the queueSerialIndex is invalid. This CL moves queueSerialIndex allocation before traceGpuEvent. Bug: b/361570359 Change-Id: I70909ebd23c43c05cb793319b255f81e65a17a9d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5806203 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Greg Schlomoff <gregschlom@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Gowtham Tammana 3f1c47bf 2024-08-13T15:06:40 Vulkan: Add VK_KHR_variable_pointers ext if available Add VK_KHR_variable_pointers exetensions to enabled extension if it is supported. This is needed when SPIR-V 1.4 is supported. Bug: angleproject:360031000 Change-Id: Ia93604ae308c9f304acb3bc39457811401a0ca7b Signed-off-by: Gowtham Tammana <g.tammana@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5789897 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Yuly Novikov 2e35835b 2024-08-23T11:28:54 Suppress new VUIDs VUID-RuntimeSpirv-OpEntryPoint-08743 VUID-RuntimeSpirv-OpEntryPoint-07754 VUID-RuntimeSpirv-maintenance4-06817 Started reporting after VVL roll https://chromium-review.googlesource.com/c/angle/angle/+/5807076 Bug: angleproject:361600662 Change-Id: Ibdf30bd2506366460009f18a4e1f63559d23eb97 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5803266 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com> Auto-Submit: Yuly Novikov <ynovikov@chromium.org>
Charlie Lao 38d5b4d6 2024-08-21T15:49:33 Vulkan: Clean up the CovertVertexBuffer* API Some minor clean up of the API so that the arguments we passed into these two functions CovertVertexBufferGPU and CovertVertexBufferCPU are symmetrical. This CL also factor out the common logic in these two functions into a helper function CalculateOffsetAndVertexCountForConversion(). Bug: b/357622380 Change-Id: I5339850c99d733dfea5039ba74734290f8326bd3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5804529 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Charlie Lao 8fc6d8a8 2024-08-13T09:49:46 Vulkan: Limit vertexBufferConversion to the data within dirtyRange Right now when we do vertex buffer conversion, we always convert from the binding.offset all the way to the end of the buffer, because we do not know who much vertex will be drawn. According to the comment, if we choose to only convert the number of vertices this draw call will be using, then we may end up issuing a lot of conversions in the case that there are many draw calls with small vertex numbers. This CL intends to keep this behavior (i.e, still do the conversion of the data from binding offset to end of the buffer), but apply the optimization that pays attention of mDirtyRange and only convert the portion of data that has actually been modified. Note that the mDirtyRange is the union of all data ranges that has been modified, so may include the unmodified data between two modified ranges. Bug: b/357622380 Change-Id: I91f3dbf4cacb17d3fa4d8d599519865be765557f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5785860 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao 790e0162 2024-08-09T17:11:38 Vulkan: Add dirty range to VertexConversionBuffer class Previously, ConversionBuffer only has a boolean indicates it is dirty or not. This CL adds mDirtyRange to it to indicate which range of data has been modified. The existing dirty boolean has been changed to mEntireBufferDirty so that all the current code will still work. Right now mEntireBufferDirty is always set when we mark it dirty, which means entire buffer gets converted. mDirtyRange has not been used to reduce the data to be converted. Right now the range is always being merged to the existing range and not actually being used in this CL. It will be used in the next CL. Bug: b/357622380 Change-Id: Ibfa702b29011f4e26c511d5db85c07cbf2a4aefb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5778347 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Alexey Knyazev 33c2ff07 2024-08-20T00:00:00 Metal: Remove obsolete watchOS compile guards MTLSamplerAddressModeMirrorClampToEdge: - macOS 10.11 (min compile 12.0, min deploy 10.15) - iOS 14.0 (min compile 17.0, min deploy 15.0) - tvOS 16.0 (min compile 17.0, min deploy 17.0) Bug: angleproject:360147119 Change-Id: I21457e7f0694d09857153199037929f9739eded0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5803986 Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Alexey Knyazev 1dabe52c 2024-08-20T00:00:00 Metal: Remove texture swizzle compile guards Texture swizzle support: - macOS 10.15 (min compile 12.0, min deploy 10.15) - iOS/tvOS 13.0 (min compile 17.0, min deploy 15.0) Bug: angleproject:360147119 Change-Id: If7e59cc094e5bcdb145a54541662d0fe0a989e8d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5803984 Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Alexey Knyazev f551a112 2024-08-20T00:00:00 Metal: Remove obsolete compile guards from the command buffer memoryBarrierWithScope and memoryBarrierWithResources: - macOS 10.14 (min compile 12.0, min deploy 10.15) - iOS/tvOS 12.0 (min compile 17.0, min deploy 15.0) dispatchThreads: - macOS 10.13 (min compile 12.0, min deploy 10.15) - iOS 11.0 (min compile 17.0, min deploy 15.0) - tvOS 14.5 (min compile 17.0, min deploy 15.0) Bug: angleproject:360147119 Change-Id: I05e4e5dac81b4e07c47e0f3a1b7d165ff9406cc3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5804021 Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Le Hoang Quyen f102d75a 2024-08-14T19:52:30 Metal: translate IOSurface pbuffer's GL_RGB to RGBX/BGRX format. Currently when IOSurface is bound to a pbuffer with GL_RGB internal format, we asign angle format=B8G8R8A8_UNORM/R8G8B8A8_UNORM to it. And then disable alpha write to the respective MTLTexture. However, when an implicit MSAA texture is created for the above pbuffer, it will be assigned B8G8R8A8_UNORM/R8G8B8A8_UNORM angle format but has no knowledge about alpha write disable. Consequently, when a render pass uses this implicit MSAA texture, its alpha channel won't be cleared properly and would contain garbage values. In order to avoid the above bug, we should use B8G8R8X8_UNORM/R8G8B8X8_UNORM angle format for the IOSurface pbuffer. This will fix the render corruptions found in chromium:358957665. Bug: angleproject:42261786 Bug: chromium:358957665 Change-Id: I8aa1e24ace2de80dd08e21711445515ba4b339ff Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5788801 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Quyen Le <lehoangquyen@chromium.org>
Kimmo Kinnunen 5cf94ffa 2024-08-20T10:41:40 Metal: Use pipeline rasterSampleCount Use MTLRenderPipelineDescriptor rasterSampleCount instead of sampleCount. This avoids the use of the deprecation macro. Availability: iOS 8.0 (min: 15.0), mac Catalyst 13.1 (min: 16.5), macOS 10.11 (min: 10.15), tvOS 11.0 (min: 15.0), visionOS 1.0+ Bug: angleproject:360147118 Change-Id: I7009a7d7b39ecb763e23f4b97441fb45a64a891d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5797134 Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com> Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
Kimmo Kinnunen 25237423 2024-08-20T15:22:32 Metal: Remove ifdefs for primitive topology class MTLPrimitiveTopologyClass availability iOS 12.0, minimum runtime 15.0. Remove the ifdefs. Hardcoding ANGLE_IOS_DEPLOY_TARGET is dangerous, likely it has never been correct. Remove. Should use __IPHONE_OS_VERSION_MIN_REQUIRED. Bug: angleproject:360147118 Change-Id: I43d7a364fa0237af1ee1f546015ae884fc373b15 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5797141 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com> Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com> Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Charlie Lao 86508e20 2024-08-16T14:56:37 Vulkan: Make VertexConversionBuffer a class And wrap the cache key (i.e, formatID/stride/offset) into a CacheKey struct so that we can easily add more data members. This CL also changes ConversionBuffer from struct to class to have better encapsulation. No functional changes is expected here. Bug: b/357622380 Change-Id: Ieecf5c922b95a940137c8e54657ef3f458c55fc9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5793921 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Charlie Lao a3f9f6c3 2024-08-16T12:12:00 Vulkan: Move VertexConversionBuffer out of BufferVk class This is another preparation CL to make code review easier. In the future CL, VertexConversionBuffer will be used in other files. BufferVk::VertexConversionBuffer is a bit too verbose. Make VertexConversionBuffer a standalone class makes code a bit easier to read. We could potentially merge ConversionBuffer and VertexConversionBuffer into single class, but I am leaving it for future exercise. Bug: b/357622380 Change-Id: I2255a1c9b01f5d6c3846e8017cc667e6a9d66ffc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5787504 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Charlie Lao 7080b766 2024-08-16T11:31:39 Vulkan: Move LineLoopHelper from vk to rx namespace There is no line loop support in vulkan. LineLoopHelper is a utility function for backend, not a helper function for vulkan object. So it is better fit in rx namespace instead of vk namespace. This also helps my next CL where I am going to change initBufferForVertexConversion to take a ConversionBuffer instead of BufferHelper. LineLoopHelper uses initBufferForVertexConversion, which means I have to change LineLoopHelper to uses ConversionBuffer. This causes header inclusion problem that now vk namespace object end up have to include rx namespace header. This CL fixes this inclusion problem by moving it to the proper namespace. Bug: b/357622380 Change-Id: I6d6cf1aa926f726bb1b1ab1017bcab092eaf5d37 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5787502 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Kimmo Kinnunen eb6c4bfe 2024-08-20T09:58:11 Metal: Fix availabilities of MTLGPUFamily use Fixes compile in case of targeting only the newer SDKS. [MTLDevice supportsFamily:] is supported on all minimum runtimes: - macOS 10.15 (minimum runtime 10.15) - macCatalyst 13.1 (minimum runtime 16.5) - iOS/tvOS 13.0 (minimum runtime 15.0) Remove the ifdefs and fallbacks. MTLGPUFamilyMacCatalyst1 is deprecated on macCatalyst 16.0. Replace with MTLGPUFamilyMac2. MTLGPUFamilyMac1 is deprecated on macOS 13.0. Replace with MTLGPUFamilyMac2. MTLGPUFamilyApple7 is present on iOS/tvOS 14.0, minimum runtime 15.0. Remove ifdefs. MTLGPUFamilyApple6,7 are present on macOS 11.0 SDK, minimum SDK 12.0. Remove ifdefs. Bug: angleproject:360147118 Change-Id: I337d1ad44940a2f39a57ba8a28de0e1d7387658c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5797050 Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com> Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com> Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Kimmo Kinnunen 2758d4dc 2024-08-20T16:00:07 Metal: Remove shared event related ifdefs Shared events are supported by iOS 12, macOS 10.14, included in the minimum versions iOS 15, macOS 10.15. Bug: angleproject:360147118 Change-Id: I5b62dade045f9d50864ef1906cb22a18fd09e4da Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5797150 Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com> Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com> Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 2f2cdbb8 2024-08-19T11:05:22 D3D11: Fix uniform setting for mat3 followed by float A single float following a float3x3 will pack tightly in the last row of the matrix. The uniform setting code for matricies would write a full row stride's worth of data for the last matrix row, overwriting the float packed at the end. Update ExpandMatrix to only write colsSrc worth of values in the last row. Bug: angleproject:42266878, chromium:345525082 Change-Id: Ieb616972387501cd8c30f02b267f86a7f81cf01a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5796631 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Le Hoang Quyen 1a191b1d 2024-08-16T17:31:38 Metal: add an option to emulate DontCare loadOp with randomized Clear. This is useful for testing undefined initial values caused by DontCare MTLLoadAction on non-tiled GPUs. Bug: angleproject:42261786 Change-Id: Id5c4a9ee8510a8a9143bdd67e276bfcf2bd7eaa5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5791386 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Quyen Le <lehoangquyen@chromium.org>
Alexey Knyazev 57a3e9a7 2024-08-15T00:00:00 Prevent compilation with unsupported Apple SDK versions Bug: angleproject:360147119 Change-Id: Ie9924cb49ffa729d454a2869a2d19d957500bd10 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5793513 Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Kimmo Kinnunen 62cc3790 2024-08-19T11:05:52 Metal: Remove UseResource old SDK fallbacks Fixes deprecation compile errors on newer SDKs. Remove the version guards, the useResource API is available on: macOS 10.15, minimum supported version 10.15 iOS 13, minimum supported version 15 macCatalyst 13.1, minimum supported version 16.6 (for macOS 13.5) Bug: angleproject:360147118 Change-Id: I6d2dd7cb510d6134b75d4479ae7159b8fbcfc96b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5796002 Commit-Queue: Geoff Lang <geofflang@chromium.org> Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com>
Gowtham Tammana 579a5855 2024-08-13T11:39:54 Vulkan: Add query for 64bit fp support feature check Add a feature check for shaderFloat64 support. If present expose the corresponding feature check. The following files are updated by running the autogen script - `run_auto_code_generation.py` - include/platform/autogen/FeaturesVk_autogen.h - util/autogen/angle_features_autogen.cpp - util/autogen/angle_features_autogen.h Bug: angleproject:360031000 Change-Id: If2a11190729550ad5b84714e0a3aa3b81956c66a signed-off-by: gowtham tammana <g.tammana@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5789896 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Gowtham Tammana e90cd0c4 2024-08-12T17:07:47 Vulkan: Add check for int8 extension support Vulkan backend currently has a check for float16 part in VK_KHR_shader_float16_int8 extension. Add the int8 support as well. The changes in below files are generated through `scripts/run_code_generation.py` script - include/platform/autogen/FeaturesVk_autogen.h - util/autogen/angle_features_autogen.cpp - util/autogen/angle_features_autogen.h Bug: angleproject:360031000 Change-Id: I8811779299e3d24b4536d1871e1eadcbb87432c2 Signed-off-by: Gowtham Tammana <g.tammana@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5792021 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Gowtham Tammana 319907d2 2024-04-05T16:05:33 Vulkan: Propagate the support of shaderInt16/64 feature Progate the support of shaderInt16/64 features in to enabled feature list. Bug: angleproject:360031000 Change-Id: I38915a764fb2f1dd31348c01bc2fcfa4913ebdec Signed-off-by: Gowtham Tammana <g.tammana@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5792019 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Kimmo Kinnunen 26c842fc 2024-08-15T14:51:22 Metal: use injectAsmStatementIntoLoopBodies on iOS The setting should be enabled for iOS. Bug: chromium:1513738 Change-Id: I5efd4126711eff6df8f5d84689f7f3310d7e8487 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5788428 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
Austin Annestrand 83ca89e5 2024-08-08T19:53:32 CL: Update logic for default platform on context creation In ANGLE, when multiple backends are enabled (e.g. passthrough, Vulkan, etc.), each backend is its own platform. Existing validation code was failing in this case for clCreateContext in the event of user not manually specifying CL_CONTEXT_PLATFORM. Spec says implementation then decides which platform to be associated with that context. ANGLE has a Platform::GetDefault() routine that was used and it simply grabs the 1st platform from our platform list in ANGLE (passthrough mode platform object in this case). We erroneously fail the validation in the case where we pass Vulkan device in our device_list since default-platform != Vulkan-platform. Updating the logic to use device's platform (from list) as default case. For clCreateContextFromType, we can continue to use Platform::GetDefault() as this routine generates the appropriate device list for the user to query/get via clGetContextInfo. Bug: angleproject:42266872 Change-Id: I285459688309d1cc76ade5a8564164a5538e1eda Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5789652 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Austin Annestrand 21905014 2024-08-08T16:55:52 CL: Fix entrypoint validation for ICDs For some OpenCL ICD implementations, the clGetPlatformIDs API is left as nullptr in the ICD dispatch table. This is because the OpenCL ICD Loader instead uses the clIcdGetPlatformIDsKHR call instead. Updating the passthrough code to only require checking the clGetPlatformIDs API if the platform is not an ICD. Bug: angleproject:42266872 Change-Id: Ic723adbf3ad0f6c79389ef629dd24ae8a82ca9ba Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5789651 Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
angle-autoroll e6b46eae 2024-08-15T10:01:05 Roll vulkan-deps from f084a55f96da to 91058f2297c9 (4 revisions) Suppress new VUIDs: VUID-vkCmdDraw-Input-07939 VUID-vkCmdDrawIndexed-Input-07939 VUID-vkCmdDrawIndexedIndirect-Input-07939 VUID-vkCmdDrawIndirect-Input-07939 https://chromium.googlesource.com/vulkan-deps.git/+log/f084a55f96da..91058f2297c9 Also rolling transitive DEPS: https://chromium.googlesource.com/external/github.com/KhronosGroup/glslang/+log/3a08cd8de1f88d114c18670366f29226db453a9e..0dc6711e5a178e4d5643437af688c6b48f829f5c https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Headers/+log/f013f08e4455bcc1f0eed8e3dd5e2009682656d9..1b75a4ae0b4289014b4c369301dc925c366f78a6 https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers/+log/8d902c7f67edd9e54b0fa5f7d2c34f9abfeacba8..4eb3585f32ec194efe2d9cd88a2b2943ff41f922 If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/vulkan-deps-angle-autoroll Please CC angle-team@google.com,ynovikov@google.com on the revert to ensure that a human is aware of the problem. To file a bug in ANGLE: https://bugs.chromium.org/p/angleproject/issues/entry To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md Bug: chromium:359904720 Change-Id: Idf82bf9a210b953785fc2387e5c64ef157ec36e6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5791052 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Gowtham Tammana 2003e062 2024-08-09T17:52:38 Vulkan: Set queue family index for oneoff command buffer Use the queue family index that the Renderer has chosen for creation of oneoff command buffers. Bug: angleproject:359623670 Change-Id: I0a36edf79a751133d477d433c9cfd8dbddaad221 Signed-off-by: Gowtham Tammana <g.tammana@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5785864 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Austin Annestrand 2b723c13 2024-02-02T14:12:06 CL/VK: Add initial enqueueCopyBuffer Generalizing the copy buffer with appropriate barrier inserts and commandbuffer command. Bug: angleproject:42267074 Change-Id: I02fd36a221ea70f007aee78ceeef84c24fa85682 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5410935 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang da572160 2024-07-23T16:36:10 Reland: GL: Forward client-side arrays to the driver when possible The OpenGL driver can handle client-side arrays when the context is OpenGL ES or a desktop GL compatibility profile. When in these situations, use the driver default VAO for all frontend context VAOs and forward client-side data directly to the driver. Fix synchronizing the default VAO state for external contexts. There is no valid VertexArrayStateGL for external VAOs so make sure it's nulled and the VAO dirty bits are set so the correct VAO state is reapplied. Disable syncing to the default VAO for external contexts. The only VAO that they can share with ANGLE's internal state is the default VAO so avoid having to save and restore its state. Bug: angleproject:355034686 Change-Id: I015bbbc854938fe4bc1e92d0ca8fe04628d0db16 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5743284 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang 6fddb18d 2024-07-26T12:44:23 GL: Disable heavily emulated extensions for non-WebGL. The multidraw and base vertex base instance extensions are heavily emulated in ANGLE's GL backend, manipulating vertex arrays multiple times per draw. This is often a performance improvement for deep pipelines such as WebGL but slower for shallow stacks like Chrome's rasterization. Mark these extensions as "emulated" and disable them in the frontend for non-WebGL contexts. Only EXT_base_instance can have true native support. Add a frontend feature to re-enable these extensions and use it in the existing end2end tests. Bug: angleproject:355645824 Change-Id: I897559fb270e2aa0f476d7784d25d97574e28f43 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5743837 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Shahbaz Youssefi 087afc91 2024-08-10T20:40:53 Vulkan: Prefer fallback to renderable texture than CPU copy When a texture copy is done, the transfer path is preferred. If transfer is not possible, ANGLE falls back to a draw-based copy. However, if the format is not renderable, ANGLE falls back to CPU copy. Instead, this change makes ANGLE try to fall back to a renderable format before giving up on the draw-based copy. Bug: b/351872449 Change-Id: I3d09dd88cc0b7feb5e92e58c4f19380973eb5e94 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5775592 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Austin Annestrand 5967afe7 2024-04-02T17:45:48 CL: Update Platform ctor to handle rx errors Bug: angleproject:359294584 Change-Id: I7aad107e57ea6f29b8fc69205ba72c27de6a9428 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5421576 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
Geoff Lang 072dc5d1 2024-08-13T13:53:52 Metal: Disable multisampled render to texture. Corruption has been seen on M1 Macs for WebGL content which uses a multisampled backbuffer. Bug: chromium:358957665, angleproject:42261786 Change-Id: Ia17581b15cd032e91e2642d80abace8d57ceb23b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5783540 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Quyen Le <lehoangquyen@chromium.org>
Geoff Lang b36d94dc 2024-08-02T16:23:03 WebGPU: Implement viewport and scissor Tested using samples. dEQP tests covering viewport and scissor require more shader translation to be completed. Bug: angleproject:0 Change-Id: Ia76f2edeea5a07af1881704a21fafb64ab7df43a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5756127 Reviewed-by: Liza Burakova <liza@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Austin Annestrand 5b4517ec 2024-02-02T14:04:29 CL/VK: Add helper for inserting barriers Adding a helper function to insert execution and memory barriers when resource access commands are recorded into the command buffer in CLCommandQueueVk. An example of a copy buffer command with src and dst ``` set access.readBuffer <- src set access.writeBuffer <- dst insert barriers - onResourceAccess(access) add copy command - commandBuffer->copyBuffer() ``` Bug: angleproject:42267073 Change-Id: I61d8064fd015a4bf3dab018cbb83d147915ed627 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5409249 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
Gowtham Tammana f8fc8ac3 2024-08-05T11:50:11 Vulkan: Remove dependency on ContextVk for CommandBufferHelper Following on the changes in [1], this makes the `CommandBufferHelperCommon` and `OutsideRenderPassCommandBufferHelper` interfaces independent of `ContextVk` state. Any dependency is made explicit. In addition, interfaces that are not specific to GLES context are also updated. [1]: Commit (bcf814fda5 Vulkan: Constrain the dependency on ContextVk in BufferHelper) Bug: angleproject:8544 Change-Id: I7d90ad915e8c14187ab5584453b9e8802bd91e2b Signed-off-by: Gowtham Tammana <g.tammana@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5319147 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Le Hoang Quyen ee25dddb 2024-08-09T01:03:26 Metal: Properly clear render pass' attachment with an emulated alpha. When a texture is created with emulated format such as RGB, its alpha channel is initialized to 1 and the write mask is configured such that the alpha value won't be overwritten or set to other values. However, if we use this texture as an attachment in a render pass, and DontCare loadAction is used, the alpha value would be initialized with garbage values. No draw calls within the render pass would change these garbage values because the configured write mask already prevents that. Thus the garbage alpha values would be stored in the memory after the render pass ends. This bug also affects MSRTT's unresolve step, because it uses a draw call to blit the resolve texture to the MSAA texture. However, the alpha write is disabled thus the MSAA texture will remain having garbage alpha values. The fix for this bug is that: if we detect that the texture has emulated format and its loadAction is DontCare, we change it to Clear action to clear the alpha channel to 1. Bug: angleproject:42261786 Change-Id: I994849bd4b3c3ab51698833d1cc520376ae6de44 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5773347 Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Auto-Submit: Quyen Le <lehoangquyen@chromium.org> Commit-Queue: Quyen Le <lehoangquyen@chromium.org>
Alexey Knyazev 6e248bcb 2024-06-20T00:00:00 Metal: Fix ASTC on visionOS Adjusted compile guards to include visionOS target. Fixed: angleproject:358393363 Change-Id: If7ead234f5deaee524172d2fb38d4a041c915716 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5777140 Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com> Reviewed-by: Kenneth Russell <kbr@chromium.org>
Igor Nazarov 2b15c795 2024-08-09T17:13:17 Make explicit that GenerateCrc() return correct CRC32 hash According to the documentation of `crc32_z()`, to get required initial value need to call `crc32_z()` with nullptr "buf" parameter. Using this initial value will produce correct CRC32 hash. On practice, `crc32_z()` with nullptr "buf" produces "0", so the current code actually calculates correct CRC32 hash. However, this is still against the documentation, and in different versions of zlib or architectures may produce incorrect results. Technically, `GenerateCrc()` does not require to produce correct CRC32 hash - the main purpose is to calculate some hash value. But because updating this function to produce correct CRC32 hash is very easy, this change updates the implementation and renames it to `GenerateCRC32()` to explicitly state that it generates correct CRC32 hash. After this, function may be used in scenarios where CRC32 hash is really required. Bug: angleproject:4722 Change-Id: Ib159f2d3ad1a8388f505abb09a6d0b19a51b7eec Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5777145 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Alexey Knyazev 7bab5bce 2024-06-20T00:00:00 Metal: Support BC texture formats with non-macOS targets Used supportsBCTextureCompression device query to check BC formats support on Apple GPUs. Fixed: angleproject:42266573 Change-Id: I60fd5614d10d0c4558992e2c5d3e4b4c1a396aaa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5771136 Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Igor Nazarov bacd3a7d 2024-08-07T19:01:18 Vulkan: Fix CompressAndStorePipelineCacheVk() crashing `ContextVk` may be destroyed while `CompressAndStorePipelineCacheTask()` is still running. Context is only used to output a performance warning. So in case of such performance warning, `gl::State::mDebug` object may be already destroyed, causing undefined behavior. Change removes `ContextVk` from the function and uses `WARN()` instead. The `CompressAndStorePipelineCacheTask` stores pointer to the `vk::Renderer` instead of `ContextVk`. Bug: angleproject:4722 Change-Id: Iba9cad78ce5c6ea29cc2143f7bd2340cf0484855 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5768881 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Austin Annestrand 98b06696 2024-06-17T17:28:56 CL/Vulkan: Add initial profiling support This PR introduces initial cl_event profiling support. For now, use CPU timestamps (later look into Vulkan GPU device timestamps). Bug: angleproject:357902512 Change-Id: I2197e396e222d2842ab31304f91934f9e000ea0d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5767598 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Austin Annestrand d1d9cd63 2024-06-17T17:22:16 CL/Vulkan: Init events to NULL before enqueue On a CL enqueue API call, if the passed cl_event object ref is not NULL, set the object to NULL initially before we create it during enqueue call. Bug: angleproject:357902512 Change-Id: I7d94012c38eb96e7021da20ea22bd741e536de53 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5767597 Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Kimmo Kinnunen cb27b4a4 2024-08-08T10:17:47 Metal: Remove MTLGPUFamilyApple9, it is unused Fixes visionOS compiles, the SDKs do not define the symbols. Changes the SDK #if checks to be more consistent: - Remove version checks from WATCHOS, as it's expected to be compiled with fairly recent SDK (Metal is not supported). - Compile fallbacks only when needed by the minimum deployment target. - Add Apple3 -> :MTLFeatureSet_tvOS_GPUFamily2_v1 mapping just for consistency. Bug: angleproject:347739670 Change-Id: I054c9faeba4245be8be6cfa7128f17df03f448da Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5771352 Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com> Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com> Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com>
Austin Annestrand 1010a275 2024-06-18T10:27:10 CL/Vulkan: Set proper build status prior to API return For cl[Compile/Link/Build]Program, we need to set the build status to CL_BUILD_IN_PROGRESS before returning to user/app (since in build callback case, user can query status as either in-progress, done, or error). CL_BUILD_NONE would not be a valid query return if the user just launched a build in this case. Bug: angleproject:357905825 Change-Id: I85f23db7f9a543ff8872557de5c1cf41d2f2645a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5767599 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Roman Lavrov bc0c6c5b 2024-08-07T09:48:25 VVL: sync_queue_submit -> syncval_submit_time_validation Avoids this warning printed to stdout: Validation Setting Warning - sync_queue_submit was set, this is deprecated, please use syncval_submit_time_validation Bug: b/316013423 Change-Id: I9a8be1a49be72e8ec2fed74ace36989d8e37163a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5769522 Auto-Submit: Roman Lavrov <romanl@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Liza Burakova 27c0f10a 2024-08-06T11:12:32 WebGPU: Generate texture formats when initializing surfaces. Bug: angleproject:344814096 Change-Id: I873c6308e9c203fd759ccbf5a378056f2aca849c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5763218 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Liza Burakova <liza@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Liza Burakova 057bc0f0 2024-08-07T11:38:54 WebGPU: Set multiple parameters in RenderPipelineDesc. This change adds multiple setters to RenderPipelineDesc to set various parameters within the DepthStencilState. Bug: angleproject:42267012 Change-Id: I71eed7195477572295de6575bfa18d2c58ca93de Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5765553 Reviewed-by: Matthew Denton <mpdenton@chromium.org> Commit-Queue: Liza Burakova <liza@chromium.org>
Alexey Knyazev 8a8b85bb 2024-06-20T00:00:00 Metal: Adjust supports32BitFloatFiltering compile guards * Used MAX_ALLOWED instead of MIN_REQUIRED macros. * Explicitly enabled visionOS SDK. * Used correct tvOS SDK version. Bug: angleproject:347739670 Change-Id: I599ce31c66fc4341a43607c46df67740b8478670 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5756573 Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Dan Glastonbury 0592b897 2024-08-02T14:50:08 Metal: fix frame capture bundle file permissions Capturing Metal frame captures of ANGLE end2end test results in a .gputrace bundle devoid of any posix file permissions. This causes Xcode to throw an error when trying to open the frame capture. On |StopFrameCapture|, ensure that the .gputrace files are RW for the user and the bundle directory is RWX. Fixed: angleproject:356907817 Change-Id: Ia994aa5b8bd09a3dc34fd79aac831a6f7dcc792f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5759063 Reviewed-by: Quyen Le <lehoangquyen@chromium.org> Commit-Queue: Quyen Le <lehoangquyen@chromium.org>
Shahbaz Youssefi 70f2e203 2024-08-06T17:21:50 Metal: Fix memoryless usage on ios on tv Bug: angleproject:42261786 Change-Id: I8a289eb888dbb9b2d28066850f2218a1aa92da3b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5765976 Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Quyen Le <lehoangquyen@chromium.org> Commit-Queue: Quyen Le <lehoangquyen@chromium.org>
Igor Nazarov 7a81e79d 2024-08-02T19:39:57 Vulkan: Fix mPipelineCache not populated from blob cache Fixes regression introduced in change: Vulkan: Remove support for pipeline cache control https://chromium-review.googlesource.com/c/angle/angle/+/5375102 Returns logic implemented in: Vulkan: pipeline cache not populated as blob cache is not set https://chromium-review.googlesource.com/c/angle/angle/+/1683807 In the current state, call to `ensurePipelineCacheInitialized()` from `getPipelineCache()` is essentially a dead code, since `mPipelineCacheInitialized` will always be `true` after call from `createDeviceAndQueue()`. So if blob functions are not set before `createDeviceAndQueue()` then blob cache data will never be loaded. This change simply removes `ensurePipelineCacheInitialized()` from the `createDeviceAndQueue()`, since cache can only be accessed after the initialization (`mPipelineCacheInitialized` is true). Bug: angleproject:8601 Change-Id: I3db1cd69346ec1aa2c36e4134c77680526b22cc8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5756574 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Igor Nazarov 721becf2 2024-08-06T17:49:56 Vulkan: Update Renderer::syncPipelineCacheVk() method Add check for `mPipelineCacheInitialized` to avoid overwriting existing pipeline cache data in the blob cache by empty cache data if sync is called before pipeline cache is loaded from the blob cache. Move checking of `mCompressEvent` before getting pipeline size and updating `mPipelineCacheSizeAtLastSync`. This will avoid unnecessary (potentially heavy) vulkan call and fix bug when next sync is skipped, because `mPipelineCacheSizeAtLastSync` is already updated. Bug: angleproject:4722 Change-Id: I7390c4bc53ba57732b659d79c65ed4da8d7a6ba6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5756575 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Liza Burakova 3e4fa128 2024-08-05T16:20:30 Store ImageHelper's queue by mip levels. This change converts ImageHelper's mSubresourceQueue to store a vector of updates for each mip level. This allows updates to be flushed per mip level. This also adds a call in the RenderTargetWgpu to flush updates such that now when a framebuffer is flushing updates to color attachments the associated render target ensures that only updates associated with its mip level are flushed. Bug: angleproject:42267012 Change-Id: I1abdbc842cf18b1bd897037bf11aeea9c6d09e14 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5759469 Reviewed-by: Matthew Denton <mpdenton@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Liza Burakova <liza@chromium.org>
Shahbaz Youssefi 67d8d8c8 2024-07-29T13:44:37 WebGL: Reject shaders with infinite loops Bug: chromium:350528343 Change-Id: I1b2fc152cf285b0e69c4c294351c1cf2389cc234 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5746714 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang c5d4c16f 2024-08-02T11:27:56 WebGPU: Initialize all GLES 2 and 3 caps Instead of using the min caps, intialize them with limits from the WebGPU limits struct or values from the spec. Bug: angleproject:357017322 Change-Id: I15597b192d915dad7c3f6bacab048cf09999da6d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5759280 Reviewed-by: Liza Burakova <liza@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Charlie Lao 9b06e003 2024-08-02T15:47:36 Vulkan: Avoid unnecessary observer changes for Buffers Noticed in black_desert_mobile hat it calls glVertexAttribPointer with some buffer. What we end up doing is remove observer from old buffer and add observer to new buffer. This CL checks if old and new buffer are the same and skip some of the logic if both buffers are the same. Also added check in VertexArrayBufferContentsObservers::disableForBuffer to early out if it was not enabled in the first place. Bug: b/356473483 Change-Id: I872dcee7d87b404f525d0323d2952c8249ef1c9a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5760652 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Le Hoang Quyen a89ca6c8 2024-07-30T17:14:50 Metal: Fully implement unresolve step for MSRTT. This CL also uses memoryless for implicit MS textures in EXT_multisampled_render_to_texture render passes. Bug: angleproject:42261786 Change-Id: Ic20450574c4c670d05ca846587ced05488012270 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5746181 Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Quyen Le <lehoangquyen@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Le Hoang Quyen 1bfe5c57 2024-07-30T15:58:47 Metal: partially implement EXT_multisampled_render_to_texture. Implement by implicitly attaching a multisampled texture to the render pass. The content will be preserved across render passes by loading/storing to the implicit multisampled texture. However this won't work if the single sampled texture is used in multiple render passes with different glFramebufferTexture2DMultisampleEXT's sample counts. For that to work we need to implement unresolve step to load the resolve texture's texels into the implicit multisampled texture. That will be implemented in a separate CL. Bug: angleproject:42261786 Change-Id: I12be75af17ce5b98266946846417d0a43fcba455 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5746180 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Quyen Le <lehoangquyen@chromium.org>
Alexey Knyazev 26aa4df5 2024-06-20T00:00:00 Metal: Update floating-point texture format caps * Fixed detection of Apple7+ GPUs. Added support for Apple8 and Apple9 GPUs. * Adjusted filterability and resolvability caps for R32F, RG32F, and RGBA32F formats. This enables GL_OES_texture_float_linear on capable devices. * Adjusted RGBA32F blendability cap. This enables GL_EXT_float_blend on capable devices. Bug: angleproject:347739670 Change-Id: I84d23814d119452f47fff5a1d7dc33f614c35bb7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5646489 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com>
Mohan Maiya 22ed9877 2024-03-07T15:52:13 Vulkan: Generate fragment shading rates with compute Generating fragment shading rates on the CPU could cause avoidable stalls or increased latencies due to host<->device synchronization. Instead generate the rates using a compute shader. Optimize foveated rendering by treating a foveated draw with focal points whose gainX or gainY is 0 as if it were an un-foveated draw Bug: angleproject:42266906 Change-Id: If8c5504087997666c7d0c1cae8dcc5fab847187e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5754322 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Austin Annestrand 5a159d69 2024-05-03T10:24:01 CL/Vulkan: Pass proper arch flag to clspv Needed to update the processedOptions field so that we append the "-arch=" flag based off the device's address bits value. Bug: angleproject:356328474 Change-Id: I5f42f4cdf30ccef9e9aad8eb040f6cbdf8d3b750 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5753767 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Austin Annestrand cc50c75b 2024-04-19T16:40:26 CL/Vulkan: Fix missing kernel enqueue retain/release According to spec: https://registry.khronos.org/OpenCL/specs/3.0-unified/html/OpenCL_API.html#clReleaseKernel We also need to implicitly retain/release the Kernel object on Kernel enqueue APIs along with other kernel resource retain/release(s) (i.e. memobjs). Bug: angleproject:356328473 Change-Id: Ie6ca228ebece2988d511d9ffd2a617abdc057d0a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5753766 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
Austin Annestrand d4f93407 2024-03-25T18:14:26 CL: Conditional enable of Vulkan Validation layers Rather than force YesIfAvailable always, we restrict the Vk validation layers if user specifies it in the GN args: angle_enable_vulkan_validation_layers Bug: angleproject:356320155 Change-Id: I9035d0e7d220ce59db39f1a86f31b403c44088dd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5753765 Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang 31c0f439 2024-08-02T09:18:33 WebGPU: Centralize caps generation All GL and EGL caps can be generated at display creation time for WebGPU. Move all existing logic into a centralized GenerateCaps function. Bug: angleproject:357017322 Change-Id: I7398d4ee539192d64971023d9a598ac1f11592ad Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5759279 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Liza Burakova <liza@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Yuxin Hu ea63e372 2024-08-01T21:10:02 Enable VK_KHR_synchronization2 if it is available If the device supports VK_KHR_synchronization2 and VkPhysicalDeviceSynchronization2Features.synchronization2 queried from the device is VK_TRUE, Enabled the extension VK_KHR_synchronization2 and feature VkPhysicalDeviceSynchronization2Features when calling vkCreateDevice. Bug: b/356985874 Bug: b/336844257 Change-Id: Iac95f373a283f5a97e126770321769e0f760e5f9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5759319 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Charlie Lao 06ae828f 2024-07-31T16:42:54 Vulkan: Avoid breaking render pass for vertex buffer conversion Adreno driver does not support VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT for VK_FORMAT_R8G8B8A8_USCALED. This cases we hit fallback code path using GPU to do conversion. The conversion buffer gets reused since all access are from GPU, but that causes render pass break since there is a WAR hazard on the conversion buffer. This CL adds the isRenderPassStartedAndUsesBuffer check and allocate a new conversion buffer if reuse current buffer may break the render pass. Bug: b/356473483 Change-Id: Iaa0b9235ba42787f0e3629f0d9174ae768456f8b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5754324 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Geoff Lang 59f6d962 2024-07-30T21:36:00 WebGPU: Run dEQP GLES2 tests. Add the flags and platform support needed to initialze the WebGPU backend. Set up initial test expectations with broad suppressions. Current pass rate: 14.27% Bug: angleproject:356399840 Change-Id: I1339cd978ca75b59a2e99ee81d93981dc6066f36 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5751601 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Amirali Abdolrashidi cc7d0220 2024-07-31T14:22:38 Vulkan: Fix serial mismatch during mid-loop flush Currently, if the total buffer updates to the image surpasses a certain threshold, it results in a flush. However, this can cause discrepencies in the queue serial, which can result in incorrect behavior on some platforms. * Updated flushStagedUpdatesImpl() so that the image serial after applying the updates matches that of the current outside command buffer. * That includes when there is a flush in the middle of the update loop, resulting in submission and new queue serial for the CB. * Added a unit test to check if a large texture can uploaded and deleted after a second small texture is uploaded. * Texture1UploadThenTexture2UploadThenTexture1Delete * Added a unit test for flushing when uploading cubemap textures. Bug: b/351650806 Bug: b/356192937 Change-Id: I7f9b20e4b7fd49115f22081a9733b4d44b740e4a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5744377 Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Mohan Maiya 26cdf621 2024-07-31T14:43:12 Vulkan: Bugfix in dynamic rendering support Fix 2 bugs - 1. Set VkGraphicsPipelineCreateInfo::flags when linking GPLs 2. Chain VkRenderingFragmentShadingRateAttachmentInfoKHR struct in VkRenderingInfo::pNext Bug: angleproject:42267038 Change-Id: I456c75d57ec64926a21dffe93b05e1bbab2cb262 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5754635 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao 7c77bb75 2024-07-24T12:05:29 Vulkan: Remove implicit buffer barrier for shader write When app uses shaders to write to SSBO, right now we are inserting an implicit barrier to ensure WAW are in order. But Spec says that "Explicit synchronization is required to ensure that the effects of buffer and texture data stores performed by shaders will be visible to subsequent operations using the same objects". This CL removes the implicit barrier for buffer write if the current write comes from shaders and relies on explicit glMemoryBarrier to insert a global barrier. Bug: angleproject:350994515 Change-Id: I8ab039610be9be2ded27ea60dab54bdad08502f6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5719258 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Geoff Lang 279c69e5 2024-07-30T21:30:54 WebGPU: Fix intended/actual format mismatch for textures Update WebGPU texture allocation size to use the actual format instead of intended. Early-out with an UNIMPLEMENTED if the format is not supported yet. Bug: angleproject:356399840 Bug: angleproject:344814096 Change-Id: Idef9ad40c6b1d490964fc398fb077b117612a44b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5748448 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang cab7d1b6 2024-07-30T21:19:15 WebGPU: Obey buffer alignment rules WebGPU buffers require a size aligned to 4 bytes and map buffer offsets aligned to 8 bytes. Hide this requirement in The BufferHelper class by doing the apropriate offsets during buffer creation and map calls. This allows many dEQP tests to run without crashing due to WebGPU buffer creation errors. Bug: angleproject:356399840 Bug: angleproject:42267091 Change-Id: Id71c3b5db31aa712d5a88631efa4897d6205a41d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5748443 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang 641bc04a 2024-07-30T21:25:44 WebGPU: Use the correct source format for ReadPixels ReadPixels was using the format of the destination buffer which works correctly for RGBA8 -> RGBA/UNSIGNED_BYTE but runs the wrong conversion functions for other formats. Bug: angleproject:356399840 Bug: angleproject:42267090 Change-Id: I7c46add3f643017f454136135afef697847a2383 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5748446 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang 9da7fb15 2024-07-30T21:21:45 WebGPU: Don't log all renderpass closure reasons This logging line spams the console excessively. For now, just make sure there is a message associated with each renderpass closure reason. Bug: angleproject:356399840 Change-Id: I2313d439837ffb11f11cd56194511e80fb312eba Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5748444 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang 1953c606 2024-07-30T21:28:13 WebGPU: Fix ReadPixels from window surfaces. The intended/actual formats were not initialized in this code path and the created swap chain texture did not have the usage flags needed for copying to a buffer for ReadPixels. Bug: angleproject:356399840 Bug: angleproject:42267090 Change-Id: I8e4279eedb2b23f0d2ed690ccee086ae115969c3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5748447 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang 0898dab0 2024-07-30T21:34:00 WebGPU: Skip primitive topology conversion for DrawArrays For non-indexed draw calls, no index format is needed for the stripIndexFormat. Bug: angleproject:356399840 Change-Id: Ie2c9805a2c257d94ea5f1bca026287873e4d6781 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5748449 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang 8446bbd6 2024-07-30T21:22:50 WebGPU: Remove ASSERT in depth/stencil clears Instead of asserting that we are not clearing depth or stencil, just log an UNIMPLEMENTED and skip the call. This allows many dEQP tests to run without crashing on the ASSERT. Bug: angleproject:356399840 Change-Id: Icfe7a77d7128e679501da42023601217c7b0e6c8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5748445 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Kimmo Kinnunen aee59926 2024-06-28T17:00:56 Metal: Enable GL_ANGLE_reverse_row_order for Metal The feature is already implemented due to generic pack parameters handling and FramebufferMtl::setFlipY(). Bug: angleproject:349980052 Change-Id: I08cc81dcb26ae81e8d81b060d986e01479487dbe Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5667597 Reviewed-by: Quyen Le <lehoangquyen@chromium.org> Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
Shahbaz Youssefi 65f08d08 2024-07-26T22:14:49 Vulkan: Work around driver bug with nested switch Bug: chromium:350528343 Change-Id: Ie7bd58934ccb2b8f06f6ad6a8c3bf38e81b84969 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5744620 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Marcin Radomski 4c883359 2024-07-03T13:50:58 Add dma_buf build support to generate_android_bp Minimized version of go/anglecl/5729843 that limits introduced changes. Make generate_android_bp.py emit a `angle_android_dma_buf` Soong config variable that, when enabled, creates a "Linux-like" build using Android toolchain. The build does not assume the presence of regular Android graphics stack. eglGetDisplay defaults to creating DisplayVkOffscreen. This enables EGL rendering context setup based on an externally allocated DMA-BUF, using EGL_EXT_image_dma_buf_import and GL_OES_EGL_image_external extensions. See ag/28533701 to view the generated code. Also, revert changes from "Add build flag for a "dma_buf" Android build" (commit 4d2b365582669a04224d1e1fa3c92447c359a4ba). The flag added there was submitted a bit prematurely, and as go/anglecl/5729843 was deemed too complex a different approach was necessary. Test: CQ Test: Build the entire CL chain with the new Soong config flag enabled Test: run the system, attach debugger to eglGetDisplay(), see Test: DisplayVkOffscreen getting instantiated Bug: b/353262025 Change-Id: I974d91cff79a0bd8b5059a145f0ae6114b2bcbe5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5746214 Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Roman Lavrov <romanl@google.com> Auto-Submit: Marcin Radomski <dextero@google.com>
Le Hoang Quyen 198de044 2024-07-30T15:44:03 Metal: fix wrong render encoder's serial assignment mtl::RenderCommandEncoder object is created once and reused multiple times. We should re-assign a new serial whenever we reuse it, instead of assigning once in constructor. bug: angleproject:40644888 Change-Id: I18120c91dddd5b279fcec7a9099833e97ec1c37c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5746179 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Quyen Le <lehoangquyen@chromium.org>
Le Hoang Quyen 2bc1519c 2024-07-28T05:16:07 Metal: fix base/max level change for mutable textures. Previously, the following scenario would accidentally delete and recreate the native texture storage for a non-immutable TextureMtl: 1. set a texture base/max level. 2. attach the texture to a FBO and clear it. - native storage is created. 3. sample the texture. - native storage is accidentally deleted and recreated. This happened because front-end only notifies the backend about the base/max level dirty bits at step 3. At this point, Metal backend thought that the native storage created at step 2 is no longer valid and attempted to recreate the storage. This CL fixes the bug by checking whether the base/max level is still compatible with the existing native texture storage. If it is then the dirty bits result in no-op. Bug: chromium:355605685 Change-Id: I1daac80a74219109631a101e18e944560606d926 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5741121 Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Quyen Le <lehoangquyen@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Charlie Lao bd3a3308 2024-07-22T14:03:20 Vulkan: Remove implicit image barrier for shader write When app uses compute or fragment shader to write to an image and makes multiple dispatchCompute or draw calls, right now we are inserting an implicit barrier to ensure WAW is hazard free. But Spec says that "Explicit synchronization is required to ensure that the effects of buffer and texture data stores performed by shaders will be visible to subsequent operations using the same objects". This CL records the bits from the last glMemoryBarrier call and will skip the barrier calls in ContextVk::updateActiveImages if there is no layout change, unless there is requirement from prior glMemoryBarrier. Bug: angleproject:350994515 Change-Id: I8bdeeb658993824369824aaa0f25cb4b6e3785f7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5719024 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 57202584 2024-07-26T13:07:44 Vulkan: Fix dispatch-after-closed-render-pass bug Bug: b/355567160 Change-Id: I4bc6acec53a50330507bfadcc0a4c1093366aae6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5741786 Reviewed-by: mohan maiya <m.maiya@samsung.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Charlie Lao <cclao@google.com>
Marcin Radomski b20cd34d 2024-07-18T10:03:17 Add build flag for a "dma_buf" Android build Add angle_android_dma_buf gn flag, defaulting to false. When enabled: - Enables a "linux-like" build of ANGLE while using the Android toolchain, by making the OS detection logic define PLATFORM_OS_POSIX but not PLATFORM_OS_ANDROID. - Makes ANGLE default to using Vulkan backend, and - Enables DMA-BUF based external image support. This allows setting up GL framebuffers backed by DMA-BUFs, enabling rendering without full Android graphics stack. See the bug for details. Bug: b/353262025 Test: treehugger Test: Build the entire CL chain with the new Soong config flag enabled Test: run the system, attach debugger to eglGetDisplay(), see Test: DisplayVkOffscreen getting instantiated Change-Id: I584f9491b188f730f4ee9630173cc486ae7e8908 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5729841 Reviewed-by: Roman Lavrov <romanl@google.com> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Roman Lavrov <romanl@google.com>