src/tests/gl_tests/ImageTest.cpp


Log

Author Commit Date CI Message
Jisun Lee fc98b3f6 2025-09-30T19:40:58 Add test to verify the direct YUV sampling case This is a follow-up test to the commit below. https://chromium-review.googlesource.com/c/angle/angle/+/6797965 The test verifies that the yuv image and image view are properly initialized in a program using __samplerExternal2DY2YEXT sampler. Bug: angleproject:386749841 Test: angle_end2end_tests --gtest_filter=ImageTestES3.* Change-Id: Ia0142dfb9135df6684526bf88f8c8b257416be10 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/7001563 Commit-Queue: mohan maiya <m.maiya@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Yuxin Hu 4daab276 2025-10-01T16:20:53 Fix test supplying 2D texture data to 3D texture Bug: chromium:446633198 Change-Id: I4ee9cee6788123e5e2d5527e92433c5df61aa063 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/7004941 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Aurora Zhang f8c8264a 2025-09-17T10:01:22 Support RGBX format with GL_RGBA when using glTexSubImage2D Add an additional combination support with GL_RGBA in glTexSubImage2D for RGBX format. Add an end2end test. Bug: angleproject:444335354 Change-Id: I96fc9d3543fc58c9f666bf149f78cf9049758a32 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6938945 Reviewed-by: Charlie Lao <cclao@google.com> Auto-Submit: Aurora Zhang <Aurora.Zhang@arm.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Tom Sepez 25390156 2025-08-21T00:13:19 Suppress unsafe buffers on a file-by-file basis in src/ [1 of N] In this CL, we suppress many files but stop short of actually enabling the warning by not removing the line from the unsafe_buffers_paths.txt file. That will happen in a follow-on CL, along with resolving any stragglers missed here. This is mostly a manual change so as to familiarize myself with the kinds of issues faced by the Angle codebase when applying buffer safety warnings. -- Re-generate affected hashes. -- Clang-format applied to all changed files. -- Add a few missing .reserve() calls to vectors as noticed. -- Fix some mismatches between file names and header comments. -- Be more consistent with header comment format (blank lines and trailing //-only lines when a filename comment adjoins license boilerplate). Bug: b/436880895 Change-Id: I3bde5cc2059acbe8345057289214f1a26f1c34aa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6869022 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Mohan Maiya 214a48c4 2025-07-16T12:42:18 Vulkan: add support for yuv resolve with transient image Add support for the YUV_target extension in cases where the implementation supports VK_ANDROID_external_format_resolve without supporting nullColorAttachmentWithExternalFormatResolve. Bug: angleproject:386749841 Tests: ImageTest*YUV* Change-Id: Iebcb4f843b962f3d0d2f4e42db479902b6c1f849 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6761834 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com> Reviewed-by: Charlie Lao <cclao@google.com>
Mohan Maiya 3c41ca3e 2025-06-26T20:36:03 Bugfixes in YUV tests - There is no mechanism to query dataspace of AHB, ensure all color values are narrow range compatible - Ensure AHB usage flag reflects actual usage - Define YUV reference colors at the top and reuse in tests Bug: angleproject:386749841 Change-Id: I29d095055ede67653f89a11bae845c086c690b1a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6679988 Commit-Queue: mohan maiya <m.maiya@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Amirali Abdolrashidi 6bb47e67 2025-06-17T13:42:47 Vulkan: Limit finalizing foreign image layouts Currently, any submission results in finalizing all foreign images. However, if the submission is only limited to the outside render pass command buffer, this would result in oldLayout VVL errors (01197), as it would be too early to finalize the layout of such images at those times. At this time, this type of submission can occur if the size of buffer-to-image updates exceeds the following threshold: kMaxBufferToImageCopySize In this change, finalizing the foreign image layouts would only occur when all commands are being submitted. * In ContextVk::submitCommands(), finalizeAllForeignImages() is now called only when the submission type is Submit::AllCommands. * Added new submit tests for foreign images to ImageTest: * UploadForeignUntilSubmitDoesNotBreakRenderPass * CopyToForeignUntilSubmitDoesNotBreakRenderPass Bug: b/425987310 Change-Id: Ia345e176be79017ba18ef52a57256eeeb298e39a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6653602 Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Geoff Lang 3cf7a604 2025-05-17T19:39:08 WebGPU: Add extensions for importing external textures Add EGL_ANGLE_device_webgpu which exposes the adapter and device used by ANGLE internally. Add EGL_ANGLE_webgpu_texture_client_buffer which allows importing external WGPUTexture handles if they share the same device as ANGLE (queried from EGL_ANGLE_device_webgpu). Bug: angleproject:418022112 Change-Id: I0683d36b84a0f8e0e9b68a5ec0d3aa8b7a95152c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6553063 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang 3c0b2787 2025-05-17T19:36:42 WebGPU: Implement EGLImages Implement EGLImages for WebGPU. Cube maps, and non-zero mip sources are not supported yet. Bug: angleproject:418022112 Change-Id: I59955aee907167a1829f870b7d0730a6269d814c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6557130 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang 71b58cdc 2025-05-17T18:12:33 Fix feedback loop in ImageTest.SourceRenderbufferTargetTexture* This test would make a renderbuffer as an EGLImage source and a texture as the target. It would then try to verify the data in the texture by sampling but the renderbuffer was currently bound to the framebuffer creating a feedback loop. Bug: angleproject:418022112 Change-Id: I456eb541c84d98d99e6b8d8be817ce67d7b1d519 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6556610 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Aurora Zhang 3cc099da 2025-03-20T16:47:46 Add tests for texelFetch with samplerExternalOES Add two tests to texelFetch in the vertex shader and fragment shader for YUV with samplerExternalOES. The fetch results are expected to be RGB value. Bug: angleproject:405149439 Change-Id: I0a5809b910ac61c678ab240aea8d303e0c9646e1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6382116 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Auto-Submit: Aurora Zhang <Aurora.Zhang@arm.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Alexey Knyazev 81f1a733 2025-04-04T00:00:00 Fix use of OpenGL ES 3.0 commands in image tests Fixed tests that used OpenGL ES 3.0 commands instead of extensions when running on lower context versions. Bug: angleproject:409484297 Change-Id: Ie220acbf8d1d287e3e19a52307ac3625d2f29c9f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6469896 Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Shahbaz Youssefi 838c6596 2025-04-14T16:46:42 Add EGL image tests where source texture is modified Covering the following cases: * The source texture is changed with glTexImage2D. In this case, the image is orphaned and the siblings point to the old image. * The source texture is used in a compute shader. In Vulkan, the internal image backing is recreated, and siblings should continue to track the new image (which they don't, due to a bug). * The source texture is completely overwritten. This is in anticipation of a follow up change in the Vulkan backend that similarly may recreate the backing image of the texture (and should not be affected by the same bug). * The source texture's base level is completely overwritten while the image is in use, and glGenerateMipmap is called. This is also in anticipation of another follow up change in the Vulkan backend that may recreate the backing image. Bug: angleproject:42265356 Bug: angleproject:410584007 Change-Id: I2d5f7f668d77ec6940d34bdf80eb7c885fc6a59d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6454132 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Jiaqi Li a6f44806 2025-04-01T17:30:53 Wrong condition to call copyBufferDataToImage In function copyBufferDataToImage, it call vulkan vkCopyBufferToImage directly. To call copyBufferDataToImage directly, it needs that there's no overlap when copy. If mImage is not valid, it will assert in mImage->getActualFormatID(). Need to check its validation at beginning. Bug: angleproject:406566447 Change-Id: I875c2a97bec52251b9c5b3d196466e8bf5ce662d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6400313 Auto-Submit: Jiaqi Li <Jiaqi.Li@arm.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Yuxiang Qian 0bd4e4fe 2025-03-20T17:34:47 Add EGL siblings check in eglCreateImage If a renderbuffer/texture is created from an EGL image, then it is an EGL target and considered as an EGL sibling. If it is used to create EGL image, then it would also be an EGL source. EGL_BAD_ACCESS should be returned. An end2end test is also added. Bug: angleproject:406029225 Change-Id: I51fe5b70d8a6d1939ae1defc02edfe5cf8167684 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6389218 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Robic Sun 7fb1ac40 2025-03-10T20:28:56 Support EGLImageTargetTexture2DOES + GenerateMipmap According to the spec, If an application adds mipmap levels to a texture originally created with EGLImageTargetTexture2D, OpenGL will allocate new memory for the updated texture, copying existing data, including from the EGLImage source. So, relevant support is added. Bug: angleproject:405840226 Change-Id: I4495df2d8ee1e18b4482808a290dcd861ef85b77 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6335305 Auto-Submit: Robic Sun <Robic.Sun@arm.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Aurora Zhang 34db1c20 2025-03-20T12:56:42 Vulkan: glReadPixels should nearest sample the YUV render target Vulkan backend uses texture except texelFetch to obtain the YUV image value for glReadPixels. According to the chroma filter set in the image, it may apply LINEAR sampling. * Change this filter to NEAREST inside glReadPixels to get the correct pixel values. * Modify the fragment shader used in glReadPixels to make sure sampling from the center of the pixel. * Add a new end2end test. Bug: angleproject:404394628 Change-Id: I0e574a464639e11671f0a09eee3e9f38b5abd919 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6366299 Auto-Submit: Aurora Zhang <Aurora.Zhang@arm.com> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Aurora Zhang 4fae3323 2025-03-03T14:21:07 ValidateEGLImageObject should not skip 3D EGLImage * Vulkan and GL backends already support 3D EGLImage, so remove related part in ValidatioinEGLImageObject. * Add a new end2end test for 3D EGLImage. Bug: angleproject:399774384 Change-Id: I6c39298a2f2d4c2dded2d6ddd8b98cdb8a22616a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6311581 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Auto-Submit: Aurora Zhang <Aurora.Zhang@arm.com>
Amirali Abdolrashidi e3178f0e 2025-02-24T14:38:36 Add AHB clear tests using glClearTexImage * Add tests to clear AHB images before readback, but using glClearTexImage() instead of using a framebuffer and glClear() * AHBClearAppliedViaClearTexImageBeforeReadBack * AHBTwiceClearViaClearTexImageAppliedBeforeReadBack Bug: b/223456677 Change-Id: Ic5ad2b5202aa24f38dc1783205900a0dab5125f9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6299797 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Shahbaz Youssefi 5775a974 2025-02-21T11:00:05 Vulkan: Fix transition to FORIEGN and back in same submission Image layout transitions are typically automatically handled. In some cases however, the image layout is specifically "finalized". For foreign images, the relevant cases are all about the point in time when the image is being released. When a foreign image's layout is finalized, a barrier is generated to transition it to the FOREIGN queue on submission. Previously, an incorrect assumption was made that after such a point, the VkImage will no longer be used by any commands. This was incorrect because of EGL Images, which let the same VkImage (and ImageHelper) be shared between multiple textures. The following scenario broke that assumption: - Texture is bound to the (foreign) EGL image - Texture is used and deleted * VkImage's transition back to foreign is cached, but not executed - Another texture is bound to the same EGL image - Texture is used * At this point, the texture is re-acquired from foreign, but it wasn't released in the first place! In this change, a vkQueueSubmit is issued after the foreign image's layout is finalized to make sure the transition back to FOREIGN is applied. Bug: angleproject:42263241 Bug: angleproject:42262454 Bug: angleproject:390443243 Bug: chromium:382527242 Change-Id: Ibe3e6d60f282f9fb0eed1deba3325456017c3617 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6292804 Reviewed-by: mohan maiya <m.maiya@samsung.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Aurora Zhang 3972cfa1 2025-02-18T19:52:06 YUV should support on all the shader stages * The spec requires all shader stages should support YUV. Therefore, move YUV related functions out of the switch. * Add a new end2end test that sampling YUV in the vertex shader. Bug: angleproject:391919465 Change-Id: I7811d419d5f1461c2499c522a902c3b2149289a1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6263325 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Aurora Zhang ba174a76 2025-02-19T16:35:15 Vulkan: Bugfix for nullColorAttachmentWithExternalFormatResolve When nullColorAttachmentWithExternalFormatResolve is VK_TRUE, * The imageView in VkRenderingAttachmentInfo for dynamic rendering should be VK_NULL_HANDLE. * Push YUV resolveImageView as if it is the color attachment to ensure the coherency between ops, clearValues and attachmentViews for both dynamic rendering and render pass objects. Then pack the YUV resolve information first as well. * Add end2end tests that render and clear YUV with a depth attachment. Bug: angleproject:395212980 Change-Id: I8b6173b41723ed7dc12359e181791fb1ac22fc41 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6262510 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Shahbaz Youssefi d252425d 2025-02-06T14:51:36 Vulkan: Check source image usage flags in copy paths ... instead of the format feature flags. If the source of the copy is has external format (allowed with glCopy[Sub]TextureCHROMIUM), the format feature checks are unable to query the format features. However, the image usage flags already have the required information (whether the image can be copied from, sampled from, etc). Bug: chromium:383056998 Change-Id: I2ba8820751eb526ef497a8be724193276fd46160 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6238265 Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Robic Sun b5584cfd 2025-02-05T15:14:52 ValidTexLevelDestinationTarget should add external related cases GL_TEXTURE_EXTERNAL_OES is not documented in OES_EGL_image_external spec, but we consider that to be an omission in the spec. Bug: angleproject:394380758 Change-Id: Idb5523c173ae0a5910af97639dadff3c5adf9fdf Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6232504 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com>
Shahbaz Youssefi 0f75fc3d 2025-01-20T14:10:41 Vulkan: Transition foreign images to the FOREIGN queue on submit Vulkan's interaction with AHB and dmabuf images is through the FOREIGN queue family. When ANGLE uses these images, it must take ownership of the images by doing a queue family ownership transfer (QFOT) away from the FOREIGN queue family and into the graphics queue family used by the Vulkan backend. Prior to this change, ANGLE would do the QFOT away from FOREIGN once such a foreign image is imported into an EGL image. Afterwards, usage in ANGLE works correctly. What ANGLE did not handle is when a foreign entity wants to use these images _after_ ANGLE has used them. For the above to work correctly, ANGLE must do a QFOT back into FOREIGN before the image can be used by the foreign entity. Unfortunately, EGL does not provide a clear point for this hand-off to happen. ANGLE has no choice then to proactively transition the images back into FOREIGN at some point "just in case". For some native drivers, this hand-off to FOREIGN can be quite frequent. For example, on Android for most vendors there is no actual layout transition between graphics and FOREIGN queue families (the actual data layout is the same), so a cache flush/invalidate at strategic points (such as the end of the command buffer) is sufficient as equivalent to transition to FOREIGN (and another at the beginning of the command buffer as equivalent to transition from FOREIGN). As a layer over Vulkan's formalism, ANGLE is less lucky; it has to enumerate exactly which image is being transitioned to and away from FOREIGN. Transitions away from FOREIGN are in principle easy. As long as the image is marked as being in the FOREIGN queue family, it will automatically transition to the graphics queue family on first use. In this change, when a foreign image is transitioned out of the FOREIGN queue, it's added to a list of images to be transitioned back to FOREIGN at submit time. Once submission is done, the image may or may not actually be used by a foreign entity, but ANGLE cannot know that. The next time the image is used in ANGLE, it is transitioned out of FOREIGN. Verifying correctness with multi-threading is tricky, and relies on GL's requirement that access in one context is followed by a synchronization and rebind in another context before it can be used there. This means that the image's transition to FOREIGN (at the end of one submission) naturally happens before the transition back from FOREIGN (at the beginning of the next submission). Because the set of images to transition is tracked in the context, submissions in other contexts don't interfere with the above logic. The situation can be more complicated with one-off submissions, but fortunately, no such usage of foreign images is present. Another wrinkle is simultaneous usage of the image as read-only in two contexts. According to GL, this is not a hazard and requires no synchronization. However this is broken in ANGLE even for non-foreign images (see http://anglebug.com/42266349), because as what _seems_ like read-only usage of the image from GL's point of view (like sampling from the image), there are associated write operations from Vulkan's point of view (image layout transitions and QFOT). This change does not attempt to address this corner case. Bug: angleproject:42263241 Bug: angleproject:42262454 Bug: angleproject:390443243 Bug: chromium:382527242 Change-Id: Idd4ef1fecfa3fccf1a4063f1bddb08d28b85386b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6184604 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Xin Yuan c7cfbbc9 2025-01-20T22:31:42 Check if the GLES resources are bound to EGL image Per spec, The resource that will be used to create egl image must not itself be an EGLImage sibling, so validation for the resource in this case should be include. Bug: angleproject:388310036 Change-Id: I2b47e3de4f92beca7ff7a80383a7598c79fdedb0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6170833 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Xin Yuan 4c1354d9 2025-01-03T14:41:27 Make sure the AHB is not corrupt when bound to egl image The AHB bound to egl image could be corrupt or not a valid ANativeWindowBuffer, it should be validated when creating egl image. Bug: angleproject:387226848 Change-Id: Iefc5506746ceaad92d16b02d5c0838156eee2f9d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6126739 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Yuxiang Qian 2de256cb 2024-12-30T17:26:38 Change some error type in eglCreateImageKHR Following the spec, for eglCreateImageKHR, if target is EGL_LINUX_DMA_BUF_EXT and attribute value is not expected, then EGL_BAD_ATTRIBUTE should be returned. However, ANGLE would return EGL_BAD_PARAMETER. Now change these error handlings to return EGL_BAD_ATTRIBUTE. Also, a end2end test is added. Bug: angleproject:387892107 Change-Id: I73ecfc3da273c0fb5ac362e451fd186209f1a52b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6146196 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Kimmo Kinnunen 19ef77a2 2025-01-09T15:37:34 Validate glEGLImageTargetRenderbufferStorageOES renderbuffer glEGLImageTargetRenderbufferStorageOES changes the renderbuffer. Avoid crashing if there is no renderbuffer bound. Bug: angleproject:388616184 Change-Id: I05eacb7a5907d2ca9cde8e91aa7814daa3008c71 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6163503 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shufen Ma a614c8ab 2024-12-10T11:14:29 Check alpha in ColorMask for YUV target ColorMask is used to mask the writing of R, G, B and A values to all active draw buffers. r, g, b, and a indicate whether R, G, B, or A values, respectively, are written or not (a value of TRUE means that the corresponding value is written) except when the color buffer is in YUV color space, in that case setting any one of the r, g, b, and a values as false would generate draw time INVALID_OPERATION error. Bug: angleproject:383174962 Change-Id: I38c2510c307dd8158e71c920986cb497ca923ff9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6083471 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Xin Yuan 4b84ee4c 2024-12-03T16:21:38 Vulkan: Implement GL_EXT_EGL_image_storage_compression Bug: angleproject:352345943 Change-Id: I82a54fa2515254a1045f512818ca23a540cd7a6e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6065464 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Xin Yuan cc5218af 2024-12-02T16:06:10 ANGLE will crash when the buffer is NULL in eglCreateImageKHR When creating egl image with android native buffer, and the buffer pointer is NULL, ANGLE will crash. Because the type of pointer in EGL and vulkan is different. In EGL, the type of this pointer is ANativeWindowBuffer, But In vulkan it is AHardwareBuffer, which has an offset compared with AHardwareBuffer, so it will access invalid address. Bug: angleproject:379764621 Change-Id: Ifb5d4a81dea85eb23d4e3f82c37f13c7e4809ee5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6061898 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Yuxiang Qian c56867ec 2024-10-28T17:18:19 Refine sRGB support GetNonLinearFormat should return the format itself if format is non-linear. Also, for linear colorspace, sRGB render target should be supported. Bug: angleproject:377144464 Change-Id: I1179a3dbf67b619bae276e607bc61a85c1639c17 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5982242 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: mohan maiya <m.maiya@samsung.com>
Shahbaz Youssefi ecfa4874 2024-11-20T00:41:03 Assert no GL errors at the end of image tests Bug: angleproject:42265697 Change-Id: Iac9241d0fbe384b10fc0b0f6b2f764efca674ac3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6032805 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Mohan Maiya 17a01469 2024-10-26T06:07:31 Vulkan: Bugfix TextureVk::generateMipmap Add support for generating mipmaps of textures that are EGLImage texture targets with colorspace overrides Bug: angleproject:40644776 Tests: ImageTestES3.SourceAHBTarget2DGenerateMipmap* Change-Id: I9b4ff802f4118a42d54dc8d80ab30e2f9958bfee Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5966623 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Mohan Maiya b3d85cce 2024-09-30T14:28:35 Vulkan: Consolidate write colorspace override states ColorspaceState struct is now used to cache write colorspace related states to determine the colorspace of Vulkan draw image views. ImageViewHelper methods are called during initialization and when colorspace related states are toggled dynamically which in turn process these states and determine the final write colorspace. We can now fully support rendering to EGLImages, with colorspace overrides, via texture or renderbuffer EGLImage targets Bug: angleproject:40644776 Tests: ImageTest*Colorspace*Vulkan MultithreadingTestES3.SharedSrgbTextureMultipleContexts*Vulkan ReadPixelsPBOTest.SrgbUnorm*Vulkan Change-Id: I2be2cd3b5b2b4ac8ecb803c34cde2b846cbd1cbe Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5901256 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Yuxin Hu eaffa034 2024-09-24T20:56:04 Revert "Vulkan: Consolidate colorspace override states" This reverts commit bffcd235ba6c031603d798daaa98f1cf9a3f3e46. Reason for revert: Breaks Android test `org.skia.skqp.SkQPRunner#UnitTest_DMSAA_dst_read`. Details: https://b.corp.google.com/issues/369388539. Original change's description: > Vulkan: Consolidate colorspace override states > > ColorspaceState struct is now used to cache colorspace related states > and used to determine the colorspace of Vulkan image views. > ImageViewHelper methods are called during initialization and when > colorspace related states are toggled dynamically which in turn process > these states and determine the final read and write colorspaces. > > We can now fully support rendering to EGLImages, with colorspace > overrides, via texture or renderbuffer EGLImage targets > > Bug: angleproject:40644776 > Tests: ImageTest*Colorspace*Vulkan > MultithreadingTestES3.SharedSrgbTextureMultipleContexts*Vulkan > SRGBTextureTest.SRGB*TextureParameter*Vulkan > SRGBTextureTestES3.SRGBDecodeTexelFetch*Vulkan > ReadPixelsPBOTest.SrgbUnorm*Vulkan > Change-Id: I1cc2b5bd834b519b83deab4d80a2fcaabeb271d6 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5841290 > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Reviewed-by: Charlie Lao <cclao@google.com> > Commit-Queue: mohan maiya <m.maiya@samsung.com> Bug: angleproject:40644776 Change-Id: I5bf6cf2ed0c8ec22fc02d8c3da92673ee85fe002 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5888506 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Mohan Maiya 49ea6f00 2024-09-08T11:32:16 Cleanup ImageTest skip conditions Early-return with a compiler guard prevents a test from being recorded in the skip test list log. Make sure to use the "ANGLE_SKIP_TEST_IF" macros for AHB tests. Bug: angleproject:40644776 Change-Id: I3e15203b8e17512ecb89abc7e53769c06b770213 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5842744 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Mohan Maiya bffcd235 2024-09-13T14:58:00 Vulkan: Consolidate colorspace override states ColorspaceState struct is now used to cache colorspace related states and used to determine the colorspace of Vulkan image views. ImageViewHelper methods are called during initialization and when colorspace related states are toggled dynamically which in turn process these states and determine the final read and write colorspaces. We can now fully support rendering to EGLImages, with colorspace overrides, via texture or renderbuffer EGLImage targets Bug: angleproject:40644776 Tests: ImageTest*Colorspace*Vulkan MultithreadingTestES3.SharedSrgbTextureMultipleContexts*Vulkan SRGBTextureTest.SRGB*TextureParameter*Vulkan SRGBTextureTestES3.SRGBDecodeTexelFetch*Vulkan ReadPixelsPBOTest.SrgbUnorm*Vulkan Change-Id: I1cc2b5bd834b519b83deab4d80a2fcaabeb271d6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5841290 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Shahbaz Youssefi 1f87cbc9 2024-07-15T13:07:35 Vulkan: Fix late-added resolve attachment tracking Resolve attachments may be added after the fact to a render pass due to glBlitFramebuffer or eglSwapBuffer. Previously, only the resolve image views were tracked by the render pass, and otherwise the state tracking (layout, content defined, etc) treated the resolve images as generically written-to by the render pass. As a result, the render pass was unable to finalize the layout of the resolve images early. Optimizing the layout of the swapchain image when the surface is multisampled for example was not done due to this issue. In this change, when resolve attachments are added late, they are tracked identically to when they are added at the beginning of the render pass, fixing the issues described above. Bug: angleproject:42265625 Bug: angleproject:42266019 Change-Id: I765560762bb8caf39ba1096fb028177201c082d7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5707470 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 3f572905 2024-06-19T17:46:38 Add basic begin/end support for perf counters The AMD_performance_monitor extension has explicit begin/end calls to capture counters. This was not implemented in ANGLE and the tests were relying on ANGLE always capturing counters (incurring a small overhead). This change does not complete the implementation of that extension, but does add basic support for starting and stopping perf counter measurements. While inactive, most counters are not updated. Bug: angleproject:42267038 Change-Id: I3ff6448b22ca247c217401cb2d76ef4142c9d759 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5639343 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Shahbaz Youssefi d193d51b 2024-06-17T22:46:08 Replace issue ids post migration to new issue tracker This change replaces anglebug.com/NNNN links. Bug: None Change-Id: I8ac3aec8d2a8a844b3d7b99fc0a6b2be8da31761 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5637912 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Roman Lavrov 442d66e3 2024-06-10T14:48:31 Tests: add "AHB" to ImageTest.UpdatedExternalTexture test name Other tests using AndroidHardwareBuffer have AHB in the name Bug: b/338429767 Change-Id: Ief9c6e5401baed54bc85696957ddc77b71dfe06b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5617330 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Roman Lavrov <romanl@google.com> Commit-Queue: Roman Lavrov <romanl@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Mohan Maiya 8899e18d 2024-03-21T14:30:50 Add skip conditions for a few tests 1. Skip EGLBlobCacheTest if `CacheCompiledShader` feature is disabled 2. Skip RGBAHBUploadDataColorspace test if allocating RGB8 AHB with requested usage flag is not supported Bug: angleproject:7036 Bug: b/298037344 Change-Id: I07c48df327a879c1d46873f47bb5bd305e07a758 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5386030 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi b3ab67d3 2024-03-14T15:06:02 tests: Remove unnecessary .get() from RAII objects Bug: chromium:40942995 Change-Id: I82509869bce3ad8f51811188fe04267f2de04786 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5370904 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Amirali Abdolrashidi 3c517e45 2024-02-14T14:26:42 Vulkan: Process ClearEmulatedChannels update first * When going through the level updates in flushStagedUpdates(), the ClearEmulatedChannels updates are expected to be before the rest. In addition, there can be only one such update in the level update list. Therefore, now they are processed and applied before the rest of the updates. By doing so, if this is the only update for the image, an unnecessary layout transition can be avoided. * Added flushStagedClearEmulatedChannelsUpdates(). * Added flushStagedUpdatesImpl() for the rest of the update types. * Used clipLevelToUpdateListUpperLimit() to limit the flush loops to the number of levels in subresource update list. * Added unit test to ensure updates after ClearEmulatedChannels are not ignored. * ImageTestES3.IncompleteRGBXAHBImportThenUploadThenEnd * The test contains a ClearEmulatedChannels followed by an image update. If the latter is ignored in this test, there is a failure during teardown due to orphanNonEmptyBufferBlock when destroying the buffer that contains the update. Bug: b/308455694 Change-Id: I53c73acb60a9c5440548886cde913112a664402d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5297317 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Mohan Maiya f1fee64d 2024-01-10T13:35:53 Bugfix in MultithreadedAHBImport tests Depending on thread scheduling it is possible that thread0 moves beyond Step::Start before thread1 waits for it. This causes a FATAL error with log - FATAL: MultiThreadSteps.h:73 (waitForStep): \ waitForStep requires increasing order. mCurrentStep=1, waitStep=0 Fix this by making thread1 wait on Step::Thread0Created* Bug: b/261552549 Change-Id: I8e7c9ed554285fea5674263c5807db67b908a725 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5186836 Commit-Queue: mohan maiya <m.maiya@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao 90767546 2023-12-01T12:27:15 Vulkan: Add test for __samplerExternal2DY2YEXT then swizzle Added a correctness test SourceYUVTextureTargetExternalRGBSampleYUVSampleWithSwizzle for applying swizzle after sampler. Also removed some bug workaround for VVL and drivers since they are fixed now. Bug: b/309480316 Change-Id: If82b2251745a96335b535c67b6e0c0847268b25b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5080497 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: mohan maiya <m.maiya@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Chris Forbes c0c20673 2023-10-31T09:03:16 Remove expections for some AHB tests which are now fixed Bug: b/223456677 Change-Id: Ibdc5b529e249c39c241a8e8e2b78ac10ff3d5ad2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4988292 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Charlie Lao c0f94afb 2023-10-30T11:07:02 Vulkan: Limit ImageTestES3.RGBXAHBImportMultipleLayers to 1 layer ImageTestES3.RGBXAHBImportMultipleLayers is testing 3 layer AHB with CPU write. It assumes alignment between each layer is 4096 which appears not always true in ARM driver. I am also not seeing any API that would tell us the underlying layer alignment. So for now restrict this test to single layer. Bug: b/223456677 Change-Id: I447990d08d31c2a20e8765686834f43b81560840 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4990044 Reviewed-by: Chris Forbes <chrisforbes@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Charlie Lao 5fa65ec8 2023-10-27T16:12:46 ImageTest: check support before test cubemap ImageTestES31.SourceAHBCubeArrayTargetCubeArray crahes because AHB creation failed. We should check kAHBUsageGPUCubeMap support and bail out if not supported. Bug: b/223456677 Change-Id: I0d66830ac892e673bc39cca8caf5e25822957775 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4985412 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Chris Forbes <chrisforbes@google.com>
Charlie Lao bcd331f1 2023-10-27T15:21:35 ImageTest: Allow writeAHBData to fail ImageTest::SourceNativeClientBufferTargetRenderbuffer test is using EGL to create a AHB. eglCreateNativeClientBufferANDROID does not allow us to specify CPU access. So driver may allocate AHB in a way that prohibits CPU access. That will cause AHB lock to fail and writeAHBData crash. This is within AHB specification. This CL allows this to fail so that we wont crash. Bug: b/223456677 Change-Id: I549b940d1283165cec1dc48ea5b43ba917081252 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4985627 Reviewed-by: Chris Forbes <chrisforbes@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Tommy Nyquist 95fe7e47 2023-10-27T14:07:52 [Android] Update NDK version check for hardware buffer. The function used for checking if hardware buffer is supported requires NDK 29, but is currently checking if 26+ is in use. This was not an issue before, but when updating the minimum SDK (and NDK) version in Chromium, this led to an inconsistency. For now, increasing the version requirement to 29+, and therefore also removing the unnecessary branch for lock planes support. Bug: chromium:1497004 Change-Id: I3d6e60e51db0831ee81d817aec90760d7680cc31 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4985624 Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Kenneth Russell <kbr@chromium.org>
Geoff Lang 729e19ac 2023-10-24T15:31:17 Remove essl3 extension requirement for ES3 texture parameters The extensions are not clear about support for the swizzle parameters with external textures. Other parameters are mentioned with specific validation (which is handled in ValidateTexParameterBase). Simply let the other validation handle these parameters and allow the swizzle to be forwarded. Bug: chromium:1493448 Change-Id: Ic34d4c124c5493fef796322b5237541e557fd7ab Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4973157 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Charlie Lao 7c3c7b7b 2023-08-29T16:40:50 Add more test for GL_SRGB8 format And follow up changes from crrev.com/c/4819053 Bug: b/298037344 Change-Id: Ib27cc2fb8418d05d0b25f4abbdcf052d1f51c9ca Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4824046 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Mohan Maiya e50d3876 2023-08-04T14:47:41 Vulkan: Retain loadOp when there is a resolve attachment Rendertargets with resolve attachments cannot optimize away loadOp Load or Clear even if they are marked ResourceAccess::Unused and storeOp is RenderPassStoreOp::DontCare. Bug: angleproject:4836 Bug: angleproject:5981 Tests: ImageTest.SourceAHBTarget2DMSRTTInteraction* Change-Id: I39ec67a457de6876ed0bd47d66a963cc59fab064 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4753735 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: mohan maiya <m.maiya@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Mohan Maiya 19c4e885 2023-07-13T15:24:03 Update input color in YUVSampleLinearFiltering test This test uses narrow range encoding (as can be seen from the color value for black) but the Cr component for red is greater than 240. On some platforms with different clamping logic the output color after conversion ends up not being red. Update the input colors to account for different implementations. Bug: b/210526871 Test: ImageTestES3.SourceYUVAHBTargetExternalYUVSampleLinearFiltering* Change-Id: Ib9b76c9433b07f5ce8a129779e77bc682bb341ac Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4684018 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Mohan Maiya 75813905 2023-06-30T08:47:29 Update ANGLEExtensionAvailability test expectation ANGLEExtensionAvailability test should allow vendors that support VK_EXT_image_2d_view_of_3d Vulkan extension to expose EGL_KHR_gl_texture_3D_image extension string with the Vulkan backend. Bug: angleproject:7320 Test: ImageTest.ANGLEExtensionAvailability* Change-Id: I3f6d407e100827604124e312bb61a59dbfb50dac Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4658874 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Mohan Maiya a31e8c30 2023-06-24T15:53:57 Refactor Image colorspace tests for better readability 1. Always upload color values encoded in sRGB colorspace for sampling tests and linear colorspace for rendering tests. Depending on attribute list, the test will either expect color decoded in linear space or sRGB color value as is 2. Add helper functions that determine expected output color for a given attribute list and EGLImage usage Refactor TEST and helper functions to account for the above updates Test: ImageTest*_Colorspace* Bug: angleproject:3756 Change-Id: I54ae22b2d379e6fdfa04429849de5efe9684caf4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4643452 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Shahbaz Youssefi f1e19872 2023-06-12T14:38:23 Vulkan: Fix read pixels with RGBX Typically, the format used for data uploads and downloads as well as the storage format are consistent. That is unfortunately not the case for GL_RGBX8_ANGLE where data uploads are through 3-byte RGB pixels while downloads are through 4-byte RGBX pixels. This change swaps out RGBX for RGBA on the read pixels path. Test credit of Jason Macnak <natsu@google.com> Bug: b/246008627 Test: atest CtsSkQPTestCases Change-Id: I531ebd8318bf4fe5ac09c623068b790a7e301428 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4608488 Reviewed-by: Jason Macnak <natsu@google.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Jason Macnak 5ab2fa96 2023-05-12T08:38:19 Vulkan: Move texture QFOTs to syncState() ... (and getAttachmentRenderTarget() which is syncState()-like for deferred clear) so that QFOTs are not actually scheduled until first use. SurfaceFlinger optimistically creates EGL images and textures for AHBs in case it does need them in the future. However, the images and textures may go unused. Prior to this change, ANGLE would create pending QFOT barriers while importing AHBs into EGL images and GL textures. However, SurfaceFlinger may not be doing any "real work" (other than repeatedly creating and destroying EGL images and GL textures) which would result in the command buffers containing the QFOTs being flushed. This can result in a large build up of unreleased memory (as the VkDeviceMemory would still be kept alive by the reference from the unflushed QFOT command buffer) and lead to the low memory killer nuking processes. Bug: b/282075554 Test: cts -m CtsOpenGLTestCases -t android.opengl.cts.GLSurfaceViewTest Test: adb shell dumpsys SurfaceFlinger Test: angle_end2end_tests --gtest_filter=ImageTestES3.AHBImportReleaseStress/ES3_Vulkan Change-Id: I7776abb2c6f834e96aa3926c26e77c53352ee561 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4527437 Commit-Queue: Jason Macnak <natsu@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Jason Macnak c94ee61c 2023-05-11T16:40:09 Tests: Update AHB test to skip if format/usage combo not supported Bug: b/282075554 Test: angle_end2end_tests --gtest_filter=ImageTestES3.*/ES3_Vulkan on Cuttlefish Change-Id: Icd8a9ad71d5b59d5754f4c32f3c4dffb32bf845c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4527436 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang a8720455 2023-03-10T13:48:03 D3D11: Add logic to disassociate EGL image storages. The TextureStorage classes for External and EGLImages were missing the logic to disassociate from images. This lead to the images continuing to hold references to deleted storages. Bug: chromium:1415330 Change-Id: I8303f6751d87a9b0a52993c7d4e9509b086b93f3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4328347 Reviewed-by: Peng Huang <penghuang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Igor Nazarov 233c128b 2023-01-17T19:21:58 Vulkan: Fix UBs when deleted attachment is used in a RenderPass. Problem: - "RenderbufferVk"/"TextureVk" with "mOwnsImage == false" used as RenderPass attachment. - "RenderbufferVk"/"TextureVk" deleted. - Owning resource is destroyed ("EGLImage" and all siblings / "EGLSurface"). - Crash (UB) may happen when ending RenderPass, flushing or executing commands. Fix adds tracking of "vk::ImageSourceID" value in "vk::RenderPassAttachment" - IDs of objects, that originally provide "vk::ImageHelper" images. This is necessary, because when using EGLImage, there may be multiple "TextureVk" objects with same "vk::ImageHelper", and need to call "finalizeImageLayout()" for the correct attachment. Bug: angleproject:8032 Test: angle_end2end_tests --gtest_filter=ImageTest*DeletedWhileInUse* Test: angle_end2end_tests --gtest_filter=PbufferTest.UseAsFramebufferColorThenDestroy* Change-Id: I50fdd9d6b6a9677adad2262373303b46de1dee4c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4296014 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Mohan Maiya 90b6d511 2023-01-13T10:06:12 Vulkan: Add support for AHB usage FRONT_BUFFER flag AHB usage flags have been updated to include front buffer usage. AHBs tagged with this flag need to be handled similar to single-buffered window surfaces especially w.r.t glFlush semantics. Account for the new usage flag when deferring flushes. Bug: angleproject:7956 Test: Android VTS GraphicsFrontBufferTests.* Change-Id: I79440d8447ac569c3d785de191815d2d2f3f069f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4167063 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Yuxin Hu 5f1ab1d1 2023-01-03T11:48:51 Fix Deferred Flush Bug On Android Hardware Buffer When does app read from Android Hardware Buffer is outside of ANGLE's control. If we defer glFlush, it is possible that when the app is reading from AHB, the commands have not been flushed and executed, causing app to read unexpected data. This change adds a check to not defer glFlush when the Framebuffer draw attachment is Android Hardware Buffer. Bug: b/262886794 Change-Id: Ie0606f71b1a4f4f20511b7327e7ffb8c096ac727 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4126700 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Shahbaz Youssefi fd75686e 2022-12-07T16:40:54 Vulkan: Fix EGL image queue change vs threads ANGLE records commands (a queue transfer and layout transition) when an external image is bound to a texture or a renderbuffer. If another thread starts using these resources, the recorded commands should have been flushed. The application is not required to synchronize between the threads in this case (or at least, there are applications that don't). Bug: b/261552549 Change-Id: I9f345316269baf5f10576dbef73b86924efd5c6f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4088903 Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Charlie Lao <cclao@google.com>
Yuxin Hu c22f091d 2022-09-29T18:58:33 Replace Hard-Coded egl image attribs This change is adapted from https://crrev.com/c/3838866 Added two hash maps to track below information: EGLImage* --> EGLint* attrib TextureID --> EGLImage* During the CaptureShareGroupMidExecutionSetup, when we iterate through all the textures the app created, if the texture is bound to External target, we will refer to the hash map TextureID --> EGLImage* to find the EGLImage* pointer, and then use the result as the key to refer to the other hash map EGLImage* --> EGLint* attrib to find the attributes used to create that EGLImage object. We can then use the attributes to populate eglCreateImage or eglCreateImageKHR calls in the trace calls. Bug: angleproject:7570 Change-Id: I729de4ddea59242ccbe6243e036451f290545185 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3928212 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Yuly Novikov 34332f85 2022-09-13T13:54:14 Fix UninstantiatedParameterizedTestSuite errors on iOS. Some test suites are instantiated only on ES31 or Vulkan, which iOS doesn't support. Bug: angleproject:5417 Change-Id: Iea202934edb3804993dabd38f2629d4992eb2095 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3892013 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Auto-Submit: Yuly Novikov <ynovikov@chromium.org>
Jason Macnak 80f6a63a 2021-11-11T10:40:26 Tests external image uploads with colorspace Repros of android.hardware.nativehardware.cts.AHardwareBufferNativeTests#SingleLayer_ColorTest_GpuSampledImageCanBeSampled_R8G8B8A8_UNORM_sRGB android.hardware.nativehardware.cts.AHardwareBufferNativeTests#SingleLayer_ColorTest_GpuSampledImageCanBeSampled_R8G8B8X8_UNORM_sRGB These two pass: - RGBAAHBUploadData - RGBXAHBUploadData but these two fail: - RGBAAHBUploadDataColorspace - RGBXAHBUploadDataColorspace Bug: b/205995945 Test: newly added tests Change-Id: I1a27be43ae73b08b406f8f60fd6eec3dc28d8229 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3276713 Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Yiwei Zhang 41c01134 2022-08-23T06:00:04 Extend the image test to verify RGBX AHB and GL_RGB upload This changes updates the RGBXAHBImportThenUpload test to do texture upload to the right side and adds a new helper to validate the render result on both sides to check the upload respects the GL_RGB channels. Bug: b/238460927 Test: ImageTestES3.RGBXAHBImportThenUpload Change-Id: I61723e7db99dab78b7828b783bb7cdf062f39ad9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3849462 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Yiwei Zhang <zzyiwei@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Faye Zhang 4c941149 2022-08-12T11:42:07 External Texture Support In MEC Bug: angleproject:4964 Change-Id: I5cfbadf515a30fb20d75b2d745fdecdafa12268f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3812378 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Auto-Submit: Faye Zhang <ffz@google.com> Commit-Queue: Faye Zhang <ffz@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Shahbaz Youssefi 1ae7a56c 2022-07-14T13:11:16 Vulkan: Fix double clear of AHBs Originally when deferred clears were implemented, it was assumed that it's impossible at glClear time to have a render pass open without any commends. This assumption was broken under two circumstances: - Clear of 3D attachments that don't include all layers - Clear of AHBs In these cases, the clear immediately opened a render pass with nothing but loadOp=CLEAR. If another clear followed, an assertion would fire. In this change, open render passes without commands are handled such that clears are accumulated in the loadOps. Bug: b/223456677 Change-Id: If99bcf9e24454b0c9e140cb93df7e7f76f175363 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3763169 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Lingfeng Yang <lfy@google.com> Reviewed-by: Lingfeng Yang <lfy@google.com>
Mohan Maiya 81a69da6 2022-06-30T09:56:54 Vulkan: min/mag filters follow chroma filter value The Vulkan spec states that for those formats lacking support for VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT the min and mag filter must be equal to the sampler YCbCr conversion's chroma filter. Having the min/mag filters follow the chroma filter leads to simpler and more efficient code. Also update getPreferredFilterForYUV function to return existing filter value when preferLinearFilterForYUV feature is disabled. Bug: angleproject:7382 Bug: angleproject:7392 Tests: Texture2DTestES3YUV.TexStorage2DYuvFilterModes* Tests: ImageTestES3.SourceYUVAHBTargetExternalYUVSampleLinearFiltering/ES3_Vulkan Change-Id: I550ef8feede1dc6c3a0d8e32f790113e90ef7a4b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3739582 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Eddie Hatfield 89e38b57 2022-06-22T15:04:08 Refactor to use ANGLETest vs ANGLETestWithParam Bug: angleproject:6747 Change-Id: I72ad52d0268eae0e1a401f12f3e94cc5efa402f2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3719002 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Yuxin Hu 4c5e9d47 2022-06-21T17:12:56 Do not defer clear if FBO attachment is AHB image When application uses Android Hardware Buffer (AHB) image as the Framebuffer Object (FBO) attachment, it is possible the app doesn't call glReadPixels to fetch the FBO color. In this case deferred clears will not be flushed when the app reads the FBO pixel color, and the app will read the old FBO color. This CL fixes the issue by flushing the glClear calls immediately when any of the FBO color attachments is AHB image. Bug: b/236394768 Bug: angleproject:7458 Change-Id: I9151ab57750007c4ac18af39c3fa4abe752ede5e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3715851 Reviewed-by: Lingfeng Yang <lfy@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Charlie Lao <cclao@google.com>
Charlie Lao 4c6d47c8 2022-06-08T15:20:49 Vulkan: Optimize glEGLImageTargetTexture2DOES with same args If we are creating a texture with the same source eglImage, right now we will release the existing mImage (will not actually destroyed) and then free VkImageViews. Then it point back to the same mImage and allocate new VkImageViews. Since these ImageViews have different serial number, we end up with DescriptorSet cache miss. This CL avoid all these hassles if we are creating with the exact same image. Bug: b/234602034 Change-Id: I04cec05716974e274d6e3678e91ff248f50e9355 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3697204 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Ian Elliott <ianelliott@google.com> Auto-Submit: Charlie Lao <cclao@google.com> Commit-Queue: 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>
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>
Mohan Maiya 078da78f 2022-03-17T13:06:58 Vulkan: Support GL_EXT_EGL_image_storage extension This extension provides a mechanism for creating texture objects that are both EGLImage targets and immutable and removes the possibility of implicit orphaning. EGL images created from external sources now support types other than 2D. Tests covering the new feature were added to ImageTest.cpp. Bug: angleproject:6346 Change-Id: Id3e328f352deb1af47062be232384229a8b1c341 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3530489 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Tim Van Patten fd014271 2021-12-16T20:44:42 Vulkan: Match chromaFilter to min/mag for YUV AHBs From the VVL: VUID-VkSamplerCreateInfo-minFilter VkCreateSampler: VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT specifies that the format can have different chroma, min, and mag filters. However, VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT is not supported for VkSamplerYcbcrConversionCreateInfo.format = VK_FORMAT_UNDEFINED so chromaFilter needs to be equal to minFilter/magFilter. We don't know what the min/mag filters are when the AHB is imported, so we need to update the YcbcrConversionDesc with the current min/mag filter value before creating the VkSamplerYcbcrConversion when the ImageView is created. Additionally, if the min/mag filters are updated later, TextureVk::syncState() needs to recreate the ImageViews to ensure the chromaFilter matches the new min/magFilters. Test: atest android.media.cts.DecodeAccuracyTest#testGLViewDecodeAccuracy[0] Test: ImageTestES3.SourceYUVAHBTargetExternalYUVSampleLinearFiltering Bug: b/210526871 Change-Id: I95dbd9738f6e3fd0870e484518eee105e995f93a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3346394 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Tim Van Patten <timvp@google.com>
Geoff Lang a8000240 2021-10-05T13:12:22 Don't release EGLImage refs until backends are respecified orphanImages is called before impl methods to respecify textures and renderbuffers. This can cause the backend objects to reference deleted images. TextureVk::handleImmutableSamplerTransition is one such function that is called using "previousImage". Fix this by having orphanImages return a RAII object that deletes the image when the caller chooses. In this case, after the impl methods have been called to respecify the backend data. Bug: b/194432407 Change-Id: Ifb265b4409ba43478731a1701e2409f089976b1d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3206430 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Shahbaz Youssefi f3334d03 2021-09-30T23:44:54 Vulkan: Fix importing layered AHBs Bug: angleproject:6475 Change-Id: Iceb0880cadc54552d3f01593d2e12088cafa10cc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3198733 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi a097ee2e 2021-09-27T15:18:02 Vulkan: Fix clearing external images with emulated format External images may already have data, and clearing them due to their format being emulated is incorrect. This change makes sure that only the emulated channels are cleared. The RGBXDataPreservedAHB test is based on one contributed by Jason Macnak <natsu@google.com>. Bug: b/192315789 Change-Id: Ibc8953fdac356f2a62a5b46512a51e1916b4a1b6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3193416 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Shahbaz Youssefi a78310ee 2021-09-29T12:37:42 Clean up ImageTest.cpp Removed manual gen/delete calls and replaced GLuints with RAII types. Bug: b/192315789 Change-Id: Ic2e7f3fcc3cefe83917d3b8dcc4ec2979c732b21 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3193415 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Ian Elliott <ianelliott@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Cody Northrop f46df397 2021-07-14T19:41:03 Vulkan: Suppress VVL errors triggered by external formats Since several tests are hitting these and it may be a VVL bug, moving to ignore rather than skips. Bug: angleproject:6155 Bug: angleproject:6168 Change-Id: I38a5be8d792b8b13a490be895a68349bffe69c6e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3028809 Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Mohan Maiya <m.maiya@samsung.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Mohan Maiya 715a49c7 2021-07-03T08:48:07 Vulkan: Handle incompatible immutable sampler formats If the immutable sampler format of an active texture is not compatible with those supported by the pipeline layout, recreate the pipeline layout. Bug: b/155487768 Bug: angleproject:5033 Bug: angleproject:5773 Test: ImageTest.SourceAHBTarget2DExternalCycleThroughYuvTargetsNoData*Vulkan Change-Id: Iea78e1738ea2fb133a24dc88f5b68daf4cc1bdfe Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2997289 Commit-Queue: Mohan Maiya <m.maiya@samsung.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Tim Van Patten aa727b78 2021-07-09T11:26:36 Skip ImageTests generating VUID-vkCmdDraw-None-02699 The latest VVL roll is generating VUID-vkCmdDraw-None-02699 on Pixel 4 devices. This CL will skip the failing tests to unblock the roll while the VVL error is investigated. Bug: angleproject:6155 Change-Id: Ie9e21f7df13baa8b9252a3273d1985513404bdfe Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3018114 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Tim Van Patten <timvp@google.com>
Mohan Maiya e2881e25 2021-06-27T10:45:41 Vulkan: Handle incompatible pipeline layouts It is necessary that a pipeline layout be compatible with active textures. Make sure to recreate the pipeline layout otherwise. Bug: b/155487768 Bug: angleproject:5033 Bug: angleproject:5773 Test: ImageTest.SourceAHBTarget2DExternalCycleThroughRgbAndYuvTargets*Vulkan Change-Id: Iab371a9035b6cd143585e5000e2e68c7302ef447 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2992056 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Gert Wollny eb882040 2021-06-08T11:17:59 test/ImageTest: Clear back buffer when test cleanup Many tests don't actually use the back buffer, so uninitialized data is used when capturing leading to failure. Hence, clear the back buffer when the test ends and before swap is called triggering the capture. Bug: angleproject:6035 Change-Id: I0a500ae9f5203feaf0b492dc18e84c5a92ee1497 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2944953 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
Mohan Maiya 26a54260 2021-05-26T16:53:29 Reland "Vulkan: Handle immutable sampler state change in TextureVk" This is a reland of 349c08300e08bc809c448d62e0ad969ecb17c047 Skip YUV tests on Pixel2 Original change's description: > Vulkan: Handle immutable sampler state change in TextureVk > > Transitioning between sources in RGB and YUV colorspace or between > YUV formats with different layout should force the recreation of > pipeline layout and the invalidation of texture's sampler. > > Only textures that are EGLImage targets are handled for now. > > Bug: b/155487768 > Bug: angleproject:5033 > Bug: angleproject:5773 > Test: ImageTest.SourceAHBTarget2DExternalCycleThrough*Vulkan > Change-Id: I02d5763e7f89b910313e14b57bfc5403113dfbb2 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2924415 > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Commit-Queue: Mohan Maiya <m.maiya@samsung.com> Bug: b/155487768 Bug: angleproject:5033 Bug: angleproject:5773 Change-Id: Ie3791bc6f6e9b53eb0db23759a14fdc038c8f5b6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2939354 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Sunny Sachanandani 03d8e7c9 2021-06-04T21:22:52 Revert "Vulkan: Handle immutable sampler state change in TextureVk" This reverts commit 349c08300e08bc809c448d62e0ad969ecb17c047. Reason for revert: anglebug.com/6028 Original change's description: > Vulkan: Handle immutable sampler state change in TextureVk > > Transitioning between sources in RGB and YUV colorspace or between > YUV formats with different layout should force the recreation of > pipeline layout and the invalidation of texture's sampler. > > Only textures that are EGLImage targets are handled for now. > > Bug: b/155487768 > Bug: angleproject:5033 > Bug: angleproject:5773 > Test: ImageTest.SourceAHBTarget2DExternalCycleThrough*Vulkan > Change-Id: I02d5763e7f89b910313e14b57bfc5403113dfbb2 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2924415 > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Commit-Queue: Mohan Maiya <m.maiya@samsung.com> Bug: b/155487768 Bug: angleproject:5033 Bug: angleproject:5773 Bug: angleproject:6028 Change-Id: Ib8b3b54ff61f26910df2af4a6b894b3d2d5906bb No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2941547 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Sunny Sachanandani <sunnyps@chromium.org>
Mohan Maiya 349c0830 2021-05-26T16:53:29 Vulkan: Handle immutable sampler state change in TextureVk Transitioning between sources in RGB and YUV colorspace or between YUV formats with different layout should force the recreation of pipeline layout and the invalidation of texture's sampler. Only textures that are EGLImage targets are handled for now. Bug: b/155487768 Bug: angleproject:5033 Bug: angleproject:5773 Test: ImageTest.SourceAHBTarget2DExternalCycleThrough*Vulkan Change-Id: I02d5763e7f89b910313e14b57bfc5403113dfbb2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2924415 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Le Hoang Quyen a878e814 2021-04-11T15:04:19 Metal: Distinguish Metal backend from OpenGL's Metal driver On macOS 11+ OpenGL is implemented on top of Metal internally. This CL changes ANGLE's Metal backend's renderer string to better differentiate it from the above OpenGL renderer. Bug: angleproject:5841 Change-Id: I0d5466594e385cb663d537db034c82b006b6e907 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2820179 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Le Hoang Quyen f2aa9d5d 2021-04-11T14:55:19 Reland: Metal: Support importing external metal textures This relands I4d4a88cfbb77d8b7508b787c7fec44073d3b11b0. Fixes: - uninstantiated ImageTestMetal error - failed ImageTest.ANGLEExtensionAvailability on ARM mac. Bug: angleproject:5763 Bug: angleproject:5814 Change-Id: I906fe52baefd6be3c6e00f594795bd527df01616 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2820178 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Le Hoang Quyen <le.hoang.q@gmail.com>
Kai Ninomiya 256100b2 2021-04-02T01:45:14 Revert "Metal: Support importing external metal textures" This reverts commit 2ec3e0a1e6890da56de9dfd3da5c9f31a3f7fbb7. Reason for revert: Test suite ImageTestMetal never instantiated https://anglebug.com/5814 Original change's description: > Metal: Support importing external metal textures > > via KHR_image_base and ANGLE_metal_texture_client_buffer > > Bug: angleproject:5763 > Change-Id: I4d4a88cfbb77d8b7508b787c7fec44073d3b11b0 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2757811 > Commit-Queue: Le Hoang Quyen <le.hoang.q@gmail.com> > Reviewed-by: Kenneth Russell <kbr@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> Bug: angleproject:5763, angleproject:5814 Change-Id: Ia862aa37a6c914f6e21f9b3121c7c36d449475ea No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2801155 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Kenneth Russell <kbr@chromium.org>
Le Hoang Quyen 2ec3e0a1 2021-03-13T22:17:49 Metal: Support importing external metal textures via KHR_image_base and ANGLE_metal_texture_client_buffer Bug: angleproject:5763 Change-Id: I4d4a88cfbb77d8b7508b787c7fec44073d3b11b0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2757811 Commit-Queue: Le Hoang Quyen <le.hoang.q@gmail.com> Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Yuly Novikov a6b16d29 2021-03-02T19:04:57 Suppress UNINSTANTIATED_PARAMETERIZED_TEST failures on Ozone We only support ES2 on Ozone, so tests that depend on ES3 or ES31 support are not instantiated there. Bug: chromium:1183147 Change-Id: Id58bcd9b44a5b9a70b5ae8115e27c44f5dc81226 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2726550 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Mohan Maiya 74f7be6d 2021-01-28T14:04:47 Vulkan: Rectify typo in EXT_texture_format_sRGB_override The extension string for EXT_texture_format_sRGB_override was missing the "format" substring. Bug: angleproject:4561 Change-Id: I19788191b589b64639b036d2bb54508077fca7e8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2658355 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Trevor David Black de32c3d2 2020-11-04T13:16:31 Reland "Created test and fixed texture storage bug in d3d11" This is a reland of 03f3ba5b1454ee7c15cd9391e77307cf1d274b48 Original change's description: > Created test and fixed texture storage bug in d3d11 > > Bug: b/172489285 > Change-Id: If7d88cf50d99da3380082c60fb3936ae0b20c4e5 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2519876 > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Geoff Lang <geofflang@chromium.org> > Commit-Queue: Jamie Madill <jmadill@chromium.org> Bug: b/172489285 Change-Id: I6b8226164a09aed208c56cb78b5d2c1385298cbe Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2546034 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Trevor David Black <vantablack@google.com> Commit-Queue: Trevor David Black <vantablack@google.com>