src


Log

Author Commit Date CI Message
Shahbaz Youssefi ce3c0fe9 2022-06-06T12:09:45 Vulkan: Make depth-correction uniform controlled This change makes sure SPIR-V transformations are not required for depth correction, having the number of potential pipelines. Bug: angleproject:5881 Change-Id: If3f66b34bdd1127ae588cbc822ea7cf01fa8621f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3691801 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Geoff Lang 4868e5a7 2022-06-06T15:29:44 Log the fully formatted message for internal errors. The formatted message is generated but not used. This is critical to know the file and line that generated the error. Bug: chromium:983167 Change-Id: Id4bb1c5b49fa1004728948d87e0270687b82992c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3690738 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Charlie Lao b186991a 2022-05-26T11:50:56 Vulkan: Remove non-current vertex array from buffer's observer list When app binds a buffer to many VAOs, any buffer modification have to loop over all VAOs that uses that buffer, even though all these VAOs are not current except one VAO. That causes significant CPU overhead. black_desert_mobile has this type of usage. This CL checks number of observers on each binding and if there are excessive observers, it removes VAO from the buffer's observer list when it becomes non-current and adds back to observer list when it becomes current. This CL reduces CPU overhead of black_desert_mobile (as measured with --offset --minimumgpuwork) from 21ms to 3.69ms, on par with native GLES driver. Note that this CL only touches glBindVertexArrayObject call code path, so no impact to apps not using VAOs. There is also no measurable CPU time regression on a few other app traces that uses VAOs. Bug: angleproject:6371 Change-Id: I6b1589f3e3c768d56c1c95cebdb577e3e256737f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3669603 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Shahbaz Youssefi 2fcf9a92 2022-06-06T12:16:55 Suppress failing test Bug: angleproject:7392 Change-Id: I4c0ba6985bcf6ecc833bd6e4719f78e5586402a1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3691802 Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Roman Lavrov b7bd0808 2022-06-06T10:54:30 Support running end2end tests. There is no batching though so all tests matching the filter will be ran at once which will block without any output until evertyhing is done (android runner runs tests in batches of 256 IIRC). Also make suite arg positional and explicitly list supported tests. Bug: angleproject:6854 Change-Id: Ibe108f24d6c3ec8b966eda1cf9ae92119a517548 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3691048 Commit-Queue: Roman Lavrov <romanl@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Antonio Caggiano 28c59d63 2022-05-24T17:32:33 Vulkan: Fix Wayland Display DRM formats Check whether relevant renderer feature is enabled before querying supported DRM formats. Bug: angleproject:6902 Change-Id: Ib6fa28c75f2b7e4c8a750babe97bdeddd2fa1059 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3664477 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Roman Lavrov b71c6427 2022-05-31T16:23:51 Add a wrapper script to run traces using android_helper. Also add missing `appops set MANAGE_EXTERNAL_STORAGE` that appears to be necessary on newer builds (catapult does it starting from Android 11). Add a hash check to skip transferring .gz files that are already there. Bug: angleproject:6854 Change-Id: Ib612d1235fe1274b8fea47718af8389e8810d34e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3679486 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Roman Lavrov <romanl@google.com> Auto-Submit: Roman Lavrov <romanl@google.com>
Mark Lobodzinski 7fb021b0 2022-05-12T16:19:14 Reland "Add Vulkan backend support for texture labels" This is a reland of commit 1afb80587e302e2ce9a901a69fd66e5ef98a73b6 Added check to ensure vkSetDebugUtilsObjectName fcn ptr is valid before use. Fixes failures on mac-swangle-chromium-try-x64. Original change's description: > Add Vulkan backend support for texture labels > > Add onLableUpdate support for textures in the Vulkan backend. > > Bug: b/229105865 > Change-Id: Id9e5b2b81352e97b7843a63f27709739005dc2f3 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3645854 > Reviewed-by: Ian Elliott <ianelliott@google.com> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Commit-Queue: Ian Elliott <ianelliott@google.com> Bug: b/229105865 Change-Id: I994da6db2771671c204e4ab01c69912c1be4a48f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3674296 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Ian Elliott <ianelliott@google.com> Commit-Queue: Ian Elliott <ianelliott@google.com>
Stephen White ccf53e3d 2022-06-03T10:40:17 Translator/HLSL: fix image load/store handling. Don't output the image load/store string unless we're outputting HLSL 4.1 (D3D11). Also do some preventative initialization. Bug: chromium:1327872 Change-Id: Ic757fd6c0c92637f565dc39469ee60dfae145353 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3687335 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Stephen White <senorblanco@chromium.org>
Charlie Lao 2fec519f 2022-06-02T15:17:28 Avoid dirty texture swizzle state when there is no change Some applications (for example surfaceflinger on Android) may set texture swizzle at every call even though there is no actual swizzle change. But we are not checking against redundant state calls and is always setting texture's DIRTY_BIT_SWIZZLE_* bits. This caused vulkan backend free image views which in turn forces VkFramebuffer recreation. This CL check the swizzle state and only set dirty bits if it actually changes. Bug: b/234602034 Change-Id: I7fab96a957c0b7a7ed318eaccea2d42146ca23cd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3688732 Reviewed-by: Ian Elliott <ianelliott@google.com> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao d655ad29 2022-05-31T14:20:16 Vulkan: Add tests for FramebufferCache growth bugs When texture attached to FBO gets respecified, we shouldn't keep growing FramebufferCache. When texture attached to fbo get glTexParameteri(GL_TEXTURE_SWIZZLE_R) call with the same value, we should also not destroy/recreate framebuffers (in fact should not recreate VkImageView). We ran into this usage pattern on surfaceflinger. When texture attached to fbo get glTexParameteri(GL_TEXTURE_SWIZZLE_R) call with different value, we should also not destroy/recreate framebuffers (in fact should not recreate VkImageView). We ran into this usage pattern on surfaceflinger. Bug: b/234769934 Bug: b/234602034 Change-Id: I9fc881486f95cc3da843f50fa0a8cdcbfd4fc625 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3681081 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Ian Elliott <ianelliott@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Shahbaz Youssefi a9516865 2022-06-01T22:48:04 Vulkan: Output cache look up feedback in pipeline graph Bug: angleproject:6565 Change-Id: I12bb9ab5756860de9ba26d6b4a9429a78b65df39 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3686029 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang bfab7e60 2022-06-01T11:22:42 Ignore eglBind/ReleaseTexImage calls for lost contexts. eglBindTexImage and eglReleaseTexImage no-op when no context is current. Extend this to lost contexts to match the behaviour of making a GL call on a lost context. This avoids potential unexpected bad accesses in the backends. Bug: chromium:1316578 Change-Id: I7b309c297e0c803019720733dee2950abb4c4b5f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3683869 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Alexis Hétu <sugoi@google.com> Reviewed-by: Alexis Hétu <sugoi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Kimmo Kinnunen 415ff51b 2021-12-17T17:20:25 Metal: Remove use of ANGLE_MTL_AUTORELEASE from mtl_state_cache The code doesn't use autoreleasepool, instead all instances are subsequently retained. Use AutoObjCPtr to adopt the reference and maintain ownership explicitly. This is work towards minimizing memory leaks by minimizing the use of autoreleasepool and accounting for the references explicitly. Bug: angleproject:6833 Change-Id: I77fe323683e4abb9b4ab17723949c56dd636ae32 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3347643 Reviewed-by: Jamie Madill <jmadill@chromium.org> Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com> Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Kenneth Russell <kbr@chromium.org> Reviewed-by: John Cunningham <johncunningham@apple.com>
Shahbaz Youssefi 53ec886e 2022-05-30T16:49:11 Vulkan: Externally synchronize the pipeline cache In preparation for a future change that requires this as it may perform pipeline cache merges during creation of pipelines. Bug: angleproject:5881 Change-Id: Ic7921b781aa773ae23b60a0bb6fa2111b1fc401e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3679479 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Kyle Piddington 2f6dcf77 2022-06-01T14:51:47 Metal shaders fail to compile with "error: unknown type name 'uint' Replace 'uint' with uint32_t in emitted MSL. Some legacy configurations are showing compile errors when using this type. Bug: angleproject:7384 Change-Id: I7f262d417eaf46eed71da24e8b2c110b11677ab6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3684952 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Kyle Piddington <kpiddington@apple.com> Reviewed-by: Kenneth Russell <kbr@chromium.org>
Brandon Schade eb282de0 2022-05-20T18:36:46 Vulkan: Add feature to use VK_FILTER_LINEAR for YUVConversionInfo VK_FILTER_NEAREST is default for chromaFilter in ConversionInfo. Add feature to allow VK_FILTER_LINEAR to be used instead. This feature controls the quality when sampling YUV images. Bug: angleproject:7382 Change-Id: I3f67d7620d94b5b33c42754adfef84b97c798637 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3684351 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Trevor Black <vantablack@google.com> Reviewed-by: mohan maiya <m.maiya@samsung.com> Commit-Queue: Brandon Schade <b.schade@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Gert Wollny bbf67e2e 2022-05-16T12:04:34 Capture/Replay: support capturing eglCreateImage/eglDestroyImage Because we support only a few functions the supporting code is not autogenerated. We don't capture the actual value of the display variable, because we assume that there is only one display, and the actual pointer to it is provided by the EGLWindow. The rest of the capturing works just like with the GLES calls. Bug: angleproject:4964 Bug: angleproject:5822 Bug: angleproject:6180 Bug: angleproject:6286 Bug: angleproject:6578 Bug: angleproject:7111 Change-Id: I385aa9648f93bf74706e9860e2aee5775eeba220 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3636062 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Shahbaz Youssefi 73b7534b 2022-06-02T13:13:25 Vulkan: Suppress forced-xfb-emulation tests on pixel 6 ARM cannot support xfb emulation. Bug: angleproject:7376 Change-Id: If954ee7f5e4e049c107ac9fef1d84793a4c6d2b2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3686618 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Gregg Tavares 94320a83 2022-05-27T17:41:29 Metal: Validate total bits used in color attachments Metal has 2 limits for color attachments. 1 the number of attachments supported. 2 the total number of bits it can write per pixel. So for example Apple4 through Apple8 GPUs can have 8 attachments but only 512bits of output. That means you can attach 8 RGBA8 textures (256bits), but you can't attach 8 RGBA32UI textures (1024bits). If there are too many bits then return FRAMEBUFFER_UNSUPPORTED from checkFramebufferStatus and INVALID_FRAMEBUFFER_OPERATION from draws Bug: angleproject:7280 Change-Id: I935aebad4d57664f59a60be20a927d6b69afb4ff Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3674322 Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Gregg Tavares <gman@chromium.org>
Kenneth Russell 6a0c779e 2022-06-01T14:43:41 Uptream Vivante and VMWare vendor ID recognition. Case-insensitively alphabetize the IDs and helper functions. Bug: angleproject:6839 Change-Id: Ib6746b3e6a8858e85b70c04424093ddbd02285fc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3684955 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Kenneth Russell <kbr@chromium.org> Reviewed-by: Gregg Tavares <gman@chromium.org>
Shahbaz Youssefi e04314fd 2022-05-30T01:09:31 Vulkan: Include state in pipeline graph dump Each program generates a group of nodes. The group's description is the common state among all nodes. Each node contains the diff with the shared state. Arrows between nodes indicate the GraphicsPipelineTransitionBits that have caused the transition. State that is 0 is not output for brevity. Bug: angleproject:6565 Change-Id: I7b6a95efcee63f1d7d368d8e062c5c1d221fb8b9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3673829 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Gregg Tavares 8a0351a5 2022-05-26T14:29:21 Metal:Dynamically choose max draw buffers. The code was hard coded to 4 which is lower than OpenGL's 8. This implementation keeps a hard coded array of size 8 in rx::mtl::RenderPassDesc and rx::mtl::RenderPipelineOutputDesc but only uses up to the display's limit. Bug: angleproject:7280 Bug: angleproject:5730 Change-Id: Idd7e64dc47697882b44540804159566158e1e924 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3671695 Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Gregg Tavares <gman@chromium.org>
Gregg Tavares 17f9e941 2022-06-01T15:22:29 Metal: Upstream clear performance fix Restricts in-flight render passes per command buffer a predefined limit. The goal is to reduce the number of active render passes on the system at any one time. Patch is from: https://bugs.webkit.org/show_bug.cgi?id=234008 Bug: angleproject:7386 Change-Id: I6712bf38722e2685ed7d21f12ed0a680779b7a41 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3685190 Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Gregg Tavares <gman@chromium.org>
Gregg Tavares e70bea8a 2022-06-01T12:30:56 Metal: Update MAX_LOD_BIAS The Metal implementation set MAX_LOD_BIAS to 2.0 which is the minimum the spec requires but setting a limit requires the implementation to actually respect that limit. AFAIK the limit on most GPUs, including Metal, is however many mips are allowed thereby letting you select any mip level. Note that as far as I can tell, MAX_LOD_BIAS can be larger than the maxiumum number of mip levels but there's no way to observe that behavior. There is a WebGL test for this here https://github.com/KhronosGroup/WebGL/pull/3419 It passes on OpenGL and fails on Metal without this CL. Bug: angleproject:7280 Change-Id: I365cb5b3f872cd5036765f4eec932be1e2c07f8f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3684356 Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Gregg Tavares <gman@chromium.org>
Faye Zhang 32a0ee92 2022-05-31T10:51:06 Code Cleanup In validationES.cpp, the framebuffer is required to have 0 depth bits (to conform to OpenGL ES 3.2 specifications). That is, ImageHelper::copyImageDataToBuffer() will not be called on a buffer with combined depth and stencil format. Replacing the lines relating to testing combined depth and stencil format ImageHelper::copyImageDataToBuffer() with an assert. Bug: angleproject:6856 Change-Id: I911500910b2065eb21c72d7f2d8ff481f4afa304 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3680862 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Faye Zhang <ffz@google.com>
Stephen White 6c0d4658 2022-05-27T15:32:42 D3D11: implement stencil texturing. When GL_DEPTH_STENCIL_TEXTURE_MODE is set to GL_STENCIL_INDEX, GL requires the stencil value to be in the R component. However, when sampling a depth24stencil8 texture in D3D11, the stencil ends up in the G component. So in this mode, swizzle the result from G to R. In order to sample stencil, use the appropriate stencil-only format for the SRV: X24_TYPELESS_G8_UINT for d24s8, X32_TYPELESS_G8X24_UINT for d32fs8. This required adding a new field to D3D11 Format. Bug: angleproject:7303 Change-Id: I7cf70efaaf6c833fa0b2497e4080618dfd7103ac Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3679485 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Stephen White <senorblanco@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi 28b4c378 2022-05-27T15:45:59 Vulkan: Pipeline creation feedback in perf counters Bug: angleproject:5881 Change-Id: I42917cab3c97abb50a14035972a96728dcb990b9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3672851 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Shahbaz Youssefi b0d75fb5 2022-05-31T16:55:23 Vulkan: Use 64-bit counters Some upcoming counters don't fit in 32 bits. Bug: angleproject:5881 Change-Id: I2de8a603cabdb5f7417c29d5f37a50899485d6d3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3679488 Commit-Queue: Charlie Lao <cclao@google.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Shahbaz Youssefi 53fb57a6 2022-05-31T12:13:59 Vulkan: Fix xfb emulation bug w.r.t array elements This change handles corner cases where the 0th element of the array is not captured. Bug: angleproject:7376 Change-Id: I358f064abe5e1702985ab0faf7465cef178e7b87 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3679484 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill 5a2cc71c 2022-06-01T12:06:07 Update extension support (June 1, 2022). Now includes data for Pixel 6 on Android 13. Bug: angleproject:7375 Change-Id: I115f8ead1cbfeb55b7314164409b262f58078ca5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3684029 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Roman Lavrov b03f2789 2022-05-31T20:31:23 Revert "Use a temporary timeout multipler for trace tests." This reverts commit f810e998993290f049bbdad4fae975e4867100ad. Reason for revert: Uploads are now sharded so this shouldn't be needed. Original change's description: > Use a temporary timeout multipler for trace tests. > > The trace tests upload is frequently timing out on our test infra > because of the size of the test suite. Until we can find a better > solution we can increase the timeout non-invasively using an > environment variable. > > Bug: angleproject:6854 > Change-Id: Ifbe43c4d9dc8928cf35df8a26b844f884c90eb9d > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3427560 > Reviewed-by: Cody Northrop <cnorthrop@google.com> > Reviewed-by: Yuly Novikov <ynovikov@chromium.org> > Commit-Queue: Jamie Madill <jmadill@chromium.org> Bug: angleproject:6854 Change-Id: Iaad7b63073ed900acdc575fbac927a8463b0c530 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3679487 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Roman Lavrov <romanl@google.com>
Chris Dalton 9800a3cf 2022-05-19T16:52:28 Add a test for imageLoad after glClear to the texture Bug: angleproject:7355 Change-Id: Ib1ddf685f2fa6cb24161615224971a7185234000 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3659504 Auto-Submit: Chris Dalton <chris@rive.app> Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Kenneth Russell <kbr@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill da30caec 2022-05-26T13:35:24 Vulkan: Switch resource tracking. CommandBufferHelpers now determine if a Resource is busy by looking at the "ResourceCommandBuffers" list in each ResourceUse. This reduces CPU overhead in the Aztec Ruins trace by up to 3%. Bug: angleproject:5664 Change-Id: I8d927af7f39db38c98d746ca4cc01f343d0df2e8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3668836 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 1ce69722 2022-05-18T13:05:22 Vulkan: Track used command buffers in ResourceUse. The list of command buffers to ResourceUse will replace tracking resources in a CommandBufferHelper. Currently the two tracking methods live side-by-side, and the old method will be removed in a future CL. Bug: angleproject:5664 Change-Id: Ia04d77e72c508e10b549db8c8dd5f0472e4edc83 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3656069 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Stephen White 43b5311f 2022-05-31T12:03:23 D3D11: minor cleanup to getSRVLevel(). Change getSRVLevel() to take an enum rather than a bool. Bug: angleproject:7303 Change-Id: I5b39b1b6e4f2f3f8a6bc8dd3f5690368f427f574 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3679482 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Stephen White <senorblanco@chromium.org>
Geoff Lang b6a93d75 2022-05-31T12:20:37 GL: Temporarily enable validation for all GL calls. Turn on error checks after each GL call to catch potential driver errors in the wild. Bug: chromium:983167 Change-Id: Ie8b394384223155cd033baca19306396f406cdbb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3679483 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Peng Huang <penghuang@chromium.org>
SeongHwan Park d96cee66 2022-05-31T02:41:32 Fix to invalidate cache when binding Transform Feedback. Bug: chromium:1330379 Change-Id: I091116286ac511c50f9abcffa4d3cf350be920b4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3677115 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Geoff Lang 31c13df5 2022-05-30T15:06:26 Revert "Initialize buffer contents separately from BufferImpl::setData" This reverts commit 34cff1a14b635c76a9063b8710e948d04ef98a79. Reason for revert: Speculative revert for Mac M1 WebGL failures. Bug: chromium:1330314 Original change's description: > Initialize buffer contents separately from BufferImpl::setData > > Some backends can initialize buffer data faster than allocating a > zero-filled scratch buffer (GL can map and memset for example). > Allow those backends the opportunity to make these optimizations. > > Verified that GL, D3D and VK backends do not regress by using a > separate set data call. > > Bug: chromium:983167 > Change-Id: Ibcbe6016059434dc36ab3c754df6a24f0a6e5e72 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3039778 > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Peng Huang <penghuang@chromium.org> > Commit-Queue: Geoff Lang <geofflang@chromium.org> Bug: chromium:983167 Change-Id: Id1bfa76b832c35fd0b3ade04da16735aa089fdd2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3677335 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Peng Huang <penghuang@chromium.org>
Jamie Madill 0b533e64 2022-05-30T13:09:17 Make GLProgram non-copyable. This will prevent unexpected glDeleteProgram calls from showing up. Found when working in FramebufferFetchTest. Bug: angleproject:7375 Change-Id: Id0f01d693a40edd3357a26fe13e7a7e0c1b98dd8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3673828 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 9f4b9c65 2022-05-18T14:39:18 Vulkan: Refactor command buffer retain calls. This removes "getResourceUseList" from the command buffers, and instead we pass around the command buffer helpers. Since future CLs will change the way we track resources, this provides for a more stable interface for tracking. Bug: angleproject:5664 Change-Id: I7118788570eaa3c0ddb6d5ef523e050ad7be00ad Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3645814 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Alexey Knyazev 33b254fe 2022-05-28T00:00:00 Fix ValidateFragmentShaderColorBufferMaskMatch for indexed masks Adjust WebGL-specific validation, add test. Bug: angleproject:4394 Change-Id: I4d51d6d7639a4ec3115025c858434491845440a2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3673298 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Shahbaz Youssefi 23f213d1 2022-05-26T23:43:44 Vulkan: Make drawable size uniform As a specialization constant, it's impossible to predict the value the drawable size may take, which in turn makes it impossible to warm up the Vulkan pipeline cache at link time. Bug: angleproject:7366 Change-Id: Ia3d1860a4fcb8e3078fdcb8d02a2e0cd173ea028 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3671976 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 73019ede 2022-05-27T14:15:51 Vulkan: SPIR-V Gen: No RelaxedPrecision on bitCount() and findLSB() Similarly to findMSB(), RelaxedPrecision shouldn't be applied to these instructions. They return lowp, but RelaxedPrecision affects the parameters as well. Bug: b/234143723 Change-Id: Iab7c1c0497bbc832569ced7456eaefbf52d796d6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3672847 Reviewed-by: Chia-I Wu <olv@google.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi a2fe4445 2022-05-26T12:42:39 Vulkan: Sync pipeline cache only when truly changed The Vulkan pipeline cache was considered dirty when ANGLE added a new pipeline. However, a new pipeline doesn't necessarily translate to new blobs in the pipeline cache. With this change, the cache is synced only if its size has changed. Bug: angleproject:5881 Change-Id: I0226426680f1e6b0e2bfde66ea6409362b8e72c9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3668835 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Mohan Maiya 9ea3967d 2022-05-22T13:06:18 Bug fix in GL_EXT_YUV_target Shaders with multiple samplers need to account for conflicting YUV sampler states and accordingly reevaluate them when sampler uniforms are updated. Tests: ImageTestES3.ProgramWithBothExternalY2YAndExternalOESSampler* Bug: angleproject:4852 Change-Id: Ie633e62f0bbb89f217183623d4fc6ab5b3acfd81 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3661211 Reviewed-by: Trevor Black <vantablack@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang 34cff1a1 2021-07-19T14:29:35 Initialize buffer contents separately from BufferImpl::setData Some backends can initialize buffer data faster than allocating a zero-filled scratch buffer (GL can map and memset for example). Allow those backends the opportunity to make these optimizations. Verified that GL, D3D and VK backends do not regress by using a separate set data call. Bug: chromium:983167 Change-Id: Ibcbe6016059434dc36ab3c754df6a24f0a6e5e72 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3039778 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Peng Huang <penghuang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Shahbaz Youssefi 2df17a12 2022-05-25T16:18:37 Vulkan: Pack driver uniforms Previously 5 vec4s were used for driver uniforms + 2 vec4s if specialization constants couldn't be supported. The driver uniforms are rearranged and packed such that only 2 vec4s are normally used, which include fallback for specialization constants as well. In the future, most of the specialization constants may turn into uniforms, and this change prepares for that. Additional uniforms are used (3 vec4s) only if common extensions are missing; transform feedback and bresenham lines. This change makes it more practical for driver uniforms to be turned into push constants. Additionally, these uniforms could potentially be loaded and cached at the beginning of the shader for more efficient memory access. On Pixel6, with this change, the traces show no difference in wall time. On most traces, CPU time shows up to ~7% improvement. Bug: angleproject:7366 Change-Id: I0f47f863955af06a19c69d1f1d7c45b97d95476e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3668151 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Shahbaz Youssefi 98c2e169 2022-05-20T16:17:49 Vulkan: Reduce pre-rotation spec const to bool The specialization constant now only dictates whether x and y should be swapped. The complete 8 possible states of rotation and y-flip are achieved by using this swap in combination with a driver uniform for x and y flip. Swapping is still a specialization constant to avoid degrading performance of dFdx/dFdy which otherwise would need both to be evaluated instead of one. On platforms which don't support pre-rotation, the specialization constant will never change and driver uniforms entirely govern y-flip. On platforms that do support pre-rotation, only two variations of the pipeline are needed. Bug: angleproject:7366 Change-Id: I73f84e89fa9349d2098fa5b21573aee57d93a30c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3663151 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Lingfeng Yang <lfy@google.com> Reviewed-by: Charlie Lao <cclao@google.com>
Mohan Maiya b267c009 2022-05-26T16:36:31 Add support for comparison operator in FlatUnorderedSet Overload operator== so FlatUnorderedSet objects can be used as values in a hashmap. Tests: FlatUnorderedSet.Comparison* Bug: angleproject:5033 Change-Id: Ica746adf87f7c603789593e726051e4562d6a931 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3671826 Commit-Queue: mohan maiya <m.maiya@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Stephen White ee023e6a 2022-05-26T15:23:18 D3D11: fix constant buffer cache lookup. The code was accessing the constant buffer cache by the buffer index, but storing it by the register index. The fix is to use the register index in both cases. Bug: angleproject:7304 Change-Id: I750ba2911140660b42db8e0035984da5e94b14e4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3668840 Commit-Queue: Stephen White <senorblanco@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Lubosz Sarnecki c8989675 2022-05-20T10:56:54 FramebufferTest: Add FramebufferConditionalFeedbackLoop test. Add an end2end test that reproduces VVL error seen in runescape. The test passes on OpenGL/ES. Add Vulkan test to expectations. Test: angle_end2end_tests --gtest_filter="FramebufferTest_ES3.FramebufferConditionalFeedbackLoop/*" Bug: angleproject:7357 Change-Id: I1b41503f65ea65aa0600b54e04a3ac1dd55c82aa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3664476 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Lubosz Sarnecki <lubosz.sarnecki@collabora.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi ae3de1a8 2022-05-25T23:35:38 Add test for primitive state change Bug: angleproject:5906 Change-Id: Iacae148dbf8d2be08f352d5ccc4a727e6c5247e8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3668831 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Gregg Tavares cd80b511 2022-05-26T12:00:13 Metal: Upstream uniform limits from WebKit Increases the limit from 4k to 16k which matches OpenGL. Patches are from: https://bugs.webkit.org/show_bug.cgi?id=238914 https://bugs.webkit.org/show_bug.cgi?id=240896 Bug: angleproject:7280 Change-Id: I404adce0066680513e3eaa56bd4b1079c39a7f03 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3669602 Commit-Queue: Gregg Tavares <gman@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org>
Jamie Madill 54e08a5a 2022-05-25T14:35:02 Trace Tests: Remove Pixel 2 expectations. We no longer test on this device. Bug: angleproject:5517 Bug: angleproject:5553 Bug: angleproject:5553 Bug: angleproject:5591 Bug: angleproject:5716 Bug: angleproject:5772 Bug: angleproject:5877 Bug: angleproject:6023 Change-Id: Iaf6f49cdf2a10bc0704e9956aca81b5e36679c10 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3668147 Auto-Submit: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Shahbaz Youssefi 757b8497 2022-05-25T21:58:29 Vulkan: Fix reserve varying for xfb (take 2) When the xfb extension is used, anything that might result in gl_Position being modified at the end of the shader should cause a varying to be reserved for capturing it. Previously, pre-rotation support was added to the condition (incorrectly, which is fixed in this change), but emulated pre-rotation and no-negative-viewport-support also results in modifications to gl_Position, so they are added to the condition as well. Bug: angleproject:5421 Bug: angleproject:7364 Change-Id: Ieba39b3e9f9de68ca97e94bfc3b75d787e69315b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3668828 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 891dd5b3 2022-05-25T23:05:49 Vulkan: Fix mid-RP draw clear w.r.t growing scissor UtilsVk::clearFramebuffer didn't grow the render area if scissor had grown. FramebufferVk::clearWithCommand does that and is unaffected by the bug. Normally, ContextVk::updateScissor grows the render area automatically, but clear is special in that it's not affected by the viewport while ContextVk::updateScissor is. Bug: b/232298034 Change-Id: I260a1948ba1b043e5e331e0e5c60d41e5b4cc192 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3668830 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Kai Ninomiya 7ad48b84 2022-05-26T00:23:35 Revert "Add Vulkan backend support for texture labels" This reverts commit 1afb80587e302e2ce9a901a69fd66e5ef98a73b6. Reason for revert: Null-dereference crash starting here: https://ci.chromium.org/ui/p/chromium/builders/ci/mac-swangle-chromium-x64/26323/blamelist (see angle blamelist) Crash reason: EXC_BAD_ACCESS / KERN_INVALID_ADDRESS Crash address: 0x0 Process uptime: 24 seconds Thread 0 (crashed) 0 0x0 rax = 0x0000011c0113c000 rdx = 0x0000011c09094590 rcx = 0x0000000000000006 rbx = 0x0000011c0e2a0000 rsi = 0x00007ffedfc11500 rdi = 0x0000011c01378010 rbp = 0x00007ffedfc11540 rsp = 0x00007ffedfc114f8 r8 = 0x0000000000000006 r9 = 0x0000000123a6ccc4 r10 = 0x0000011c011018d0 r11 = 0x00007ffdbc1a4834 r12 = 0x0000000000000006 r13 = 0x0000011c090944b0 r14 = 0x0000011c0e34c000 r15 = 0x00007ffedfc11550 rip = 0x0000000000000000 Found by: given as instruction pointer in context 1 libGLESv2.dylib!gl::Context::objectLabel(unsigned int, unsigned int, int, char const*) + 0x156 rbp = 0x00007ffedfc116a0 rsp = 0x00007ffedfc11550 rip = 0x00000001357b38e6 Found by: previous frame's frame pointer 2 libGLESv2.dylib!_GL_ObjectLabelKHR + 0xa5 rbp = 0x00007ffedfc116f0 rsp = 0x00007ffedfc116b0 rip = 0x000000013578e7e5 Found by: previous frame's frame pointer 3 Chromium Framework!gpu::gles2::GLES2DecoderPassthroughImpl::DoBindTexture(unsigned int, unsigned int) + 0x1ea rbp = 0x00007ffedfc11780 rsp = 0x00007ffedfc11700 rip = 0x000000011e7dcd4a Found by: previous frame's frame pointer Original change's description: > Add Vulkan backend support for texture labels > > Add onLableUpdate support for textures in the Vulkan backend. > > Bug: b/229105865 > Change-Id: Id9e5b2b81352e97b7843a63f27709739005dc2f3 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3645854 > Reviewed-by: Ian Elliott <ianelliott@google.com> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Commit-Queue: Ian Elliott <ianelliott@google.com> Bug: b/229105865 Change-Id: I5a5e00084e1320a486c43fec9d41b9ae6cb2b1db Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3669657 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Kai Ninomiya <kainino@chromium.org>
Amirali Abdolrashidi fea19567 2022-05-17T17:44:06 Vulkan: Remove removeEarlyFragmentTestsOpt flag * Removed removeEarlyFragmentTestsOptimization and the related SPIRV transformation and variables. * Removed mUsesEarlyFragmentTestsOptimization. * Removed SH_EARLY_FRAGMENT_TESTS_OPTIMIZATION. * Merged updateUsesEarlyFragmentTestsOptimization() into updateFragmentInoutRange(). Bug: angleproject:7347 Change-Id: I7299bd4e8ab5363e5cf06eb48419d4f469106e12 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3648217 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Jamie Madill 7b880204 2022-05-25T10:09:15 Vulkan: Remove invalid ASSERT in DescriptorSetDesc. This invalid ASSERT somehow was undetected pre-commit when landing the descriptor set cache CLs. It was code from before a refactor that broke the ASSERT's invariant condition. Bug: angleproject:7354 Change-Id: I4e84c78911e4c6aad826b1acabcd87216884509c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3666250 Commit-Queue: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Antonio Caggiano 4aa0975e 2022-05-24T17:34:31 Vulkan: Support Wayland EGL_DEFAULT_DISPLAY If native display is EGL_DEFAULT_DISPLAY, then DisplayVkWayland will create a new wl_display structure by connecting to the default Wayland socket. Bug: angleproject:6902 Change-Id: I0765d126f8e809426deaed5d0fb1eb0f7439164b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3664478 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 4a20c914 2022-05-20T10:26:15 D3D: Fix race condition with parallel shader compile. Bug: chromium:1317673 Change-Id: I0fb7c9a66248852e41e8700e80c295393ef941e8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3651153 Reviewed-by: Jie A Chen <jie.a.chen@intel.com> Reviewed-by: Lingfeng Yang <lfy@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Gert Wollny ccca0c25 2022-05-22T00:18:41 libANGLE: Fix evaluating the sample count OpenGL deals with the maximum number of samples, but Vulkan provides a mask of supported sample counts, so extract and limit the maximum sample count accordingly. Bug: angleproject:7328 Change-Id: If4867b2a5104062ec863eb6eb1e0c8e78e7a9c00 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3652422 Commit-Queue: Gert Wollny <gert.wollny@collabora.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Gert Wollny a8152447 2022-05-16T12:02:25 Capture/Replay: Override eglCreateImage and eglDestroyImage Bug: angleproject:4964 Change-Id: I1f67e0e32fa901249aa9ee134854afbe1ac29524 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3644579 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
Faye Zhang c608df69 2022-05-23T17:19:02 Code Cleanup In Debug.h, we unconditionally set UNREACHABLE_IS_NORETURN to 0. Since UNREACHABLE_IS_NORETURN is only used in #if directives and it is always false, we can remove all uses of UNREACHABLE_IS_NORETURN. Bug: angleproject:6134 Change-Id: I3aa88d802099d70990eae697d4f056a3f650b48d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3661376 Commit-Queue: Faye Zhang <ffz@google.com> Auto-Submit: Faye Zhang <ffz@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Faye Zhang <ffz@google.com>
Stephen White 615b2c68 2022-05-24T12:29:40 D3D: implement whole-struct assignment in SSBOs. Bug: angleproject:7395 Change-Id: I18159c5fe60585b319d3f3f282fc25fb742746b5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3664917 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Stephen White <senorblanco@chromium.org>
Alexey Knyazev 8291f2d3 2022-05-20T00:00:00 Fix ValidCompressedSubImageSize for 3D uploads Add CompressedTexSubImage3DValidation* tests Bug: angleproject:4056 Change-Id: I088273b6349729fadf2c21ca7b349e44dc9ce5f3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3657408 Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Mohan Maiya 84a0b462 2022-05-20T15:51:11 Vulkan: Bug fix in GL_QCOM_shading_rate A default value of _1x1 for mShadingRate interacts badly with sample shading state on some vendors. Instead set the default to Undefined and return early in such cases. Bug: angleproject:7172 Change-Id: If0a280090e6611817d2f5d75929ef2b654ddb186 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3658245 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Mark Lobodzinski 1afb8058 2022-05-12T16:19:14 Add Vulkan backend support for texture labels Add onLableUpdate support for textures in the Vulkan backend. Bug: b/229105865 Change-Id: Id9e5b2b81352e97b7843a63f27709739005dc2f3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3645854 Reviewed-by: Ian Elliott <ianelliott@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Ian Elliott <ianelliott@google.com>
Cody Northrop 7a243dbe 2022-05-22T19:48:34 Capture/Replay: Allow repeated Gen-on-Bind for resources We aren't clearing items from the map of resource IDs used to track Gen-on-Bind. Before this CL, an app could Gen-on-Bind, delete the resource it genned, then Gen-on-Bind again to trigger this error. The options are to add tracking to remove items from the map when they are deleted, or just remove the error and allow it to happen. Since this happens so rarely, going with the simple approach of removing the error. Test: Star Wars: KOTOR MEC Bug: angleproject:7353 Change-Id: I320771692e1c01e254fc977f5eef99284cc95f67 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3659505 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Gert Wollny <gert.wollny@collabora.com>
Shahbaz Youssefi 11e9c835 2022-05-22T23:52:35 Vulkan: Dump graphics pipeline cache graph Bug: angleproject:6565 Change-Id: Ica8fdc40ece3e1c66fae8a4f8f70a3d33374fdb8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3656639 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Hailin Zhang 35e54dbb 2022-05-20T17:24:11 Vulkan: Fix EXT_texture_buffer support condition More formats than necessary where required to have the STORAGE_TEXEL_BUFFER feature. This was based on the table in the EXT_texture_buffer spec, but that only applies to sampler buffers. Support for image buffer formats is based on acceptable formats to glBindImageTexture. Bug: b/206367167 Change-Id: I0c94c3d5a99c1e99ee1f9b05b1accdfaa38101af Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3658000 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Hailin Zhang <hailinzhang@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Antonio Caggiano f6c14933 2022-01-19T17:19:48 dEQP: Support Wayland Improve ANGLE native display factory by supporting creation of a Wayland native display. Bug: angleproject:7065 Change-Id: I0882d8666b1d07ced0804b99d1998ca45f4ad73b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3525753 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Antonio Caggiano 6e258863 2022-05-09T18:45:02 Vulkan: Use packed enum for present modes This will be useful for cases where ANGLE would need a non-Vulkan present mode. Bug: angleproject:7217 Change-Id: I3428ac9fb20788543cb24a0aa5f140e992e94001 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3636057 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Cody Northrop 9e0a7be6 2022-05-11T10:08:57 Traces: Update restricted_trace_perf.py This CL includes the following changes: * Fixes for swapped device power rails * Add process memory stats * Add shared column widths This version of the script was used for numbers generated on 2022-05-20. Test: restricted_trace_perf.py Bug: angleproject:6970 Change-Id: Idb2cb9266bb6168315b53164534a10b1df47a9da Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3661363 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Shahbaz Youssefi e4a517c9 2022-05-17T23:58:23 Vulkan: Rearrange GraphicsPipelineDesc to reduce footprint Bits for VK_EXT_extended_dynamic_state2 are moved to the end of the desc. Some bits are also rearranged and some paddings removed for a total of 4 bytes of reduction in desc size. Bug: angleproject:7328 Change-Id: I48f20408a8a2cb7bce0d8e2d0d2ccd8a121f7894 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3652747 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Shahbaz Youssefi f52c629b 2022-05-21T21:42:04 Capture/Replay: Make sure replay tests build libEGL Bug: angleproject:7352 Change-Id: Idd294af9f7359d94cd3e1708b5bb699675a538cd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3656635 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Alan Zhao 0b808c74 2022-05-21T02:00:55 Silence all std::iterator deperecation warnings This CL applies the config :angle_deqp_framework_common_warnings, which was introduced in https://crrev.com/c/3651152, to more targets. The headers that contained std::iterator, identified in https://github.com/KhronosGroup/VK-GL-CTS/pull/323, are included in files that belong to build targets that do not explicitly include those headers, so the previous CL failed to remove all warnings and allow the libc++ roll CL (https://crrev.com/c/3655638) to pass the swangle tryjobs. To verify: Checkout the libc++ roll patch at https://crrev.com/c/3655638 args.gn: build_angle_deqp_tests = true dcheck_always_on = true is_component_build = true is_debug = false symbol_level = 1 In a chromium source directory, run the following command to build all targets under //third_party/angle: autoninja -C out/Default `gn ls out/Default |\ grep '^//third_party/angle' |\ sed 's/\/\///' |\ sed 's/([^()]*)//'` Bug: angleproject:7349 Change-Id: I295872d38137794569598c39061822161d6cd655 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3651154 Reviewed-by: Nico Weber <thakis@chromium.org> Commit-Queue: Nico Weber <thakis@chromium.org>
Shahbaz Youssefi bb3afdf4 2022-05-17T16:08:06 Drop support for 64xMSAA+ Hardware that supports anything more than 32xMSAA is rare (practically only Nvidia). That high number of samples is hardly useful either way. This change reduces the number of words for the sample mask to 1, reducing the amount of state needed to track it. Bug: angleproject:7328 Change-Id: Iea9add1cbeef494ff9bb383b10c82b839d1e53a4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3652738 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi 688553c0 2022-05-16T23:27:29 Vulkan: Dynamic state for primitive restart enable Bug: angleproject:5906 Change-Id: Ida2cbe904604c638fd3a8ab498d49584dfd9c860 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3651593 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Sunny Sachanandani c76fb2d8 2022-05-18T15:29:19 Enable EXT_texture_norm16 on ES2/D3D11 Windows HDR regressed recently due to format checks added in Skia: crbug.com/1324371 Skia thinks R16/RG16 texturing is not supported, which it bases on GL_EXT_texture_norm16 not being reported on its ES2 context. Migrating to ES3 for the compositor context is a large project, and reverting the format checks in Skia is also not desirable because it helps catch bugs in ANGLE-Metal. Enable texture_norm16 on ES2 for R16/RG16 texturing since Chromium needs it for HDR video playback for P010 textures. This used to work before even though the extension wasn't advertised. Also, enable the P010 test on ES2/D3D11 which was previously ES3/D3D11 only. Bug: angleproject:7322, chromium:1324371 Change-Id: I4c2527996e37ba5365bb94b5764413e5a9fdda7b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3645892 Commit-Queue: Sunny Sachanandani <sunnyps@chromium.org> Auto-Submit: Sunny Sachanandani <sunnyps@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org>
Shahbaz Youssefi 3b78e0d5 2022-05-16T23:13:57 Vulkan: Dynamic state for depth bias enable Bug: angleproject:5906 Change-Id: I679a764e0a9ef74cc8a58f9061b42c0aaef56df2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3651592 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 7c83a363 2022-05-16T22:22:44 Vulkan: Dynamic state for rasterizer discard enable Interaction with primitives generated query are tested by those tests added in https://chromium-review.googlesource.com/c/angle/angle/+/2976181 Bug: angleproject:5906 Change-Id: I0ab9f54995504be770a93bf13337a5ffe20bf7eb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3651582 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 2faabfe5 2022-05-16T16:19:03 Vulkan: Optimize pipeline desc w.r.t dynamic state State corresponding to VK_EXT_extended_dynamic_state is moved to the back of the description and is excluded from the hash. Bug: angleproject:5906 Change-Id: I3b6efb2674e955eed6e12b6c7096a7fea63748a9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3651581 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Mohan Maiya ee1894e5 2022-05-18T16:39:22 Account for GL_ANGLE_yuv_internal_format when setting yuv state With the introduction of GL_ANGLE_yuv_internal_format an EGLImage source can be a YUV texture. Account for this possiblity when setting up EGLImage's state related to YUV. Bug: angleproject:5773 Test: ImageTestES3.SourceYUVTextureTargetExternalRGBSampleYUVSample* Change-Id: I7d06befa27dd6bd3408bda4d3f0cbe7cc21cd59a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3655129 Commit-Queue: mohan maiya <m.maiya@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 3da24b5c 2022-05-16T11:58:59 Move trace loader code to a common location. With that Capture/Replay will be able to make use of the same code. CL authored by gert.wollny@collabora.com. Bug: angleproject:4964 Change-Id: Ie1ba663169a34929f5a169ab74c7042e9fd5deb0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3645441 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Nico Weber 52c42e5a 2022-05-20T09:28:29 Temporarily disable deprecation warnings for VK-GL-CTS Merging the real fix will take a few weeks, so disable the warning until then to unblock the libc++ roll. This isn't ideal, but the alternative is temporarily brancing VK-GL-CTS, which also comes with downsides. So let's try this first. Bug: angleproject:7349 Change-Id: Ib1bb6cdb9470801f3202f75cce46ee88efb0730b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3651152 Auto-Submit: Nico Weber <thakis@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Stephen White 88f582f6 2022-05-19T09:48:21 D3D: fix whole-array assignment to SSBOs. SSBOs in HLSL are implemented as RWByteAddressBuffer, which can only Load() or Store() up to 16 bytes at a time, so value-assignment of arrays doesn't work. The fix is to implement a traversal which unfolds such assignments into an element-by-element for-loop. Bug: angleproject:7334 Change-Id: I840c8ff7b62b67dc8935d4c09589d955798d96ee Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3656070 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Stephen White <senorblanco@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi 58fd3157 2022-05-12T00:01:19 Vulkan: Dynamic state for vertex stride Bug: angleproject:5906 Change-Id: I73b7e004fc25bf3777982736412adc1ca57504b9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3644856 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Brian Osman e71a3e5f 2022-05-05T10:08:18 Insert Metal polyfill for Matrix /= Scalar when needed Bug: skia:13290 Change-Id: Id82398581b84f1990fef632006604d12341e29be Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3630018 Commit-Queue: Kenneth Russell <kbr@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org>
Yuxin Hu 78ea8521 2022-05-19T19:04:31 Suppress Flaky Tests Suppress the flaky deqp gles3 d3d tests on NVIDIA Bug: angleproject:7345 Change-Id: I2e49af4f57ecd56c5415aa93b7a636adc939f418 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3656317 Auto-Submit: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Yuxin Hu af869f4a 2022-05-19T18:39:56 Update capture replay expectation file Capture/Replay was enabled for ES3, update the expectation file to reflect the latest test results Bug: angleproject:6605 Bug: angleproject:7339 Bug: angleproject:3886 Change-Id: I1f51eee36e98edde4b3dea6ee0285eabe845547e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3656315 Auto-Submit: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Gregg Tavares 118a6484 2022-05-19T15:11:31 Metal: Upstream buffer cache fix from WebKit Patch is from: https://bugs.webkit.org/show_bug.cgi?id=239015 BufferMtl::getRestartIndices() would recalculate restart indices on each draw because RestartRangeCache::operator bool() would return m_isDirty instead of the intended !m_isDirty. Use std::optional to hold the RestartRangeCache instead of maintaining m_isDirty. This allows the type system to contribute to the correctness of the code. Dirty restart range cache is not useful and takes up memory. Bug: angleproject:7340 Change-Id: I6e3ce527700780b5fea59af405bfe06d3714e79f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3656450 Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Gregg Tavares <gman@chromium.org>
Cody Northrop f674e501 2022-05-18T22:38:12 Tests: Add Bridge Constructor Portal trace Test: angle_perftests --gtest_filter="*bridge_constructor_portal*" Bug: angleproject:7335 Change-Id: I9f66a739c8176b629c4ba31d713656d73590dd69 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3654268 Auto-Submit: Cody Northrop <cnorthrop@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Yuxin Hu 728dea2b 2022-05-19T13:04:58 Suppress Vulkan Validation Error Suppress Vulkan Validation Error to unblock the vulkan-deps roller. We should remove the suppression when the VVL issue in the commit e23f82fc84c891b3a34e6e8787913b335cbe3934 in Vulkan-ValidationLayers.git is resolved Bug: angleproject:7338 Change-Id: I3322a5b10d271dcd95da9354328facf7e3b9113d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3651531 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi c7182af2 2022-05-18T15:35:30 Vulkan: Reserve varying for xfb if pre-rotation is enabled In https://chromium-review.googlesource.com/c/angle/angle/+/3562379, the varying was no longer reserved when VK_EXT_depth_clip_control is present. This is incomplete, as pre-rotation support still requires a varying to be reserved for capturing gl_Position. Bug: angleproject:5421 Change-Id: I87feea6ed738fa685b037c14c0a24349ce496cc7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3645816 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Peter Kasting 54a6b76f 2022-05-19T07:36:54 Roll third_party/rapidjson/src/ 7484e06c5..781a4e667 (156 commits) Bug: chromium:1284275 Change-Id: I5351f6b38ad56da0a5ccae82a1b340dfe2a3c588 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3646003 Auto-Submit: Peter Kasting <pkasting@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Peter Kasting <pkasting@chromium.org>
Steven Noonan 6ae0c321 2022-05-15T18:18:47 Vulkan: clamp dynamic line width to supported values On my Apple M1, MoltenVK reports wide lines are not supported. Trying to use vkCmdSetLineWidth with any value other than 1.0f will cause MoltenVK to throw an exception and stop accepting render commands. I originally tried making this a change in the frontend Context class, by clamping the value to the supported line width range. But that approach failed the WebGL conformance tests, because queries of of GL_LINE_WIDTH must match the value specified by glLineWidth. OpenGL ES docs state: The line width specified by glLineWidth is always returned when GL_LINE_WIDTH is queried. Clamping and rounding have no effect on the specified value. Bug: angleproject:7317 Change-Id: I7a3c3454e1483f9124fd70b7e9f2138bd717e1de Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3654264 Auto-Submit: Steven Noonan <steven@valvesoftware.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Stephen White d3eb61d4 2022-05-18T11:00:34 D3D11: fix SSBO load in a return statement. Add a special case to load from an SSBO in a return statement. Add tests that exercise reading from an SSBO in a function, in both a fragment shader and a compute shader. Bug: angleproject:7226 Change-Id: I08e6c695bf080eb23661ef4df047f0f1a787b06e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3645442 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Stephen White <senorblanco@chromium.org>
Hailin Zhang b7474d0a 2022-04-28T14:44:54 D3D11: Add GL_EXT_texture_buffer support tested: deqp-gles31.exe --deqp-gl-context-type=egl --deqp-case=dEQP-GLES31.functional.texture.texture_buffer.* passed Bug: b/206367167 Change-Id: I31a6f84bd701a737735a6bac2f4eef780c24a979 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3639722 Commit-Queue: Hailin Zhang <hailinzhang@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>