src/libANGLE


Log

Author Commit Date CI Message
Shahbaz Youssefi da958a59 2020-06-04T13:56:47 Vulkan: Fix clear of non-zero-base-level images The staged resource updates adjusted their level to take base level into account, but clear updates used a cached unadjusted value. Bug: angleproject:3148 Change-Id: I9a49d5341083b2f870baa1ee6053e54baef35086 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2230786 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Etienne Bergeron 7685a79e 2020-06-04T14:16:05 Add trace event to angle Program compilation API Bug: chromium:1064662 Change-Id: I2ee48718ff3946ab9307ba27177a02858bf436b0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2230789 Commit-Queue: Etienne Bergeron <etienneb@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 0df92012 2020-06-03T17:08:43 Rename Platform.h to PlatformMethods.h. "platform.h" is too common a name and causes headers to be included incorrectly. Disambiguate the header using a more specific name. Solves a problem that came up with the GLES 1 tests and the standalone test harness. Bug: angleproject:3162 Change-Id: I88229a2c9407e0db57f5beee44daa11a4075f700 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2229065 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Xiaoxuan Liu 3afad5b7 2020-05-26T16:45:44 Vulkan: Cleanup unused variable in submitFrame() Bug: angleproject:2046 Change-Id: I9cc7c2cbb0bf9535885cc909a046d36691b8fcc8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2230385 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Maksim Sisov 8ba5cf99 2020-05-28T13:57:07 Add EGL_PLATFORM_ANGLE_NATIVE_PLATFORM_TYPE_ANGLE This CL adds a new attribute that helps to identify lower platform angle should use. We identified several different use cases that ANGLE must comply with when choose a display implementation. Please refer to the Support Matrix for EGL_ANGLE_platform_angle table Bug: chromium:1084458 Change-Id: I6ea3d5081012ddf450f1c641343d1ba1a673483b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2210151 Commit-Queue: Michael Spang <spang@chromium.org> Reviewed-by: Michael Spang <spang@chromium.org>
Jamie Madill 98865915 2020-06-02T14:56:24 No-op incomplete framebuffer invalidation. It's always legal in GL to no-op framebuffer invalidation. When the FBO is incomplete we can't pull RTs safely so no-oping incomplete invalidate calls saves us from fuzzer bugs and crashes. Bug: angleproject:3971 Change-Id: Ide550a22e6c17a28e5042165831dd684567d81fe Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2227038 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Kenneth Russell 3ecaa283 2020-05-22T13:52:41 Fix validation of PVRTC compressed texture sizes. The PVRTC format, as pointed out by Le Hoang Quyen and Geoff Lang, uses 4x4 or 8x4 blocks, but due to sampling from adjacent blocks, requires a minimum size of 2x2 blocks per the OpenGL extension: https://www.khronos.org/registry/OpenGL/extensions/IMG/IMG_texture_compression_pvrtc.txt . Thanks to Quyen and Geoff for pointing out the intricacies. Add a helper function to formatutils.cpp which returns the minimum number of blocks (width and height) for a given compressed texture format, and incorporate this into the compressed texture size computation. This patch makes WebKit on ANGLE pass WebGL's PVRTC compressed texture test on iOS hardware. Bug: angleproject:4652 No-Presubmit: True Change-Id: I1046a091321b7948d712d16686ee0cb8795b8c99 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2213676 Commit-Queue: Kenneth Russell <kbr@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang f2d4abb2 2020-05-25T16:10:07 Vulkan: Correct the viewport before intersecting it with the scissor. Eliminate the potential for integer overflow when clippling a large viewport rectangle by first limiting it to the Vulkan viewport size limits. BUG=chromium:1078378 Change-Id: I2648c6136d2d27d67a3fc5dae2de821279d70d81 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2215308 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Shahbaz Youssefi b131d25f 2020-06-03T10:53:39 Vulkan: Remove validation error suppressions for VVL bug These warnings were generated due to a validation layer bug, which is presumably fixed now. Bug: angleproject:4572 Bug: angleproject:4577 Bug: angleproject:4578 Bug: angleproject:4579 Bug: angleproject:4580 Bug: angleproject:4583 Change-Id: I8799c4e33bc38f83e0fdd364cf6e7eb607c39890 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2227810 Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 8f3aa154 2020-06-03T10:29:21 Vulkan: Remove validation error suppression for fixed issue Bug: angleproject:3450 Change-Id: Ie88aedae6e4573b2c31e389f7d0ff5c8d1059647 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2227856 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill 6c158164 2020-05-28T15:19:51 Vulkan: Fix XFB invalid accesses in buffer OOM. This uses the "null" buffer in the Renderer to bind an empty buffer handle so ANGLE can maintain a consistent state. Bug: chromium:1086532 Change-Id: I1912a1d1cb64433a285fcfced80a675619690a0b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2219140 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Antonio Maiorano 3c4d7ab0 2020-06-01T17:14:28 Fix copy subtexture to GL_RGB9_E5 in ANGLE/VK When copying via glTexSubImage2D to a non-renderable format, GL_RGB9_E5, ANGLE's TextureVk::copySubTextureImpl will use the read-back and copy method. This path was ignoring the source offset in the source area computation. Fixes the following WebGL tests: conformance2/textures/canvas_sub_rectangle/tex-2d-rgb9_e5-rgb-float.html conformance2/textures/canvas_sub_rectangle/tex-2d-rgb9_e5-rgb-half_float.html Bug: b/157744725 Change-Id: I714f8d3b8f1490edab5e7578445e9623215ce229 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2225611 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Antonio Maiorano <amaiorano@google.com>
Charlie Lao 2611f98b 2020-06-02T09:52:27 Vulkan: Add IMAGE_USE_STORAGE bit only if necessary. The VK_IMAGE_USAGE_STORAGE_BIT has negative performance impact. Right now we needed for overlay widgets. This CL will only add the bit if we actually have widget enabled. Bug: b/157774833 Change-Id: I3027df886c9b34ccfd667152fa4fb090dfadb45b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2225810 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Ian Elliott 1df70f03 2020-06-01T16:32:41 Vulkan: Swap RenderArea coords for pre-rotation Fixes Vulkan validation-layer errors. Found by dEQP tests that use small viewports and/or scissors (see Buganizer bugs for details). Bug: angleproject:4431 Bug: b/157933235 Bug: b/157933198 Change-Id: I83966906d70c30a4b50209cf1a33649bf69e3dd8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2225607 Commit-Queue: Ian Elliott <ianelliott@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Le Hoang Quyen ab372311 2020-05-14T23:27:06 Metal: refactor RenderUtils to split into multiple util classes. This is useful for later modifications where blit/clear could be further categorized based on texture format type (float/integer). Bug: angleproject:2634 Change-Id: I877abd21761af9e91657686a60e189a43a33e3f4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2193195 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Charlie Lao 5891b091 2020-06-01T11:24:37 Vulkan: acquire swapchain image should use COLOR_ATTACHMENT_OUTPUT_BIT The mAcquireImageSemaphore is for achieving the maximum overlap between display engine and rendering engine. We should only need to block when we write to the swapchain image. Work that doesn't touch the visible buffer can proceed. Bug: b/157916459 Change-Id: Ic9a9a1f2a7648ef7f50f99578a0f0d674ae5e66c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2223826 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill 93577b20 2020-05-28T15:16:46 Vulkan: Move "null" buffer to RendererVk. This will allow the TransformFeedback and other classes to share the same buffer. Also should save a bit of memory. Bug: chromium:1086532 Change-Id: I198170b4e09165a4770b68af6df9aa7b690e8d66 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2219138 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Le Hoang Quyen 5e13757b 2020-05-11T00:50:00 Metal: Fix array of structs containing array of samplers bug. Previously ProgramMtl could try to bind fixed slots to samplers based on layout (set=..., binding=...). However, GLSL layout model is different from Metal slots assignment. For example, The following is valid layout in GLSL: - array samplers A[2] is bound to index 0. - array samplers B[2] is bound to index 1. It is invalid to do so in Metal, since A occupies 2 slots, thus samplers B[2] must be bound to slots starting from 2. New binding method: let spirv-cross auto assigns the texture slots and retrieve them after compilation. Incomplete textures moved to ContextMtl using IncompleteTextureSet. New test added: GLSLTest.ArrayOfStructContainingArrayOfSamplers. Bug: angleproject:2634 Change-Id: Ib0edaaf8b20512e1272c37c1d4b16a88a5b35e75 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2193193 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Maksim Sisov 4b2a9cbc 2020-05-21T08:57:02 move duplicated SwapControlData to rendergl_utils. Both DisplayOzone and DisplayGLX have SwapControlData declared and defined. In the future, when both of them will be compiled (DisplayGLX will be required for Ozone/X11), they will result in a compilation error stating about multiple definitions of the struct. Thus, move that rendergl_utils. Bug: chromium:1084458 Change-Id: Ib174d0e8de1ac4773c841fe286175358acb15d79 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2210702 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Philip Lamoureux 9515707b 2020-05-29T11:23:44 Move ShaderVariable utility function from utilities.cpp ShaderVars.cpp. Fixes an implied dependency cycle between translator and angle_common. This will also allow us to be more strict about declaring dependencies on GLSLANG headers. Tested by building and running angle_unit_tests on Linux. Bug: angleproject:4672 Change-Id: I331230d2cf179ccea140ee7a0d5a3c8768c58cb1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2222682 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Cody Northrop 860af7a2 2020-05-29T15:34:27 Capture/Replay: Use aligned offsets for binary data Traces that populate data by reading from unaligned memory addresses can crash. This CL ensures each offset is 16-byte aligned. TBR: jmadill@chromium.org,nguyenmh@google.com Test: angle_perftests --gtest_filter="*Trace*" Bug: b/150458446 Change-Id: I721999426772fa2f94fe39600d330a15eacc2794 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2222847 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Jamie Madill b947498b 2020-05-28T13:06:13 Vulkan: Clean up VMA wrapper classes. Make these more consistent with the rest of the wrapper classes. Also handle some VkResult errors that were being ignored. Will pave the way for better handling of buffer allocation error conditions. Bug: chromium:1086532 Change-Id: Idc5b3f0e2945b1f44f152d33e8cc572f83a6b658 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2219136 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Mohan Maiya <m.maiya@samsung.com>
Jamie Madill 558882a1 2020-05-28T15:26:37 Vulkan: Pass vk::Context to BufferHelper::init. This is necessary so we can initialize a "null" BufferHelper in RendererVk which does not have access to the ContextVk. This in turn will allow us to use a single global "null" Buffer instead of instantiating them all over ANGLE. Also removes a TODO that was sticking in the code. Bug: angleproject:2162 Bug: chromium:1086532 Change-Id: Ica48d5b886e885ebfe0f8e3abfbe8169a8eaa5b2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2219139 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Le Hoang Quyen c0c938af 2020-05-11T00:50:00 Metal: draw 1 triangle instead of 2 for fullscreen shaders. Reference article in favour of one big triangle instead of 2: https://michaldrobot.com/2014/04/01/gcn-execution-patterns-in-full-screen-passes/ According to this article, the performance could be increased by ~10% for fullscreen shaders. Bug: angleproject:2634 Change-Id: Ia5b04c40f0587e3cb8680c0f30f7b68d9d7a3efe Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2193192 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 8470b533 2020-05-28T15:14:38 Set gl::Buffer to zero size when allocations fail. It's undefined what happens if we run into OOM errors when allocating new resources. To guard against fuzzer issues we can set the buffer size internally to zero when an allocation fails. This should prevent GL APIs from reading from the buffer when the contents are internally inconsistent. Bug: chromium:1086532 Change-Id: I9ac4becf977bf0521208b2220caba788c21c93f1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2219137 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Le Hoang Quyen 3c00eee2 2020-05-11T00:50:00 Metal: Use bit fields for state descriptor caching. This reduces size of state descriptors and increase hashing performance. Bug: angleproject:2634 Change-Id: Ida1a17a4fb30a053dafc82a3f7501b448e16e818 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2192570 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Le Hoang Quyen 3e1e1087 2020-05-11T00:50:00 Metal: Use 2d array for caching index conversion's pipeline state. For index conversion utils, use 2d array for caching compute pipeline state based on DrawElementsType & source offset is aligned or not, instead of using std::map as previously. Also moved default shader's initialization to DisplayMtl. New test added: IndexBufferOffsetTest.DrawAtDifferentOffsetAlignments Bug: angleproject:2634 Change-Id: I1bd77aca88e03229ef8053e32add66733e33b06e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2192569 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Antonio Maiorano 9905f7f5 2020-05-29T11:25:33 Fix CopyTextureTestES3.ES3FloatFormats for VK When enabled, this would crash in debug because mFormat would be nullptr on the target VkTexture, and the ASSERT would access mFormat via getAspectFlags(). Fixed this by only calling getAspectFlags() if mFormat is valid. I'm not sure this was the original reason this test was disabled, but they pass now on SwiftShader. Bug: angleproject:4092 Change-Id: I9b04bbc61dde14f722d3a510f3d38776f4f6c7ac Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2221420 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Antonio Maiorano <amaiorano@google.com>
Maksim Sisov 56a4cc12 2020-05-21T13:17:21 Rename DisplayOzone to DisplayGbm. DisplayOzone doesn't really have anything related to Ozone. Instead, it's the gbm platform that is used there. Thus, rename it to DisplayGbm. Bug: chromium:1084458 Change-Id: I4d974f6afbf0daa28fc3e83943b35814dca203fd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2211763 Reviewed-by: Michael Spang <spang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Cody Northrop 6185d42e 2020-05-28T15:12:09 Capture/Replay: Update MEC for Subway Surfer Implement some missing entry points, including sync objects. Bug: b/150458446 Bug: angleproject:3662 Change-Id: I0e9e7926e1a13bd9b0e83900ea19d2fbef9a284f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2220312 Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Antonio Maiorano 98496cab 2020-05-28T15:02:43 Fix float to int copy in VK backend This fixes WebGL tests on Vulkan (e.g. SwiftShaderVK) that copy from the canvas (GL_RGBA8) to an integer format target texture, such as: conformance2/textures/canvas_sub_rectangle/tex-2d-rg8ui-rg_integer-unsigned_byte.html The sampled normalized value needs to be scaled up by 255. Also fixes angle_end2end test CopyTextureTestES3.ES3UintFormats on Vulkan. Bug: b/156399229 Bug: angleproject:4092 Change-Id: I18d46bc4453fdc500caca96ca3a12fe93290b10c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2219142 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Antonio Maiorano <amaiorano@google.com>
Charlie Lao 29bb612e 2020-05-28T10:32:26 Add egl::ShareGroup class to abstract the share context group Vulkan backend has a barrier tracker that tracks memory barrier needs of all shared resources. Because the buffer/texture objects are shared resources within a shared group, the tracker can not live in a context. Putting it in a device/renderer requires locks. It fits perfectly in a shareGroup object. The work is already done at API level to handle the mutex lock for shared context access so that no extra lock needs to be taken in the backend. This CL adds egl::ShareGroup class that represents the object that are shared among all share context group. At the front end this usually will include all the shared resource managers (not done in this CL). The ShareGroup object is accessible from gl::State object. This CL also adds ability for backend driver to allocate implementation specific ShareGroupImpl object. Vulkan backend will then use it to keeps the barrier tracker and other things that naturally fits the share group concept. Bug: angleproject:4664 Change-Id: Ifcd975cbdf5130022e21c41397894afc28f572e7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2217252 Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Ethan Lee 209cf8fa 2020-05-27T16:23:57 GGP: Check and enable VK_GGP_frame_token Bug: angleproject:4668 Change-Id: I9ecbdf37e206cb6eb93699091bbff70ad898040f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2219032 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jonah Ryan-Davis 2383f344 2020-05-28T12:32:21 Port disable_timestamp_queries GPU workaround to ANGLE There is a driver bug in VMWare drivers related to timer queries. This driver is already disabled in Chrome, this CL ports the workaround to ANGLE. Bug: chromium:1075876 Bug: chromium:811661 Change-Id: I87ab28b803191884658d0c1ad4bfdfdd1b727fd0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2219420 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Ian Elliott 4d7a3993 2020-05-27T14:08:20 Vulkan: Rotate gl_PointCoord for Android pre-rotation This extends the current y-flip that's done for gl_PointCoord. Now, gl_PointCoord is rotated and then flips both the x and y-axis (similar to gl_FragCoord). The tests used to reproduce the problem and the fix are: angle_deqp_gles2_tests --local-output --gtest_filter=dEQP.GLES2/functional_shaders_builtin_variable_pointcoord* --use-angle=vulkan angle_end2end_tests --local-output --gtest_filter=*GLSLTest.PointCoordConsistency*Vulkan* Bug: b/157476696 Change-Id: Iada8680eda8322f7382ff242e4a9422a66114f07 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2216700 Commit-Queue: Ian Elliott <ianelliott@google.com> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Kenneth Russell c8bfefac 2020-05-22T14:54:47 Emulate unsized depth/stencil textures on ES 3.0 without OES_depth_texture. Use sized internal formats for unsized depth/stencil textures on ES 3.0 devices that don't advertise the GL_OES_depth_texture extension. This CL makes the webgl-depth-texture.html conformance test pass on WebKit's ANGLE backend on iOS. Bug: angleproject:4591 Change-Id: Ifc45e74258ecf2e6433662bb10b081f1f94bded9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2213678 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Tobin Ehlis 02fa7313 2020-05-05T17:01:18 Vulkan:Initial worker thread disabled by default Created new CommandProcessor class that can be run as a worker thread. Running CommandProcessor within RendererVk as a worker thread that takes a CommmandBufferHelper (CBH) ptr as the interface and processes that CBH into a primary command buffer. Main thread has a queue of CBH to draw from. After submitting a CBH to the worker, it pulls next CBH from the queue. Worker thread releases CBH back to the main thread queue when done. Synchronization goes two ways: 1. Work submitted to worker thread is managaed with a mutex and condition variable based around the work queue. 2. Available CBH ptrs for the main thread have a mutex and condition variable that manages the CBH queue. The worker thread is disabled by default, and, when enabled, it will currently behave and perform as the non-threaded code. This is because the kNumCommandBuffers const in ContextVk.h is set to 2. With only 2 command buffers, they will be assigned to the inside and outside RenderPass command buffers respectively. Then, as soon as one is submitted, the main thread will stall waiting for it to be completed and put back into the queue mentioned in #2 above. The next step is to move command submission to the worker thread and update the number of command buffers so that processing/submission will occur in parallel with the main thread. Right now there is a race condition issue when attempting to run in parallel because the main thread updates and submits the same primary command buffers that are used in the worker thread, which is in violation of the Vulkan spec. The follow-on CL will fix this issue as the main thread will only touch SecondaryCommandBuffers and the worker thread will be the only thread touching the primary command buffers. Bug: b/154030730 Change-Id: Ib0c518bbd7ca9a3a7e789f4e1f2f7131ddc0509e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2174719 Commit-Queue: Tobin Ehlis <tobine@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tim Van Patten f5dace0f 2020-05-22T19:02:49 Vulkan: Increase GLES support to 3.1 Update getMaxConformantESVersion() to support GLES 3.1. This requires skipping some tests on Nvidia due to XFB failures. dEQP-GLES3.functional.transform_feedback.array_element.interleaved.* dEQP-GLES3.functional.transform_feedback.array_element.separate.* dEQP-GLES3.functional.transform_feedback.array.interleaved.* dEQP-GLES3.functional.transform_feedback.array.separate.* dEQP-GLES3.functional.transform_feedback.random.* Bug: angleproject:3520 Test: CQ Change-Id: I3de0e8f7a9e9c6e800be9eb2c04e713e1f88fc08 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2213810 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Commit-Queue: Tim Van Patten <timvp@google.com>
Jonah Ryan-Davis eadc387c 2020-04-01T16:53:31 GL: Support GL_OES_texture_cube_map_array in shader translator GL_OES_texture_cube_map_array is core in 3.2. This CL adds support for this extension in the shader translator. Now passes dEQP.KHR_GLES31/core_texture_cube_map_array.*, dEQP.GLES31/functional_fbo_color_texcubearray_*, and dEQP.GLES31/functional_opaque_type_indexing*samplercubearray* with GL backend. Bug: angleproject:3584 Change-Id: I1a8485c7d9d3fffb9b5109d292b35b0c56a3c665 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2133086 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Jonah Ryan-Davis 7fde3673 2020-05-25T15:48:06 GL: Support GL_OES_texture_cube_map_array in frontend/GL backend GL_OES_texture_cube_map_array is core in 3.2. This CL adds the necessary validation for the frontend, as well as support for this extension on the GL backend. The next step is to add the changes to the translator. Bug: angleproject:3584 Change-Id: I751a9c9f71a553b05fdf6673250290806d8cfbff Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2215306 Commit-Queue: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Ian Elliott 901045cc 2020-05-26T10:41:18 Vulkan: Rotate gl_FragCoord for Android pre-rotation This extends the current y-flip that's done for gl_FragCoord. Now, gl_FragCoord is rotated and then flips both the x and y-axis. Bug: angleproject:4643 Bug: b/156395519 Change-Id: Iada8680eda8322f7382ff242e4a9422a66114f05 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2210936 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Ian Elliott <ianelliott@google.com>
Manh Nguyen 218a6835 2020-05-26T13:51:34 Store non-string, non-enum data in binary file. Before, non-string, non-enum data smaller than a size threshold will be inlined in the cpp files. Now, they will be stored in binary file regardless of size. Bug: angleproject:4661 Change-Id: Id71cd22c97d26c9b9afaf5b26f7a327b998cb858 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2216306 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Manh Nguyen <nguyenmh@google.com>
Geoff Lang a24be8c3 2020-05-26T16:45:29 Don't allow glReadPixels of depth buffers with ES3.1. The ES3.1 spec does not appear to include these formats as valid glReadPixels formats. Test=KHR-GLES3.packed_pixels.rectangle.depth24_stencil8 BUG=angleproject:3520 Change-Id: I6ccd5a7fc49c2e16885cfaace56efce1d96e937a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2216713 Reviewed-by: Alexis Hétu <sugoi@chromium.org> Commit-Queue: Tim Van Patten <timvp@google.com>
Sunny Sachanandani 3d5f0c82 2020-05-19T20:05:57 Use surface texture offset for clears and blits https://chromium-review.googlesource.com/c/angle/angle/+/2186176 added surface texture offset attributes for D3D11 pbuffer surfaces, but the implementation didn't apply the offset to blits or clears. This CL fixes that and includes a unit test for blit, clear, and draw. Also renames textureOffset to surfaceTextureOffset throughout since it's clearer, and fixes the dcomp surface test to specify the update offset returned by dcomp BeginDraw(). Bug: angleproject:2997 Change-Id: I9298ccf55cbb2d04c3b8f78e12f9d07dc8fa54b5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2210967 Commit-Queue: Sunny Sachanandani <sunnyps@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Kenneth Russell 05f11a3b 2020-05-21T14:33:42 Remove requirement of OES_texture_half_float for EXT_color_buffer_half_float. Some OpenGL ES 3.0 devices don't advertise OES_texture_half_float, but do advertise EXT_color_buffer_half_float. For this reason, stop requiring OES_texture_half_float when determining renderability of GL_RGBA16F textures. Bug: angleproject:4649 Change-Id: I657011fcc3bb35909760a57e8ad53cfbbc61c67a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2212434 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Kenneth Russell <kbr@chromium.org>
Kenneth Russell 68f92942 2020-05-22T18:32:52 Emulate GL_EXT_sRGB on ES 3.0 devices without native support. Translate the extension's internal formats and formats to values valid in core ES 3.0. Bug: angleproject:4655 Change-Id: Ie47d01fb2ebca7bab5058812c9f4217523f784a0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2213262 Commit-Queue: Kenneth Russell <kbr@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 9047ce5b 2020-05-26T11:23:35 Vulkan: Fix bad delete of swapchain. We could end up deleting a dirty pointer if the driver set an output value during a call to vkCreateSwapchainKHR that generates an error. In practice this turned up in some edge cases with SwiftShader. Fix this by using a temporary variable. Bug: chromium:1079475 Change-Id: Ia40e1fac94cbd56fd3bb800a179bb38b7f11fa26 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2216292 Reviewed-by: Nicolas Capens <nicolascapens@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Charlie Lao 30298dc2 2020-05-15T15:21:04 Vulkan: Optimize out barrier needs for transition between shaderReadOnly If we are transition between different kind of shaderReadOnly, there is no actual layout change or accessType change. Instead of always insert a barrier, this will track what shaderStage has made read access and only insert barrier if the read is from new shader stage. The barrier inserted will be always from last non-ShaderReadOnly transition. There is no read to read barrier generated. Bug: angleproject:4550 Change-Id: I4aeb7d4bddf2d072b60839f98e7af1aa23f977b5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2204480 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Jamie Madill 6de7ee52 2020-05-25T17:00:01 Clean up overlay RenderPass count reporting. This fixes the trace perf test to accurately report how many RPs in each frame. Instead of counting the RPs on a flush we now count only on a swap call. This won't work for offscreen surfaces which is fine - the overlay doesn't really have the same use for offscreen rendering. Also ignores the first frame in graph data so we can ignore the first setup frame in the trace tests. Also skips the redundant extra "flush" call that would generate an empty space in the RP graph. Gives a cleaner measurement for optimizing the XFB RP count. Bug: angleproject:4622 Change-Id: I5762c500cdb216700247095984ae62b4f8741602 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2215309 Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Manh Nguyen 27ceed38 2020-05-25T13:06:53 Fix replay crash when captured sample doesn't create binary data Ensure samples without binary data like hello_triangle can be replayed Bug: angleproject:4658 Change-Id: I6da29a05335abe93666b6c19fa769e84c42a9fa8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2212499 Commit-Queue: Manh Nguyen <nguyenmh@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Maksim Sisov ba4e2b94 2020-05-21T09:40:37 Type cast EGLNativeDisplayType to _XDisplay* in xcb and glx As we are approaching the point when DisplayGLX will be compiled in Ozone/X11 configuration, we need to resolve compilation errors. Ozone has intptr_t EGLNativeDisplayType whereas X11 requires Display* aka _XDisplay*. We've already done so in Chromium, and it's time to do the same cast in angle. Bug: chromium:1084458 Change-Id: I11b5ae2e10bfa316cbaa882be86af6894cfdbbf2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2211761 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Jonah Ryan-Davis 31fbf981 2020-05-25T15:33:44 GL: Entry points for GL_OES_texture_cube_map_array This extension is made core in GLES3.2. This CL adds the necessary entry points to the frontend. Bug: angleproject:3584 Change-Id: Icaaa0b298898f3360819966a7f67b5feaf05124b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2215305 Commit-Queue: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 6789018a 2020-05-25T11:54:24 Context: init impl before creating objects. This eliminates a potential invalid access that would turn up in the Vulkan back-end. Also init a couple uninitialized variables. Should fix an ASSERT in the Vulkan back-end when running WebGL tests. Bug: chromium:1085627 Change-Id: I153f8dd83f567345b964b68784940d11712e7804 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2212498 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Alexey Knyazev c746ac65 2020-04-27T03:55:20 Remove redundant BlendStateArray tracking Keep legacy BlendState for now. Bug: angleproject:4394 Change-Id: Icba2b2f3a071d0f838a5480ff94869d35b776d94 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2169093 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Commit-Queue: Kenneth Russell <kbr@chromium.org>
Tobin Ehlis d3d7b95b 2020-05-19T17:27:50 Vulkan:Migrate timer sync functions to one-off cmd buffer ContextVk's getTimestamp() and synchronizeCpuGpuTime() were the two places that mCommandQueue was used outside of processing SecondaryCommandBuffers. Migrating those functions to use the one- off command buffer instead. This will allow for the removal of mCommandQueue from ContextVk as we migrate it to RendererVk instead for threading phase2 development. Bug: b/154030730 Change-Id: Ic00ce56739dadcdc4b5a1b1839e0e18603bfe0eb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2209312 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Tobin Ehlis <tobine@google.com>
Kenneth Russell 96a80283 2020-05-20T16:48:54 Advertise filtering support for FP16 luminance/alpha formats on ES 3.0. Now that these formats are emulated if necessary on ES 3.0 contexts, advertise filtering support as well. This enables OES_texture_half_float_linear on mobile devices which support ES 3.0 but don't advertise this extension. Bug: angleproject:4648 Change-Id: I09f00fbb1454b2cfa72295254fbc45c872f4919c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2210701 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Kenneth Russell <kbr@chromium.org>
Jonah Ryan-Davis 93fc7d71 2020-05-19T14:03:42 Add error-handling when getting Xcb window size We can't trust the reply from Xcb if an error has been flagged. This was causing a crash in SwANGLE. Bug: chromium:1080984 Change-Id: Icaf58197869b563e4193efcf4e70646d519210cf Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2209255 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Geoff Lang 22aba328 2020-05-20T10:59:56 Don't write alpha when blitting to a framebuffer with emulated alpha. Emulated alpha framebuffers should never modify the alpha channel. Our blitting code didn't take this property into account. TEST=conformance2/rendering/blitframebuffer-resolve-to-back-buffer.html BUG=angleproject:4645 Change-Id: I1797934df7e7aa520bacfba8a379f6545e38753e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2210023 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: James Darpinian <jdarpinian@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Xinyi He 585e3555 2020-05-14T10:49:48 Vulkan: Remove GL_BGRX8_ANGLEX from configurations It doesn't need to expose an emulated RGB format any longer. Skip ClearTestRGB.DefaultFramebufferRGB test if GPUs don't support RGB format back buffer. Bug: angleproject:4631 Change-Id: Ifa2d2ed6f863dcb698f7eea3e752a8cd5d5e0ced Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2198888 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Charlie Lao 33cf03cd 2020-05-20T20:45:34 Vulkan: change preferAggregateBarrierCalls to accomodate ARM on linux Bug: angleproject:4633 Change-Id: Ic198cef1afbad7dc96cead690daa46f07a653e96 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2211321 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Sunny Sun <sunny.sun@arm.com> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
Tobin Ehlis 1a4f6e1f 2020-05-20T10:37:24 Vulkan:Migrate command buffers to pointers This is an intermediate CL as we move to a worker thread. With the worker thread there will be a pool of more than 2 command buffers so the current command buffers in use on the main thread will be pointers that are assigned from that pool. This CL isolates the command buffers as pointers to make review simpler. Bug: b/154030730 Change-Id: I3fc91222b07d5f3bf60f92a4c01b0910daad7df6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2207812 Commit-Queue: Tobin Ehlis <tobine@google.com> Reviewed-by: Tim Van Patten <timvp@google.com>
Rafael Cintron e8b8b816 2020-05-19T18:58:55 Eliminate Program::mLinkResolved boolean Since mLinkResolved boolean is always kept in sync with the presence of mLinkingState structure, we can remove the former and replace access with checks for the latter being nullptr. Bug: angleproject:4644 Change-Id: Ib385b5c3881946d762ad48e6534c84d15e50f673 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2209319 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Rafael Cintron <rafael.cintron@microsoft.com>
Kenneth Russell 651378b2 2020-05-14T20:44:54 Support OES_texture_{half_}float on ES 3.0 without these extensions. Emulate the LUMINANCE, ALPHA and LUMINANCE_ALPHA formats with GL_RED/GL_RG textures on platforms that don't support the OES_texture_{half_}float extensions. Fix a preexisting bug in TextureGL's luminance/alpha emulation where it would use desktop GL functionality on GLES. This change makes WebKit on iOS pass WebGL's conformance/extensions/oes-texture-{half-}float tests per https://bugs.webkit.org/show_bug.cgi?id=210524 . Bug: angleproject:4636 Change-Id: I6c158058e4b170b16ece578a3930c230de16a9ca Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2203283 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Commit-Queue: Kenneth Russell <kbr@chromium.org>
Jamie Madill 4c974793 2020-05-15T15:52:04 Vulkan: Don't invalidate XFB buffers on FBO switch. This shouldn't need to change when the FBO changes. Bug: angleproject:4622 Change-Id: I4b06a0f02e8dd16d50aaf5ac5fe4bcb81fc76c8c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2204597 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Tim Van Patten <timvp@google.com>
Tim Van Patten d10ba166 2020-05-19T18:00:38 Rename ProgramState::getProgramExecutable() to getExecutable() The "Program" part of ProgramState::getProgramExecutable() is already implied by being part of a ProgramState, so it can be removed. Bug: angleproject:3570 Change-Id: I35ffb2af81196fa7f189f7d3a37158f5f1951141 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2209317 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Tim Van Patten <timvp@google.com>
Rafael Cintron d45b30b5 2020-05-15T14:45:51 Enable allowClearForRobustResourceInit for AMD drivers AMD drivers that have trouble clearing textures have been blocklisted by Chromium. Since Intel and NVidia drivers were already been allowed to clear for robust resource init, we're good to enable it for all IHVs. Bug: angleproject:4460 Change-Id: If71d01a91806ffc0a78c30f0cc393e105a6c9c74 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2204698 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Rafael Cintron <rafael.cintron@microsoft.com>
Mohan Maiya cf8422c2 2020-05-19T10:14:02 Vulkan: Acquire a new BufferHelper from the pool based on a threshold We acquire a new BufferHelper from the pool when the app updates the data of the entire buffer. In scenarios where the app updates say, 60% of the buffer it would still be benificial to acquire a new buffer and copy over the remaining 40% of data from the old buffer to the new one. This reduces the transfer workload from 60% to 40% of buffer size. Currently the threshold is set to 50% of buffer size. Bug: angleproject:4380 Change-Id: I12576c585230e771d4c1a4352fab93dd3db2ecef Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2204655 Commit-Queue: Mohan Maiya <m.maiya@samsung.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Charlie Lao 258d94f6 2020-05-18T16:21:50 Vulkan: Add workaround for nvidia to always merge barriers into one vkCmdPipelineBarrier call Nvidia preferes one barrier call than multiple calls with fine grained stage dependency information. They do not care much about stage dependency. This adds a feature flag that sets to true on nvidia and will merge all barriers into one call. Bug: angleproject:4633 Change-Id: I204484aa4c5989655f74d70a0eaa235c3c83f548 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2207635 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Alexey Knyazev 779a25a8 2020-04-27T02:11:58 D3D11: Migrate to the new blend state tracking Migrate D3D ClearParameters struct to the new color mask storage Bug: angleproject:4394 Change-Id: Ibeb64e4bbb2758b9c8271fc3c59d2d675850b0a8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2165886 Commit-Queue: Kenneth Russell <kbr@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
shrekshao 78ef4133 2020-05-15T23:24:18 Fix invalid enums for OES_draw_buffers_indexed Make sure the new enums are invalid before the extension is enabled. Add a angle_end2end_test for that. Bug: angleproject:4394, chromium:1058744 Change-Id: Ib88f6159294dab2eb7d3662b96c44424ab132782 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2205179 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shrek Shao <shrekshao@google.com>
James Darpinian ab851162 2020-05-18T17:35:10 Enable regenerateStructNames workaround on iOS In https://bugs.webkit.org/show_bug.cgi?id=207858, the WebGL conformance test conformance/glsl/misc/shader-struct-scope.html was failing. The workaround that fixes this test was enabled only on desktop GL, but it's necessary for iOS as well. Bug: angleproject:4642 Change-Id: I29b96f16dd0608bb9597a4a9903e375a64dadf3d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2207636 Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Commit-Queue: James Darpinian <jdarpinian@chromium.org>
Antonio Maiorano 4f343f3e 2020-05-13T14:11:51 Reland "Add support for GL_CHROMIUM_texture_filtering" This is a reland of 38780ae3921d2570316119a881adfb9520e7e296 modulo the changes to disable VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT, as this was causing problems. With this landed, the extension will not work on SwiftShader until we find a way to allow this extension through the validation layers. Bug: b/146423360 Bug: b/154620295 Change-Id: Ie09fc507c01a47be3bb227bc78771660170ba5d3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2199639 Commit-Queue: Antonio Maiorano <amaiorano@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Charlie Lao 8a90905c 2020-05-16T17:35:03 Revert "Vulkan: Try to merge barriers if possible" This reverts commit 153c14cbd6e9f095c09dc1e6c938b1656bc56159. Reason for revert: The dependencyStrongerThan logic is incorrect and causing perf regression on ARM. Original change's description: > Vulkan: Try to merge barriers if possible > > This is try to reduce the number of vkCmdPipelineBarrier API calls into > driver. It should not affect the actual barriers. > > Bug: b/155341891 > Change-Id: I57b8b8cdad50d494c76a008006bd54961170c8bc > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2194841 > Commit-Queue: Charlie Lao <cclao@google.com> > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> TBR=courtneygo@google.com,timvp@google.com,syoussefi@chromium.org,jmadill@chromium.org,cclao@google.com # Not skipping CQ checks because original CL landed > 1 day ago. Bug: b/155341891 Change-Id: I8ebe7481b299af446dfd488874e64e6e60b4f764 No-Presubmit: true No-Tree-Checks: true No-Try: true Change-Id: I8ebe7481b299af446dfd488874e64e6e60b4f764 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2205433 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Charlie Lao <cclao@google.com>
Tim Van Patten d34ab323 2020-05-04T10:48:48 Vulkan: Save linked ProgramExecutable data PPOs need to support drawing with Programs that failed their last linkProgram() if they had previously successfully linked. This requires saving the ProgramExecutable when linkProgram() succeeds, and not overwriting it with subsequent linkProgram() calls unil the next successful one. To achieve this, the new member ProgramState::mLinkedExecutable will point to the last successfully linked ProgramExecutable and ProgramState::mExecutable will point to a new ProgramExecutable when the next linkProgram() is attempted. If the link fails, the newly allocated ProgramExecutable will be delete()'ed and mExecutable will point to the previous 'good' ProgramExecutable still being tracked by mLinkedExecutable. If it succeeds, the old mLinkedExecutable will be delete()'ed and mLinkedExecutable will be updated to point to the ne one. Bug: angleproject:4514 Test: KHR-GLES31.core.sepshaderobjs.StateInteraction Change-Id: I0677602a6d652a055404667ec9e9305fed5b4177 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2181450 Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Rafael Cintron 5d01d538 2020-05-12T18:13:52 Resolve Bad Binary Link Failures When ANGLE_PROGRAM_BINARY_LOAD is enabled, Program::loadBinary unconditionally returns angle::Result::Continue to the caller. The caller, gl::Program::link, postpones the resolution of the link until resolveLinkImpl. Unfortunately, resolveLinkImpl is not able to tell whether the link failed because the shader from the developer is bad or because the loaded binary is not compatible with the backend. The former case should fail link. In the latter case, we should fallback to linking the program from the original shader sources. The loaded binary could be read from the on-disk shader cache and be corrupted or serialized with different revision and subsystem id than the currently loaded ANGLE backend. This fix adjusts Program::loadBinary and ProgramD3D::load so that angle::Result::Incomplete is returned to gl::Program::link when the binary is incompatible with the backend. gl::Program:link falls back to compilation from original shader sources. Since no code checks the return value of SizedMRUCache::eraseByKey, modified it to now return void. Bug: chromium:1079497 Change-Id: Id5271d7badad8627563e87859d1c9fdb81de5785 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2197944 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Rafael Cintron <rafael.cintron@microsoft.com>
James Darpinian c55d2b41 2020-05-04T17:06:38 Respect IOSurface stride In the iOS simulator we use glReadPixels to transfer rendered pixels to the IOSurface. We need to account for the possibility of the row stride not being equal to the width, because that happens sometimes. It's currently causing corrupt rendering in Google Maps on WebKit. Bug: angleproject:4611 Change-Id: I553d65cb0d0bf922e855ea50089904807dd39118 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2181676 Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Commit-Queue: James Darpinian <jdarpinian@chromium.org>
Jamie Madill 8270ebbd 2020-05-08T14:00:18 Vulkan: Refactor and clean up XFB code. This is a refactor-only change mostly. It makes the classes work more similarly to how the other classes in the Vk back-end work. Also removes some redundant code. Moves the buffer caching into begin for a more dirty-bits like approach. Bug: angleproject:4622 Change-Id: I34ac13e1d05b48e3267937c760d195493a76ed02 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2191172 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Michael Spang ab8d424a 2020-05-13T16:34:05 Vulkan: Remove unused onExternalLayoutChange declaration This function is no longer defined or implemented, but forgot to remove the declaration. Bug: angleproject:4229 Change-Id: Ifedcbe09fde56bc46d18ea5e87cf4a4ad51b85fc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2199645 Commit-Queue: Michael Spang <spang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tim Van Patten 85c86567 2020-05-12T18:43:16 Handle null ProgramExecutable in ValidateDrawInstancedANGLE() It's possible for a user to call glDrawArraysInstancedANGLE() without a Program or PPO bound, which would lead to no ProgramExecutable being active and causes a null pointer to be returned in ValidateDrawInstancedANGLE(). To handle this, ValidateDrawInstancedANGLE() should return 'true' and not signal an error since it's undefined behavior to draw without a Program/PPO bound, but it's not an error. Bug: chromium:1079336 Test: gpu_angle_passthrough_fuzzer Change-Id: I90d9e99c63411d8388f4d8cf57ed46aec605ee68 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2197943 Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Tobin Ehlis <tobine@google.com>
Tobin Ehlis 66d7490c 2020-05-12T15:09:29 Vulkan:Add trace marker in finishToSerial() Bug: b/156403378 Change-Id: Ibd50bc0448ba15af14191c3bc735782ab0741abf Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2197615 Reviewed-by: Tobin Ehlis <tobine@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Tobin Ehlis <tobine@google.com>
Geoff Lang 99db3471 2020-05-13T18:50:51 Unset the ActiveTextureCache entry if the program does not reference it When changing uniforms of a program, State::onActiveTextureChange is called to update the ActiveTextureCache. If the sampler uniform type changes to TextureType::InvalidEnum, the entry in ActiveTextureCache was not cleared. This causes stale entries in ActiveTextureCache because the cache no longer matches what textures are bound and the cache does not add references to the textures in it. BUG=chromium:1078375 BUG=chromium:1072406 BUG=chromium:1078866 Change-Id: If9719dcd4fc865b2301db450eb8115e7cfe46c4a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2199654 Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Brandon Schade 8f6d1af9 2020-03-19T14:35:48 Vulkan: Implement EXT_texture_format_sRGB_override Implemented support for EXT_texture_format_sRGB_override This is done by creating new imageviews for textures with sRGB overridden that reinterpret the format to its sRGB counterpart. As preparation for this, textures that use this feature are reallocated with VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT. This will have a performance cost for textures that use this feature, but should have no performance cost for regular textures, since they will not have this bit set. Bug: angleproject:4561 Test: angle_end2end_tests --gtest_filter=SRGBTextureTest.*Vulkan* Change-Id: Iba25f1f2b0a7227959c1cb4ba6e3ca8311c20d06 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2152145 Commit-Queue: Mohan Maiya <m.maiya@samsung.com> Reviewed-by: Tim Van Patten <timvp@google.com>
Tim Van Patten 24268826 2020-05-04T10:48:48 Vulkan: Pass Input/Output Varying lists during linking When linking program varyings, the necessary functions need the following: - Lists of Input and Output varyings - Shader versions - Shader types Rather than the full Shader itself, just this information will be passed around to the functions. This allows us to limit how much data is saved for each Program when linkProgram() succeeds, so PPos can link the attached Programs at draw time. Bug: angleproject:4514 Test: CQ Change-Id: I27b639cae9a153d0d3f5efab3b38550f09f4f49b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2181449 Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Michael Spang 11f9c56c 2020-05-11T22:56:18 Vulkan: Tighten up asserts for resource ownership We're not permitted to make accesses to a resource while it's owned by an external instance or API. Add some asserts to verify this. Exempt images on platforms that don't implement external memory barriers. Bug: angleproject:3289 Change-Id: I1de929f6a412bfe5c1b798eaa1dc401bbceb5b7f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2195685 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Michael Spang <spang@chromium.org>
Charlie Lao 153c14cb 2020-05-11T14:45:35 Vulkan: Try to merge barriers if possible This is try to reduce the number of vkCmdPipelineBarrier API calls into driver. It should not affect the actual barriers. Bug: b/155341891 Change-Id: I57b8b8cdad50d494c76a008006bd54961170c8bc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2194841 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Michael Spang e8d71eb3 2020-05-12T14:40:44 Vulkan: Fix ANGLE_ENABLE_VULKAN_VALIDATION_LAYERS_BY_DEFAULT Unfortunately this was broken by 605af42e1 ("Vulkan: Move ICD overrides to a common place"). This adds an unconditional dependency on the layers to tests. Tests don't respect angle_enable_vulkan_validation_layers, so we need to ship the layers irrespective of that setting. Bug: angleproject:4634 Change-Id: Ided291ea645a72e6c3bdb960e55d15013aa20a3a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2197279 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Sunny Sachanandani 4b225c70 2020-05-06T15:38:12 Add texture offset attributess for D3D texture pbuffer surfaces Add EGL_TEXTURE_OFFSET_X_ANGLE and EGL_TEXTURE_OFFSET_Y_ANGLE attributes to EGL_ANGLE_d3d_texture_client_buffer which are used to specify offsets used for rendering into the pbuffer surface backed by a D3D11 texture. Rendering with the correct offset is needed when Chrome gets a texture and offset from an external source e.g. when calling BeginDraw() on IDCompositionSurface. Bug: angleproject:2997 Change-Id: I363f739f3f05c38720f385e34c91e98fc6a622a0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2186176 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Commit-Queue: Sunny Sachanandani <sunnyps@chromium.org>
Tim Van Patten fecd1afc 2020-05-04T10:24:57 Vulkan: Move necessary members from ProgramState to ProgramExecutable ProgramPipeline's need to be able to link Programs before drawing, even if the Program's previous linkProgram() failed. To work towards this, some ProgramState members are being moved to ProgramExecutable so they can be saved when linkProgram() succeeds and not overwritten by any subsequent linkProgram() attempts that may fail. This also allows the second half of this change, which is to pass in the Program's ProgramExecutable to GlslangAssignLocations() and GlslangWrapperVk::TransformSpirV() so the values saved from the last successful linkProgram() are used. Bug: angleproject:4514 Test: CQ Change-Id: I68aa429be76c0c6e1b886be09a12200217fcc7ab Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2181448 Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tim Van Patten 39d187b8 2020-04-23T19:30:12 Update Program[Pipeline]State to hold a ProgramExecutable Pointer This is a refactor CL to convert mExecutable in ProgramState and ProgramPipelineState to a pointer, so it can be changed to point to a different ProgramExecutable in a future CL. Bug: angleproject:4514 Test: end2end Change-Id: Id8ee9e5f2d1b02313973519cb2b4b0d5f7533b09 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2181447 Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Sunny Sun 664376e2 2020-05-09T10:47:48 Vulkan: Fix performance issue c9e0edc2 changed the layerCount in SubresourceUpdate to VK_REMAINING_ARRAY_LAYERS in some cases. So that the deferred clear logic cannot work correctly. Bug: angleproject:4617 Change-Id: Idedada085c618ff900538094412c752522594684 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2191551 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Tim Van Patten c4832968 2020-05-12T19:12:16 Check noopDraw() before prepareForDraw() To support drawing without a Program or PPO bound, ANGLE needs to check noopDraw() as early as possible to prevent accessing null pointers while attempting to draw. Bug: chromium:1079312 Test: gpu_swangle_passthrough_fuzzer Change-Id: I85d6cab923ce42d93fa93e1792f342ce3c5baa8d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2197946 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Tim Van Patten <timvp@google.com>
Michael Spang 6067c7d8 2020-05-12T18:18:47 Reland "Vulkan: Add semaphores test to VulkanExternalImageTest" This is a reland of 69e46942563b30be8a79512252e92fcf00c1a522 Original change's description: > Vulkan: Add semaphores test to VulkanExternalImageTest > > Add a more substantial test that uses semaphores to > VulkanExternalImageTest. > > It's still just a clear in GL, which exposed a bug that a staged clear > wasn't be flushed by a call to glSignalSemaphoreEXT. > > Bug: angleproject:3289 > Change-Id: Id938eaf2c8c20cb0ae9fb948fbfcf3448980b577 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2195684 > Commit-Queue: Michael Spang <spang@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Geoff Lang <geofflang@chromium.org> Bug: angleproject:3289 Change-Id: Idce1e8944b72445c92be9ad08d8c5869ca0b7df2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2197735 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Michael Spang <spang@chromium.org>
Cody Northrop fcfe7fad 2020-05-11T17:20:26 Capture/Replay: Fix MEC crash with Temple Run CaptureMidExecutionSetup was accidentally creating a copy of a vector, rather than using a const reference. Test: Temple Run MEC on Android Bug: b/152512564 Change-Id: Ia5eaa87235785eba7f10244d0ac7a831de0bcb0b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2197282 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Tim Van Patten 3b82fdcf 2020-05-12T23:44:07 Revert "Add support for GL_CHROMIUM_texture_filtering" This reverts commit 38780ae3921d2570316119a881adfb9520e7e296. Reason for revert: Breaks SWANGLE-VK: 05-12 23:42:28.612 22836 22861 D libEGL : dlopen_ext from APK (libEGL_angle.so) success at 0x79f4485a10 05-12 23:42:28.617 22836 22861 D libEGL : dlopen_ext from APK (libGLESv1_CM_angle.so) success at 0x79f4485eb0 05-12 23:42:28.619 22836 22861 D libEGL : dlopen_ext from APK (libGLESv2_angle.so) success at 0x79f4485c60 05-12 23:42:28.624 14223 14223 D StatusBar: disable<e i a s b h r c s > disable2<q i n > 05-12 23:42:28.633 14014 14057 V DisplayPowerController: Brightness [0.19986142] reason changing to: 'automatic', previous reason: 'automatic [ dim ]'. 05-12 23:42:28.635 22836 22861 D vulkan : searching for layers in '/data/app/~~0AfWfBsFEO78tqKlnanevg==/org.khronos.gl_cts-NOs3SGclHqlbcqe-08gHrw==/lib/arm64' 05-12 23:42:28.635 22836 22861 D vulkan : searching for layers in '/data/app/~~0AfWfBsFEO78tqKlnanevg==/org.khronos.gl_cts-NOs3SGclHqlbcqe-08gHrw==/base.apk!/lib/arm64-v8a' 05-12 23:42:28.632 22836 22836 W .khronos.gl_cts: type=1400 audit(0.0:218): avc: denied { ptrace } for scontext=u:r:zygote:s0 tcontext=u:r:untrusted_app_25:s0:c512,c768 tclass=process permissive=0 b/77925912 app=org.khronos.gl_cts 05-12 23:42:28.636 14014 14034 I EventSequenceValidator: Transition from ACTIVITY_LAUNCHED to ACTIVITY_FINISHED 05-12 23:42:28.637 22836 22861 F SwiftShader: external/swiftshader/src/Vulkan/libVulkan.cpp:425 vkCreateInstance TRACE_ASSERT: pCreateInfo->pNext sType = 1000247000 --------- beginning of crash 05-12 23:42:28.637 22836 22861 F libc : Fatal signal 6 (SIGABRT), code -1 (SI_QUEUE) in tid 22861 (.khronos.gl_cts), pid 22836 (.khronos.gl_cts) Original change's description: > Add support for GL_CHROMIUM_texture_filtering > > Chromium enables a custom extension, GL_CHROMIUM_texture_filtering, when > using SwiftShaderGL, to enable high precision filtering. This change > makes it so ANGLE also handles this same extension when using the > SwiftShaderVK backend, by enabling the new > VK_GOOGLE_sampler_filtering_precision custom extension. > > Bug: b/146423360 > Bug: b/154620295 > Change-Id: I69cafc1ccf5970a3d220ac7e13ec3c8fdd4a9643 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2185822 > Commit-Queue: Antonio Maiorano <amaiorano@google.com> > Commit-Queue: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> TBR=geofflang@chromium.org,jmadill@chromium.org,amaiorano@google.com # Not skipping CQ checks because original CL landed > 1 day ago. Bug: b/146423360, b/154620295 Change-Id: I803d7a7baac81cf178b59c4bf2789346ec1d3f87 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2197168 Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Tim Van Patten <timvp@google.com>
Ian Elliott d0146e07 2020-05-12T14:47:11 Vulkan: Rename SurfaceRotationType to SurfaceRotation Follow-on CL per request in https://chromium-review.googlesource.com/c/angle/angle/+/2191425/3/src/libANGLE/renderer/renderer_utils.h#48 Bug: angleproject:4436 Change-Id: I2ee8c65a0dbcf2eee4c9c7f4252abf16a578cad3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2197614 Commit-Queue: Ian Elliott <ianelliott@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Michael Spang c4734bf6 2020-05-12T22:15:02 Revert "Vulkan: Add semaphores test to VulkanExternalImageTest" This reverts commit 69e46942563b30be8a79512252e92fcf00c1a522. Reason for revert: Broke the build due to VulkanExternalHelper API change Original change's description: > Vulkan: Add semaphores test to VulkanExternalImageTest > > Add a more substantial test that uses semaphores to > VulkanExternalImageTest. > > It's still just a clear in GL, which exposed a bug that a staged clear > wasn't be flushed by a call to glSignalSemaphoreEXT. > > Bug: angleproject:3289 > Change-Id: Id938eaf2c8c20cb0ae9fb948fbfcf3448980b577 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2195684 > Commit-Queue: Michael Spang <spang@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Geoff Lang <geofflang@chromium.org> TBR=spang@chromium.org,geofflang@chromium.org,jmadill@chromium.org Change-Id: I50b2af80cd0214bd3c317eb5ba211ddc66803d74 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: angleproject:3289 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2197193 Reviewed-by: Michael Spang <spang@chromium.org> Commit-Queue: Michael Spang <spang@chromium.org>
Jamie Madill d705f18f 2020-05-11T13:53:13 Vulkan: Add immediate scissored clears. This allows us to avoid using draw commands with pipelines for scissored clears. This prevents some tests from generating large numbers of VkPipelines. Bug: angleproject:4517 Bug: angleproject:4617 Change-Id: Id4a44000078098a60aa89233cfef30b75727d108 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2194473 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Michael Spang 69e46942 2020-05-12T01:46:50 Vulkan: Add semaphores test to VulkanExternalImageTest Add a more substantial test that uses semaphores to VulkanExternalImageTest. It's still just a clear in GL, which exposed a bug that a staged clear wasn't be flushed by a call to glSignalSemaphoreEXT. Bug: angleproject:3289 Change-Id: Id938eaf2c8c20cb0ae9fb948fbfcf3448980b577 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2195684 Commit-Queue: Michael Spang <spang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
shrekshao 204720bd 2020-05-08T18:08:37 Fix GetBooleani_v validation and params length for WebGL OES_draw_buffers_indexed WebGL 2 seems to be ES300 context and will fail the ValidateGetBooleani_v at context->getClientVersion() >= ES_3_1. Also for getIndexedParameter pname==GL_COLOR_WRITEMASK, the length shall be 4. Bug: angleproject:4394, chromium:1058744 Change-Id: Ia60506b6b1f120ed06acbcea0cb1f4581c70b32b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2191424 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shrek Shao <shrekshao@google.com>
Geoff Lang a2ece533 2020-05-12T12:20:00 GL: Use a valid internal format for CopyTexImage in BlitGL::blitColorBufferWithShader The frontend format is not always valid to use for glCopyTexImage. Translate it to a valid format for the current driver. TEST=deqp/functional/gles3/framebufferblit/default_framebuffer_00.html BUG=angleproject:4632 Change-Id: I838a1b27b528f074f440575adb88357a910f596a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2196842 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>