src


Log

Author Commit Date CI Message
Cody Northrop fc9457fb 2021-09-15T10:46:55 Revert "Vulkan: Suppress CoreValidation-Shader-InterfaceTypeMismatch" This reverts commit 62c70b449d2ef5e195c583f7a7627f14587a51dc Reason for revert: VVL bug fixed upstream https://github.com/KhronosGroup/Vulkan-ValidationLayers/pull/3264 Original change's description: > Vulkan: Suppress CoreValidation-Shader-InterfaceTypeMismatch > > New VVL error causing test failures. > > Bug: angleproject:6382 > Change-Id: I61801828c0879a33502a2d9582e2e7da1bdb9250 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3155571 > Reviewed-by: Cody Northrop <cnorthrop@google.com> > Reviewed-by: Brandon Jones <bajones@chromium.org> > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Bug: angleproject:6382 Change-Id: I41202a1d577fb6d9204ead32df134e6c5b3a1a86 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3163238 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Jamie Madill 1ca1589f 2021-09-13T10:56:58 Give GLES extension bools a vendor suffix. This is in preparation for auto-generation which will give all of these bools suffixes. Bug: angleproject:6379 Change-Id: I7e3f6c9b644c41a2165e6bf7b62d661fd352a250 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3158503 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 9ada074a 2021-09-10T16:18:19 Move capability values from gl::Extensions to gl::Caps. Several extensions stored extra information in the wrong structure. Move them to the Caps structure in prepraration for auto-generating the Extensions struct. Bug: angleproject:6379 Change-Id: If5643b72039e299cb0f7c49591d13b3c7cd8a36c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3158403 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi 9112b1a9 2021-09-13T15:39:53 Vulkan: SPIR-V Gen: Fix precision of findMsb In GLSL, findMsb operates on a highp operand, while returning a lowp result. In SPIR-V, RelaxedPrecision cannot be applied on the FindSMsb instruction as that affects the operand as well. This change makes sure RelaxedPrecision is not applied to a FindSMsb instruction. Bug: angleproject:4889 Bug: angleproject:6132 Change-Id: I6a0defbbd53ec703c7ecbad5cd5c79d215b11c32 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3158506 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Gert Wollny 54e89a1b 2021-09-02T16:48:42 Capture/Replay: handle param reading of glGetUniformuiv Enable the test that was fixed by this. Bug: angleproject:6108 Change-Id: I0bd46a85c2337e3c1a236954c8f131df12c499b5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3140155 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
Cheryl Wei e10a4031 2021-09-08T15:57:00 Vulkan: Add a test to triger large VAO dirty bit handling. Some traces bind one VBO to a large number of VAOs,this will cause glBufferData spending a lot of time doing VAO dirty bit handling,which leads to high cpu load in these traces.This test could triger this issue. Bug: angleproject:6371 Change-Id: Iedc6630b497cb0f62ea0129aefc19c717c3ef905 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3147173 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Sunny Sun <sunny.sun@arm.com> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 371542cd 2021-08-23T23:10:09 Vulkan: Use VK_EXT_load_store_op_none With read-only depth/stencil attachments, ANGLE utilizes storeOp=NONE to optimize memory bandwidth (by avoiding write back of tile memory at the end of the render pass). Simultaneoulsy, this avoids a synchronization hazard with the next write to that depth/stencil image. If a framebuffer contains a depth/stencil attachment but it's unused, ANGLE utilizes loadOp=NONE/storeOp=NONE to effectively remove any memory bandwidth wasted on the attachment. Bug: angleproject:5371 Change-Id: I76cbadbf1194041532ac4b690ffe087298f2de51 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3114232 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Charlie Lao ca70b636 2021-09-09T16:34:34 Vulkan: Reformat staged buffer data using CPU When a R4G4B4A4 texture is attached to FBO, we dynamically choose a new format to fallback to R8G8B8A8 on some GPU that can't render to R4G4B4A4. During this format switch, if we already have a staged buffer update with old format, we must reformat the data to new format. Right now this is done by initImage and flush out staged update and read back and restage. This is very inefficient. This CL adds a new code path that just uses CPU to convert the staged data from old format to new format. Bug: b/198788068 Change-Id: I9b763dafdc9431d4fbbc26169c156b09ac13c815 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3153055 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Charlie Lao e83f1b9a 2021-09-13T09:31:50 Reland "GL: Relax the assertion to exclude BoundAsAttachment bit" This is a reland of b27bca08ef4ee20a0952b8efeb7c132bdb2ebb50 Original change's description: > GL: Relax the assertion to exclude BoundAsAttachment bit > > Front end has added DIRTY_BIT_BOUND_AS_ATTACHMENT when texture is > attached to FBO. This bit usually is processed at Texture::syncState > time. But there are situations that This call may not been called before > texture is been used, since existing code not expecting merely attach > tetxure to FBO will insert dirty bit to texture and there is this place > updateProgramTextureBindings() in GL backend is hitting assertion > because of this new bit. This CL adds a new check > hasAnyDirtyBitExcludingBoundAsAttachmentBit to avoid hitting assertion. > > Bug: angleproject:6381 > Change-Id: I615c27e5d5efe751a25d5c9ecf11c1409a699f46 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3158547 > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Geoff Lang <geofflang@chromium.org> > Commit-Queue: Charlie Lao <cclao@google.com> Bug: angleproject:6381 Change-Id: I29eb759a0b4500b7ab6d3d4ce73a27bc71882b57 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3158299 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Charlie Lao 3ad0b862 2021-09-13T20:10:10 Revert "GL: Relax the assertion to exclude BoundAsAttachment bit" This reverts commit b27bca08ef4ee20a0952b8efeb7c132bdb2ebb50. Reason for revert: Wrong fix. Original change's description: > GL: Relax the assertion to exclude BoundAsAttachment bit > > Front end has added DIRTY_BIT_BOUND_AS_ATTACHMENT when texture is > attached to FBO. This bit usually is processed at Texture::syncState > time. But there are situations that This call may not been called before > texture is been used, since existing code not expecting merely attach > tetxure to FBO will insert dirty bit to texture and there is this place > updateProgramTextureBindings() in GL backend is hitting assertion > because of this new bit. This CL adds a new check > hasAnyDirtyBitExcludingBoundAsAttachmentBit to avoid hitting assertion. > > Bug: angleproject:6381 > Change-Id: I615c27e5d5efe751a25d5c9ecf11c1409a699f46 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3158547 > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Geoff Lang <geofflang@chromium.org> > Commit-Queue: Charlie Lao <cclao@google.com> Bug: angleproject:6381 Change-Id: I0e7bf066a3736c72918f1fe36d195b5c516b569c No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3158297 Reviewed-by: Charlie Lao <cclao@google.com> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Charlie Lao <cclao@google.com>
Hailin Zhang 66886228 2021-09-13T11:58:31 delete a wrong comment delete a wrong comment for test DrawElementsElementArrayBufferMapped Signed-off-by: Hailin Zhang <hailinzhang@google.com> Change-Id: Idc95b50f3fd2ca2da65b090a20f5fdc36605b8e6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3158291 Reviewed-by: Cody Northrop <cnorthrop@google.com>
Hailin Zhang e1befb35 2021-09-09T15:53:32 fix a EXT_buffer_storage issue. According to spec, GL_MAP_PERSISTENT_BIT_EXT indicates that it is not an error for the GL to read data from or write data to an immutable buffer while it is mapped. Bug: b/188685164 Change-Id: I899a978dbf9c1d1ad3489063028fd5500c4bd5e1 Signed-off-by: Hailin Zhang <hailinzhang@google.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3151278 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Cody Northrop 077b8eef 2021-08-26T22:15:54 FrameCapture: Add ES 3.1 Vertex Attrib MEC support ES 3.1 adds new, more explicit ways to bind vertex buffers to different format combinations. This allows changing how data is interpreted without respecifying all the data as well. Apps using new ES 3.1 vertex attribute functions can be incompatible with our MEC setup that uses VertexAttribPointer. This was caught recently by Jamie's changes to enforce ES2 only conditions. Fortnite is the first app that uses ES3.1 semantics exclusively. To support this, add VertexAttribFormat and VertexAttribBinding to to our attribute setup loop. For binding indexes that *aren't* used with VertexAttibPointer, set them up with BindVertexBuffer. Test: Fortnite MEC Bug: b/180418810 Bug: angleproject:5658 Bug: angleproject:6274 Change-Id: Id0cd10f6270fc96354797c3008ac181a4d008031 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3124339 Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Charlie Lao b27bca08 2021-09-13T09:31:50 GL: Relax the assertion to exclude BoundAsAttachment bit Front end has added DIRTY_BIT_BOUND_AS_ATTACHMENT when texture is attached to FBO. This bit usually is processed at Texture::syncState time. But there are situations that This call may not been called before texture is been used, since existing code not expecting merely attach tetxure to FBO will insert dirty bit to texture and there is this place updateProgramTextureBindings() in GL backend is hitting assertion because of this new bit. This CL adds a new check hasAnyDirtyBitExcludingBoundAsAttachmentBit to avoid hitting assertion. Bug: angleproject:6381 Change-Id: I615c27e5d5efe751a25d5c9ecf11c1409a699f46 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3158547 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Jamie Madill 5650273a 2021-09-07T09:41:59 Capture/Replay: Capture trace file list to JSON. Instead of using a text file, we can use a JSON file to store the list of files in a trace. We can use this list in the GN to pull the trace files directly instead of using auto-generated code. It also consolidates the trace metadata in a single location. Also captures the Windows Surface ID to the JSON file. Bug: angleproject:5133 Change-Id: I236b614f7d0c844e7c4a5276dd6ac5964e5c393d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3144214 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Tim Van Patten <timvp@google.com>
Cody Northrop 62c70b44 2021-09-10T16:54:49 Vulkan: Suppress CoreValidation-Shader-InterfaceTypeMismatch New VVL error causing test failures. Bug: angleproject:6382 Change-Id: I61801828c0879a33502a2d9582e2e7da1bdb9250 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3155571 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Brandon Jones <bajones@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Gregg Tavares 9c6f6c39 2021-09-10T14:46:18 nullptr_t to std::nullptr_t The Skia build requires std::nullptr_t Bug: angleproject:6377 Change-Id: Ic41955e1dfefcf24bc39240d164ad938f523717c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3154997 Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Gregg Tavares <gman@chromium.org>
Jamie Madill 7e8fa429 2021-09-08T11:56:45 Capture/Replay Tests: Script cleanups. Minor cleanup changes and removes some outdated parameters. Includes logging information about how much time the script spends running each child process. Bug: angleproject:6102 Bug: angleproject:6299 Change-Id: I0b4da535b858ced3cdc21c341c2c001ffe9c8192 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3149190 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Tim Van Patten <timvp@google.com>
Jamie Madill 247ee1c3 2021-09-10T09:38:25 Perf Tests: Output results in "msBestFitFormat" again. The histogram bins for "ms" would cause excessive rounding for tests that run very quickly. For example, 0.0012354 ms would be rounded to 0.001 ms. This would produce very flat graphs that don't accurately represent the real results. Bug: angleproject:6090 Change-Id: I9293b2083d7e54dc2663648c361f4883278806ec Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3152746 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill eb8ffe2f 2021-09-07T09:53:22 JsonSerializer: Allow adding values to root node. Previously we would only allow a single group at the root document node. This change allows us to have multiple members. It also changes the API slightly. Instead of calling startDocument, you now can add values and groups on an empty serializer object. It also removes the implicit endGroup call in endDocument. Groups must now be manually ended. Bug: angleproject:5133 Change-Id: Id39016233d73270d1e20d99d59c1729fbcdd8860 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3144213 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Gregg Tavares 2795866c 2021-09-10T02:08:40 Fix ConvertUnsupportedConstructorsToFunctionCalls The code was not hanlding nested expressions. For example: mat4(vec4(mat2x2), ...) Switched to using TIntermRebuild Bug: angleproject:5505 Change-Id: I845d94326324ac48d7489225d42d0c6e38622492 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3152168 Commit-Queue: Kenneth Russell <kbr@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill 0e021199 2021-09-08T12:31:47 Gold Tests: Append "show all results" to triage links. This should allow for easier triage when CL authors run into new images that don't match the goldens. Bug: skia:12428 Change-Id: I60fee615f23f5a1b36ddbe6c6708498fb3def46e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3149571 Reviewed-by: Brian Sheedy <bsheedy@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Gregg Tavares 958dce52 2021-09-09T14:36:37 Move IntermRebuild.h/cpp to tree_util Bug: angleproject:5505 Change-Id: I7b68057fff0a0eb0d86c1aed01599fa9dbb7db3b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3152167 Commit-Queue: Gregg Tavares <gman@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Yuly Novikov 10d6e9b0 2021-09-09T20:39:50 Suppress dEQP GLES3 failures on Mac Intel UHD 630 Bug: angleproject:6376 Change-Id: I10338ca3ec35d301195a04fc15b2148c7b7a5f4a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3152858 Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Charlie Lao 0a592aa4 2021-09-01T19:00:24 Vulkan: Add warning when a fallback texture format is used. Emit a performance warning message when a fallback texture format is been used for sampling. Emit a performance warning when we have to do data copy during format fallback transition. Bug: b/196456356 Change-Id: Ifbe66069e506597dbacfefda10e699a8e9f320d5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3139239 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi 13e9817b 2021-09-08T11:57:00 Translator: Fix assert in ScalarizeVecAndMatConstructorArgs This transformation assumed that precision can be derived for constants in every possible scenario, but that's not true. The fuzzer produced the following code: void main() { mat4 m; mat2(0, bvec3(m)); } In the above, the constant 0 legimitately has no precision. The assert was in a function that attempted to make a temporary out of the constant, which this commit changes to use the original constant as-is. Bug: chromium:1246781 Change-Id: I6f247264e5213cfd9449fdfb1dc312d02b99f2f1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3149191 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill ac78d723 2021-09-08T12:19:40 Capture/Replay Tests: Allow 3 concurrent ninja processes. This is an attempt to fix the flaky ninja error when running multiple processes while still getting pretty good test times. The previous fix eliminated the flakiness but doubled the test time. In local testing this is a bit slower but not 2x slower. Bug: angleproject:6299 Change-Id: Ibcd462712d3eab759c5923ca229e009046783e9b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3149570 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 44ab7a14 2021-09-09T10:05:19 Capture/Replay: Mark one test as flaky. WebGLCompatibilityTest.DrawArraysBufferOutOfBoundsNonInstanced Bug: angleproject:6373 Change-Id: I0c26511b3ab0cc4938fd7b7242a6ac033b22df42 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3149377 Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Gregg Tavares f8ad5bbb 2021-09-09T10:53:53 Don't advertize GL_APPLE_clip_distance on direct metal The direct metal backend does not support gl_ClipDistance array. Bug: angleproject:5505 Change-Id: I9a1736bd70ee3543ecbe82b36b6ea30df0dac3c8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3152216 Commit-Queue: Gregg Tavares <gman@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org>
Tim Van Patten 1a6fd9d0 2021-09-09T10:32:26 Capture/Replay: Remove debug logging The debug logging is flooding the terminal with the following: Frame 0: x 0 y 0 (screen x 64, screen y 133) Frame 1: x 1 y 0 (screen x 74, screen y 133) Frame 2: x 2 y 0 (screen x 84, screen y 133) Frame 3: x 3 y 0 (screen x 94, screen y 133) Frame 4: x 4 y 0 (screen x 104, screen y 133) Frame 5: x 5 y 0 (screen x 114, screen y 133) Frame 6: x 0 y 1 (screen x 64, screen y 166) Frame 7: x 1 y 1 (screen x 74, screen y 166) Frame 8: x 2 y 1 (screen x 84, screen y 166) Frame 9: x 3 y 1 (screen x 94, screen y 166) This drowns out all over log statements, so it's being removed. Bug: b/186881553 Change-Id: Ib2235a18b56b993f16e7532249c488403383bd65 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3152155 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Tim Van Patten <timvp@google.com>
Jamie Madill c12d2f37 2021-09-09T12:11:14 Capture/Replay: Remove unused function in header. Bug: angleproject:5133 Change-Id: I80f22d95101263f2ff37835c9e0f634b96d41622 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3150258 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Lubosz Sarnecki 3dded466 2021-09-09T15:28:07 Tests: Add Blockman Go trace. Test: angle_perftests --gtest_filter="*blockman_go*" Bug: angleproject:6365 Change-Id: I5f1008288ff1b4ec049e721fbdf72e80902fe8fc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3151816 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Lubosz Sarnecki <lubosz.sarnecki@collabora.com>
Charlie Lao 856a0e03 2021-09-01T18:09:14 Vulkan: Make vk::Format from struct to class With all the recent changes that there are two actualImageFormatIDs, retrieve the actual format requires pass in a renderable boolean. And the vertex format also has a similar requirement to the real format may differ depends on if it is compressed or not. This struct no longer safe to expose the underline data members directly. This CL turns it into a class and expose the actual format via method that requires renderable or compressed boolean. Bug: b/196456356 Change-Id: Ie2f8308cc408bde1b0787e0b392e143187cc4425 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3139236 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Brandon Schade a33d902b 2021-08-16T12:01:53 Add Entry points for GL_EXT_EGL_image_storage Code generation for GL_EXT_EGL_image_storage Bug: angleproject:6346 Change-Id: Ib918619205bfe7bd8fba0748ff6db593c858151f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3133763 Commit-Queue: Brandon Schade <b.schade@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Charlie Lao 8ea87a67 2021-08-17T18:46:36 Vulkan: Avoid texture format fallback when possible Some texture formats are not renderable on some hardware. For example, R4G4B4A4 are not renderable on nvidia and not blendable on ARM. R5G5B5A1 are also not blendable on nvidia. Right now when we generate format table, we are being most conservative, picking an actual format that is always renderable and blendable. This means when R4G4B4A4 is used on one of these GPUs, we are always falling back to R8G8B8A8 regardless if the texture is actually being used as color attachment or not. This CL adds a actualRenderableImageFormatID field in vk::Format. Initially we will pick actualImageFormatID which only ensures texture sample capability. If later on the texture is being attached to FBO, then we will switch to actualRenderableImageFormatID and do data copy if necessary. This way we save memory and reduce texture bandwidth for most usage of these textures. For renderBuffer and surfaces and EGLImages, we always pick the renderable textures. Bug: b/196456356 Change-Id: I02eec3365c2a317b0d1bad6dbdc3e741114c5bba Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3104514 Reviewed-by: Ian Elliott <ianelliott@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Gregg Tavares fa9f4cf3 2021-09-08T12:58:59 Fix AST validation error with gl_FragCoord Bug: angleproject:6370 Change-Id: Ia575e0329da74c84365b74b39398551b572b91a5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3149725 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Gregg Tavares <gman@chromium.org>
Geoff Lang 851ecf49 2021-09-08T14:40:41 GL: Temporarily disable MSRTT on Android. This extension is causing validation errors and graphics corruption in Chrome. Disable it until the bugs are resolved. Bug: chromium:1238327 Change-Id: I823303f2d75f2d6422cf5680a8751b9b79c8580b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3149573 Reviewed-by: Peng Huang <penghuang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Gregg Tavares c9acd799 2021-09-07T22:25:23 Only rewrite constructors for scalars/vectors/matrices Bug: angleproject:5505 Change-Id: I50b3a9a585b2eec6e4d7bd9b3197206a973d4400 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3147071 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Gregg Tavares <gman@chromium.org>
Sunny Sachanandani 46555145 2021-09-02T14:55:02 d3d11: Allow binding R/RG texture to EGLImage Also allows GL_RED/RG/R16/RG16_EXT as well as GL_RGB10_A2_EXT which was left out previously by accidently to match Chromium behavior. Adapts the existing ClearTextureImage test to parameterize over a number of texture formats. Bug: angleproject:6369 Change-Id: I91110a06b08379a3067a2161e345258415cd5e16 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3140744 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Sunny Sachanandani <sunnyps@chromium.org>
Jamie Madill e1bc8de3 2021-09-08T07:59:37 Change links from 'master' to 'main' branch. Bug: chromium:1226949 Change-Id: Ie7b28b2fa094cf0c0a407968d681e580519cbb88 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3148210 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 5726158f 2021-09-08T13:31:40 Trace Tests: Fix test data path. A prior refactor was missing the path separator between the trace folders. This CL also makes the error more visible by forcing the test step to fail if there's a missing path. Previously it would print an error message but silently continue. Bug: angleproject:5133 Change-Id: I71e7c751662a08d6ff199f0f802310d0ef52ed5e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3149572 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Tim Van Patten f1cbaac7 2021-09-08T10:21:40 Capture/Replay: Disable world_of_kings for Win+Intel The world_of_kings trace is flaky, particularly on Windows+Intel. In most instances (every?) it's off by 1: Left Pixel rgba(32, 105, 119, 255) #206977FF <<--- good Diff rgba(0, 0, 1, 0) Right Pixel rgba(32, 105, 118, 255) #206976FF <<--- bad Bug: angleproject:6372 Bug: b/198101940 Change-Id: I6be7138e050d63df3dd8a189882b64dadfe62740 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3149433 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Tim Van Patten <timvp@google.com>
Jamie Madill 2f3e4db8 2021-09-02T10:31:13 Capture/Replay: Serialize trace metadata to a JSON file. This will allow us to remove more code auto-generation for the trace tests. The trace info now can be loaded directly from JSON instead of from the autogenerated information. Bug: angleproject:5133 Change-Id: I04e22b9279b19282df274bc8defcd363d0449111 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3140218 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Shahbaz Youssefi 8b2fd983 2021-09-08T11:36:17 Translator: Fix validation failure in RemoveDynamicIndexing This transformation adds function definitions to the tree after the fact, so function call validation is disabled until the transformation is complete. Bug: chromium:1246686 Change-Id: I40f77cb25cf272d5ebc42ece572371ce5161e819 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3148850 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill 9874be31 2021-09-02T10:25:21 Trace Tests: Load trace list from JSON file. Instead of using the auto-generated enum for the trace list, load directly from restricted_traces.json. This will lead to more CLs that entirely remove the auto-generated code from the trace tests. Bug: angleproject:5133 Change-Id: I6515624a2145319d097b43085741cf9c48f1792e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3140217 Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Brandon Schade 5a7b8c61 2021-08-31T14:58:06 Vulkan: Removed size check when handling mismatched vertex attributes If locations are specified to be noncontiguous or out of order when there is a mismatch between the attribute type specified by glVertexAttribPointer and the shader, the program's attribute type from ProgramExecutable's getProgramInputs() method would fail. This is due to using attribIndex which refers to the attribute's location rather than the position in the vector returned from getProgramInputs(). This change removes the size check as it's not needed for GL_ANGLE_relaxed_vertex_attribute_type. Bug: angleproject:5762 Test: VertexAttributeTestES3.DrawWithMismatchedComponentCountLocationSpecified Change-Id: Ie15f2095e618e12403d1524273d1add74b00cdbd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3137273 Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Brandon Schade <b.schade@samsung.com>
Geoff Lang 48da7e7e 2021-09-07T15:49:07 Add a gn arg to enable collecting Vulkan system info on Linux Some ANGLE users may wish to enable this path before the crashes are resolved. Bug: angleproject:5717 Change-Id: I7ed3a575e639cda9d88475cc38f32d7bbc37e84c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3144372 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 0bb3fcbb 2021-09-07T14:28:09 Translator: Fix precision of gl_PointSize on ES3+ In ESSL100, gl_PointSize is declared as mediump. In ESSL300+, it's declared as highp. Bug: angleproject:4889 Bug: angleproject:6132 Change-Id: Ie904a12fdaaca04e2507f1796d9d0fe34b154eab Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3145615 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Brandon Schade d6afeadd 2021-08-30T14:44:59 Vulkan: Make descriptor set bindings consistent across shader stages Previously if a uniform or uniform block was used in a program's shader, a different descriptor set binding index would be used for each linked shader stage. Now, the bindings chosen for uniforms and blocks of the same name will be identical. This change also updates mActiveImagesMask in ProgramExecutable for separable programs. Bug: angleproject:4512 Tests: KHR-GLES3*.core.geometry_shader.api.max_image_uniforms ProgramPipelineTest31.MaxFragmentShaderStorageBufferObjects ProgramPipelineTest31.MaxFragmentUniformBufferObjects ProgramPipelineTest32.MaxGeometryImageUniforms GeometryShaderTestES32.MaxGeometryImageUniforms Change-Id: I3662d06b4dec284f4c51c6047e6b684b82925e3f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3068381 Commit-Queue: Brandon Schade <b.schade@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Charlie Lao c5d11128 2021-09-02T18:18:02 Vulkan: Skip but keep incompatible updates. If texture has a level incompatibly specified, right now we are still oding the copy. This will trigger VVL and is incorrect. This CL skip the flush and keep it. Also Add various tests for 16 bit texture format in preparation for future CLs that may pick a more native format for 16 bit texture instead of always fallback to 32 bit. Test: VulkanFramebufferTest.R4G4B4A4TextureSampleOnlyActuallyUses444Format Bug: b/196456356 Change-Id: I9d53a97bb72208b52fb25e429abb49bbbc53c50c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3141030 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao ad09f98c 2021-09-03T18:20:01 Vulkan: Simplify TextureVk::initImage() call. This CL moves the logic that check if immutable texture or not and decide what levels should be allocated from callers in various places to TextureVk::initImage() to simplify the code a bit. Bug: b/196456356 Change-Id: Ida31a5a06402cc627d0493032f8424baae3e7264 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3141974 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Geoff Lang fefdf81e 2021-09-07T14:26:37 Remove Vulkan System info collection on Linux. There is a high volume of crashes in VulkanLibrary::getVulkanInstance Bug: chromium:1192586,angleproject:5717 Change-Id: I08fbe6c57eb3c419790adab55dc4ffa9ddbe1526 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3145614 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Jamie Madill c5a38976 2021-09-01T07:35:40 Capture/Replay: Add expression trigger validation calls. Setting the environment variable "ANGLE_CAPTURE_VALIDATION_EXPR" will make ANGLE's capture logic evaluate this expression every captured call to see if it should insert a validation checkpoint. The retracing script also accepts --validation-expr as an argument. For instance, the expression: ((frame == 2) && (call < 1189) && (call > 1100) && ((call % 5) == 0)) Will insert validation checkpoints on frame 2, between calls 1100 and 1189 and will validate every 5th call. The 'call' here is the count of captured calls, which are mostly GL calls with a few ANGLE replay calls in the mix. We add a small single-header library that can evaluate arthithmetic expressions in order to parse these expressions, as well as an option to the retracing script. Bug: angleproject:5133 Change-Id: Ic369e85d8e905a3a7a32fa098f7d8ebe7baf4ab9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3136094 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Shahbaz Youssefi e22afce9 2021-09-07T12:34:10 Vulkan: Drop requirement for inheritedQueries At this point only timer queries depend on this feature, which can be disabled instead of dropping support to ES2.0. Bug: angleproject:6100 Change-Id: I8389a593d308830e3f820a4541d7accc886fb70f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3145611 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi ae555e85 2021-09-05T21:43:03 Translator: Fix uninitialized TStructure::mAtGlobalScope This flag was not set in SeparateDeclarations when creating a struct. Bug: chromium:1246301 Change-Id: I673a7158bcc8ead0fd36a5b00696dd990950a8c0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3139663 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Zequan Wu 178b8481 2021-09-03T23:30:52 Revert "Skip validation of stderr in TestSuiteTest.RunFlakyTests" This reverts commit 89dbbb2ac6875c92c99feb24353641142bbd49b1. Reason for revert: The test failure was gone in latest clang roll. Original change's description: > Skip validation of stderr in TestSuiteTest.RunFlakyTests > > There is a bug (crbug.com/1234124) causing the profile runtime to print > errors about failing to write the profraw file. Don't validate stderr in > these builds until that is fixed. > > Bug: chromium:1234124 > Change-Id: Ie1e3a3eaf7dc0e2c20064822f774cc85fe79d3bc > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3076479 > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Bug: chromium:1234124 Change-Id: If33e92b533c99677d2b8f55de618ecf15e3f19d2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3141973 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill 3ae1f336 2021-09-03T09:34:10 WebGL: Make unsuccessful links fail subsequent draw calls. This protects against incomplete state updates during a failed link call that can interfere with draw calls. Bug: angleproject:6358 Bug: chromium:1241123 Change-Id: Ie892654c3a58c69d6e35ba3c41758ab6269d8193 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3140496 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Gregg Tavares ab187c35 2021-09-02T14:46:29 Handle comparing arrays of scalars/vectors/matrices Fixes: UniformBlockWithOneLargeArrayMemberTest.MemberArrayOperations/ES3_Metal Bug: angleproject:5505 Change-Id: Ife35db2146ac8ce8c0880cdb98df57dc75cb35cb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3140712 Commit-Queue: Gregg Tavares <gman@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Gert Wollny b0dfd268 2021-09-02T10:53:57 Capture/Replay: Handle Gen/Delete ProgramPipelines Enable the test that failed compilation before. Bug: angleproject:6180 Change-Id: Id15a5b82c8ee5dab291090375d15ce93b8908535 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3139900 Commit-Queue: Gert Wollny <gert.wollny@collabora.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Gert Wollny 066edc2b 2021-09-02T10:11:03 Capture/Replay: Handle glGetFragDataLocation Enable the test that is now passing Bug: angleproject:6180 Change-Id: I3aadc708ebf0b5d751af0a45713aaf4b72526188 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3139899 Commit-Queue: Gert Wollny <gert.wollny@collabora.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Gert Wollny 349d555d 2021-09-02T10:07:26 Capture/Replay: handle glGetBooleani_v This also fixes a test. Bug: angleproject:6180 Change-Id: Icad2d089738f4458c90b87620337e9798adb9141 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3139898 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
Jamie Madill 584a10cc 2021-07-02T15:24:32 Capture/Replay: Use flat map for uniform locations. Similarly to prior changes that change the resource map lookup, this change switches the uniform lookup from an unordered map to a plain pointer lookup. It internally uses an unordered_map of vectors, and caches each vector base pointer whenever a program updates uniform locations. Testing with Manhattan 3.0, this CL decreases the binary size in a Windows/Release build from 6.125MB to 4.413 MB. This is about a 28% decrease. This allows for longer traces and also reduced replay overhead. Bug: angleproject:5133 Change-Id: I0957bc1075ec87ed9dca4a2525f27149c61cbe12 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3002511 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Gert Wollny <gert.wollny@collabora.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Jamie Madill ec8418da 2021-07-02T09:55:39 Capture/Replay: Use plain arrays for resource maps. Instead of using the templated wrapper class, use C++ arrays that are dynamically allocated with "new". This saves a fair bit of binary size spent in calling the operator[] function. To get the right size this CL adds tracking to the capture for each resource type, then updates trace initialization to store the maximum allocated resource ID for each type. Tested with Manhattan 3.0: on Windows with Release, binary size for the trace shared object went from 7.053 MB to 6.125 MB. About a 13% decrease in binary size. That will allow for longer captures and will also reduce trace overhead. Bug: angleproject:5133 Change-Id: I2cd7515262a9ec76112d5f790001e3a6e9acd3a9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3003383 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Gert Wollny <gert.wollny@collabora.com> Reviewed-by: Tim Van Patten <timvp@google.com>
Jamie Madill b6e99bb3 2021-09-02T13:47:34 Rename and expand shader variable init feature. This feature now forces both output and unitialized locals to be initialized by the shader translator. This feature is needed by the trace validator to ensure we get deterministic behaviour in traces that exhibit some undefined results. Bug: angleproject:5133 Change-Id: Id1242cd077a57e891eed217f7671976ce1631a58 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3140216 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 9c05f55a 2021-07-15T10:58:10 Capture/Replay: Add replay state validation. We can use this to validate traces that have slight differences when retracing. The valdation works by embedding the "expected" JSON into a string at the end of each captured frame. The replay also embeds a callback which fires right before the swap in the replay harness. The harness then gets the "actual" JSON and runs a comparison. On a mismatch it calls "diff" externally. Currently the diff call is hard-coded to work on Linux only. Note that when running validation it's important to replay on SwiftShader since that's what we use to retrace. Bug: angleproject:5133 Change-Id: Icbf0031d07be8bd916607c537dec235f9a512c43 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3066008 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Shahbaz Youssefi 2a7855d2 2021-09-01T14:53:31 Revert "Vulkan: Suppress layered FB validation error." This reverts commit 9872e5af32c31064b0a80eb5bf3fc8ce70db0dbf. Reason for revert: VVL bug fixed in https://github.com/KhronosGroup/Vulkan-ValidationLayers/issues/3237 Original change's description: > Vulkan: Suppress layered FB validation error. > > This is popping up with a new roll of the VVL. Instead of fixing it, > we can disable it for now. > > Bug: angleproject:6293 > Change-Id: I6cd12a24b26a4f536db16631e198317e8c4d9fcc > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3103505 > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Commit-Queue: Jamie Madill <jmadill@chromium.org> Bug: angleproject:6293 Change-Id: I9eb48aea1920a45a9bdad7953b2122dd595d31c6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3136096 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tim Van Patten 8bb3c827 2021-07-22T19:06:40 Fix Multithreaded eglDestroyContext()/eglTerminate() The following EGL calls can lead to a crash in eglMakeCurrent(): Thread A: eglMakeCurrent(context A) Thread B: eglDestroyContext(context A) B: eglTerminate() <<--- this release context A Thread A: eglMakeCurrent(context B) The eglMakeCurrent(context B) call will assert when attempting to unMakeCurrent(), since thread A doesn't know that context A was already destroyed by thread B. To fix this: 1.) A Context will only be released once there are no Threads that currently have a reference to it (no longer have the Context current). - Context::mIsCurrent is being removed, since it was inaccurate and not thread-safe. For example, when eglTerminate() was called, the eglTerminate()'ing-Thread would "steal" the Context that was current on another Thread to destroy it. 2.) A Display will only be fully terminated and its resources released once all Contexts have been destroyed and are no longer current. Otherwise, Display::terminate() will return if any Contexts are still in use by a Thread. EGL 1.5 Specification 3.2 Initialization If contexts or surfaces, created with respect to dpy are current (see section 3.7.3) to any thread, then they are not actually destroyed while they remain current. If other resources created with respect to dpy are in use by any current context or surface, then they are also not destroyed until the corresponding context or surface is no longer current. With this fix, the app com.netmarble.sknightsmmo can start. This also exposed an issue with GlslangFinalize(), since glslang can only be initialized/finalized once per process. Otherwise, the following EGL commands will call GlslangFinalize() without ever being able to GlslangInitialize() again, leading to crashes since GlslangFinalize() cleans up glslang for the entire process. dpy1 = eglGetPlatformDisplay() | eglInitialize(dpy1) | GlslangInitialize() dpy2 = eglGetPlatformDisplay() | eglInitialize(dpy2) | GlslangInitialize() eglTerminate(dpy2) | GlslangFinalize() eglInitialize(dpy1) | isInitialized() == true Since Display::isInitialized() == true, the rest of Display::initialize() is skipped and GlslangInitialize() is not called. Later, the next test that attempts to compile a program will crash due to glslang no longer being initialized. Finally, this exposed the following tests leaking EGLContext handles: - EGLSurfaceTest::initializeContext() - EGLContextSharingTest.DisplayShareGroupContextCreation - EGLCreateContextAttribsTest.IMGContextPriorityExtension - EGLMultiContextTest.TestContextDestroySimple Other tests were failing to reset the context, preventing the Display from being terminated since there were still references to Contexts owned by the display: eglMakeCurrent(dpy, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); Bug: angleproject:6208 Bug: angleproject:6304 Bug: angleproject:6322 Test: EGLContextSharingTest.EglTerminateMultiThreaded Test: EGLContextSharingTestNoFixture.EglDestoryContextManyTimesSameContext Test: Load com.netmarble.sknightsmmo Change-Id: I160922af93db6cabe0ed396be77762fa8dfc7656 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3046961 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Tim Van Patten <timvp@google.com>
Cody Northrop 3271dea1 2021-09-02T11:02:53 FrameCapture: Check EXT before limiting tex buffer Only apply the limit to textureBufferOffsetAlignment when the extension is enabled, otherwise the default alignment is zero and the assert will fire. This was missed previously because most of us (including the bots) run with the following GN arg enabled: angle_expose_non_conformant_extensions_and_versions = true Test: FrameCapture on Pixel 4 Bug: b/180418810 Bug: angleproject:5658 Change-Id: Iea0618f439efeb3351300ee5af54066bfe526f71 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3140097 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Cody Northrop 5015bf85 2021-09-02T10:47:21 GetTexImage: Fix image initialization The extra checks were preventing texture updates from flushing, triggering the following assert in readPixels during capture: ASSERT(!hasStagedUpdatesForSubresource(levelGL, layer, 1)); Test: Fortnite MEC Bug: b/180418810 Bug: angleproject:5658 Change-Id: If4209cbe9587c4222e3bf93d1551e454b1d8248d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3140096 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Alexey Knyazev 797ebdde 2021-09-02T23:15:34 Vulkan: Suppress VUID-vkCmdDraw-blendEnable A new VVL causes failures in BlendIntegerTest.MRT* Bug: angleproject:6355 Change-Id: If62b1a7934574acaeb95601d7fb0a61dc5d9c99a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3140159 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang de09f8db 2021-09-02T18:21:37 Revert "GL: Update StateManagerGL binding funcs to use ANGLE_GL_TRY" This reverts commit 4b5a774e855af2493d64b0635f56053bd795c5c5. Reason for revert: broken on iOS and Skia Original change's description: > GL: Update StateManagerGL binding funcs to use ANGLE_GL_TRY > > Bug: angleproject:3020 > Change-Id: Iff460a1012d06e1c5feff84d91117de87e7c870a > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3123167 > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Commit-Queue: Geoff Lang <geofflang@chromium.org> Bug: angleproject:3020 Change-Id: I54d81a7b734d007f65ff97990008f5e6eb8536f6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3140453 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Charlie Lao 50391b81 2021-09-01T16:27:36 Vulkan: Change TextureVk's vk::FormatID usage to angle::FormatID This is preparation change to replace some vk::Format usage in TextureVk.cpp to angle::FormatID so that they will not get affected by the next CL which will change how you retrieve actualImageFormatID from vk::Format. Bug: b/196456356 Change-Id: I30ad8314da917e7a9c8a642ccbdc6facc44f9719 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3139233 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Ian Elliott <ianelliott@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Lubosz Sarnecki 08b42714 2021-08-05T17:39:41 RendererVk: Skip VK_KHR_image_format_list on SwiftShader. Enabling the extension produces timeouts on Linux when running Chromium test suites like viz_unittests with a Debug configuration. Bug: angleproject:5281 Bug: chromium:1245774 Change-Id: I6241597dfe0300f3793524d5a73a4ef2cf0dc4eb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3140158 Commit-Queue: Lubosz Sarnecki <lubosz.sarnecki@collabora.com> Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 794b13ce 2021-09-01T12:17:26 D3D11: Fix overflow in GenerateInitialTextureData. Our use of unchecked math was causing OOB accesses with very large textures. Unfortunately it's not easy to make a passing test that reproduces this OOB access. Bug: chromium:1241036 Change-Id: Icd2749f5b3116bb51390ce769fef22c49a11f307 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3136733 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Charlie Lao 6977fa6f 2021-08-31T09:47:59 Vulkan: Store actualFormatID (not intendedFormat) in RenderPassDesc Today we store intendedFormatID in the RenderPassDesc. At unpack time, we convert intendedFormatID to vk::Format and then get the actual VkFormat. This is a bit complex and unnecessarily confusing. And this will be very error prone in the future when vk::Format has two actual image formats. This CL packed actualFormatID into RenderPassDesc and converts to VkFormat directly. Once packed in the RenderPassDesc, we never needs to reference to intendedFormat or vk::Format since all these does not matter. The only format matters is actualFormatID once you packed into the RenderPassDesc. This simplifies the logic and prepare for the future CLs. Bug: b/196456356 Change-Id: Ia282115c824e3ec446d2be15b40b1e2974b99afa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3133761 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Ian Elliott <ianelliott@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Charlie Lao 550bf6ce 2021-09-01T13:09:12 Vulkan: Keep track of data format for staged updates for ImageHelper We stage updates from a buffer or another ImageHelper object, even when the destination ImageHelper object has not been initialized (i.e, format is unknown). And we do not track what data format the staged updates are in. Right now this works because the format we end up choose will always the same as the staged data. But this may not be true in the future. This CL remembers the data format of the staged update and assert at flushStagedUpdate time that the format we staged is the same as the ImageHelper's actual format. Bug: b/196456356 Change-Id: Ib8124a47ca31f7782b9ec89c1fcb7e3000c747b7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3137419 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Ian Elliott <ianelliott@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Shahbaz Youssefi 58ec0fbf 2021-09-02T11:47:48 Vulkan: Remove the forceCPUPathForCubeMapCopy workaround This workaround has been disabled since https://chromium-review.googlesource.com/c/angle/angle/+/2594707 Bug: angleproject:2822 Bug: angleproject:3055 Change-Id: Ie9cc12c7616cd9e1801dbd92e21822c63f4d0bef Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3140214 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Gert Wollny ea609fba 2021-08-30T10:43:29 Capture/Replay: Change workdir for debug runs and annotation Append "Debug" to the capture_replay_tests workdir if it wasn't overridden to avoid having to recompile everyithing when running with or without the --debug flag given. Also add annotation for test that only fail when run with the --debug flag. Bug: angleproject:6282 Change-Id: I7c5251d8a6b1a010f3c0950909db60feeb58c611 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3129360 Commit-Queue: Gert Wollny <gert.wollny@collabora.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Shahbaz Youssefi fefbc3fb 2021-09-01T16:26:20 Vulkan: SPIR-V Gen: Re-fix precision of constructors In f3aea7447eae7f5a4a5ad1425ab375b66048ba3f, the precision of constructors was changed such that it would be derived from its operands, but also be able to be promoted based on neighboring operands. Based on https://gitlab.khronos.org/opengl/GLSL/-/issues/58 this is incorrect, and indeed the precision of the constructor (when possible) solely depends on its own operands. Bug: angleproject:4889 Bug: angleproject:6132 Change-Id: Ic2560d17973f56d4d836e3c7112d6649197a306c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3138534 Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Gert Wollny 3f4fc14f 2021-09-02T10:13:42 Capture/Replay: Update expectation for fixed test Bug: angleproject:6180 Change-Id: Ice84b0b104fe0e6b38e3830e9598f2c71efbc738 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3138511 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
Gregg Tavares e02753fc 2021-08-31T21:09:45 Convert constructors to function calls where needed. MSL does not do as many conversions between types and has more strict constructors than GLSL so convert to function calls where necessary. Fixes: GLSLTest_ES3.AmbiguousConstructorCall2x2/ES3_Metal GLSLTest_ES3.AmbiguousConstructorCall2x3/ES3_Metal GLSLTest_ES3.ConstructMatrixFromNonFloat/ES3_Metal GLSLTest_ES3.ConstructNonFloatVectorFromMatrix/ES3_Metal GLSLTest_ES3.ScalarConstructor/ES3_Metal UniformBufferTest.Std140UniformBlockWithRowMajorQualifier/ES3_Metal UniformBufferTest.Std140UniformBlockWithPerMemberRowMajorQualifier/ES3_Metal UniformBufferTest.Std140UniformBlockWithPerMemberColumnMajorQualifier/ES3_Metal UniformBufferTest.Std140UniformBlockWithRowMajorQualifierOnStruct/ES3_Metal SimpleUniformTest.FloatMatrix2UniformStateQuery/ES2_Metal SimpleUniformTest.FloatMatrix2UniformStateQuery/ES3_Metal SimpleUniformTest.FloatMatrix3UniformStateQuery/ES2_Metal SimpleUniformTest.FloatMatrix3UniformStateQuery/ES3_Metal SimpleUniformTest.ArrayOfMat3UniformStateQuery/ES2_Metal SimpleUniformTest.ArrayOfMat3UniformStateQuery/ES3_Metal UniformTestES3.MatrixArrayUniformStateQuery/ES3_Metal Bug: angleproject:6306 Change-Id: Iea8a9a261f94f121f482c2ea9678192ca056570c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3134963 Commit-Queue: Gregg Tavares <gman@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org>
Gert Wollny 606de9b7 2021-09-01T12:22:08 Capture/Replay: Handle glInvalidateSubFramebuffer Enable tests that are fixed by this Bug: angleproject:6180 Change-Id: I1efa6c34babf729a22ff42fa0f2d745e75e3521f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3135316 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
Shahbaz Youssefi df957576 2021-08-31T23:02:51 Avoid redundant blend state dirty bit setting This change no-ops a number of blend-related state setting functions when the state doesn't actually change given the parameters. Bug: angleproject:6298 Change-Id: I156e20685089aa71bd64eae560153e5def891d63 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3133823 Reviewed-by: Sunny Sun <sunny.sun@arm.com> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 9d0e2851 2021-09-01T00:42:58 Fix SeparateDeclarations vs struct specifiers Bug: chromium:1237696 Change-Id: I3b00f3797800e814ca83226a8e4f25b2a43cc641 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3133824 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Jamie Madill fa53afa4 2021-09-01T08:52:13 Capture/Replay: Add uniforms to program serialization. Previously we weren't serializing the uniform data. This meant that buggy uniform capture wouldn't show up as diffs in the serialization. Verified that this new uniform capture caught a bug when retracing PUBG mobile, which uses indexed array uniform locations. Bug: angleproject:5133 Change-Id: I2a9f6ca45f1247b1a81337e47b7fb7a3d3ab4953 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3136093 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill b8c50f39 2021-08-25T09:05:03 Support syncing traces to experimental CIPD prefix. This lets us test a retrace without first committing it to the immutable "angle" prefix. Bug: angleproject:5133 Change-Id: Ia52ccffe69faf099d6fc92eaf392610eefa549f1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3118270 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Tim Van Patten <timvp@google.com>
Aditya Kushwah f015ae81 2021-08-02T12:47:32 Implement onLabelUpdate method. This change will implement the onLabelUpdate method by calling from every TextureStorage object. Instead of using setDebugName, introduced two new functions, setInternalName and setKHRDebugLabel, which will set the internal name and KHR label respectively that will further be sent to D3D string. Bug: chromium:1164111 Change-Id: I401ca9f6e8a2099a8807f0d7f321efe74269f9f0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3067921 Reviewed-by: Rafael Cintron <rafael.cintron@microsoft.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Rafael Cintron <rafael.cintron@microsoft.com>
Jamie Madill a544ab09 2021-09-01T09:46:17 Style cleanups in JsonSerializer. Refactoring change only. Bug: angleproject:5133 Change-Id: Iae2e81218dceb8f7fbfc25e9a02aa1ce8b59a09b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3136095 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Tim Van Patten <timvp@google.com>
Jamie Madill 047e9833 2021-08-30T10:00:51 Traces: Move skia gold Python scripts. Moving this folder up one level allows us to enforce that every subdirectory in the restricted_traces folder is a trace folder. This makes it easier to batch delete or move traces. Bug: angleproject:5133 Change-Id: I5af24ce6c233f50dea2e6ffcaef6d489b03914c8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3130441 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Tim Van Patten <timvp@google.com>
Gert Wollny 58f8c824 2021-09-01T12:36:31 Capture/Replay: Update expectation bugs, remove passing test Bug: angleproject:6334 Bug: angleproject:6180 Change-Id: I7ba4e7d19e394b43e59abbd7d5a89752b6098c10 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3136573 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
Gert Wollny 8bb1df7d 2021-08-30T17:17:44 Capture/Replay: Clean up tests that pass and add new failures Bug: angleproject:6331 Bug: angleproject:6333 Bug: angleproject:6334 Bug: angleproject:6345 Change-Id: I9f6df69f50f6c8c21eaad09e476aac956c78517a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3129361 Commit-Queue: Gert Wollny <gert.wollny@collabora.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Charlie Lao 8ce42fd3 2021-08-24T17:33:05 Vulkan: Remove mFormat from ImageHelper The only thing we need from ImageHelper::mFormat is to get intendedImageFormat. This CL simplifies the interface by simply pass in intendedImageFormat into initExternal so that ImageHelper class will not need to reference to vk::Format at all. Bug: b/196456356 Change-Id: I5fcb0d7226cae44dc865a7cfb0149d74e5756f11 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3111451 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao 11fd7a14 2021-08-18T13:46:30 Vulkan: Pass actualFormatID directly into ImageHelper::initExternal Since vk::Format alone won't tell us what the actual format is. This CL let caller pass actualFormatID directly into ImageHelper::initExternal() call and let ImageHelper object keeps record of mActualFormatID without need to refer to vk::Format object. Bug: b/196456356 Change-Id: I3c47caae7f946805a32f57519348528f8d47cf4a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3104513 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Shahbaz Youssefi f3aea744 2021-08-25T22:09:58 Vulkan: SPIR-V Gen: Fix precision of constructors According to the spec, constructors don't have a precision (and thus their precision is derived from the operands they are used in. Bug: angleproject:4889 Bug: angleproject:6132 Change-Id: I557386764abf5493fbe59803dc8e260312c04b48 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3119352 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tim Van Patten 6eeab192 2021-08-27T16:26:25 Vulkan: Don't defer clear for read render target We shouldn't collect deferred clears for the read render target because they get applied to the draw render target. This CL flushes stages updates to the read render target only if it's not the same as the draw render target. This can happen when the read render target is bound to another surface. Bug: b/192327017 Change-Id: I7c9e804f4eff10728aed7aeeaf41ef3869c9bdbd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3125462 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Tim Van Patten <timvp@google.com>
Shahbaz Youssefi fbdd0516 2021-08-27T00:04:11 Vulkan: SPIR-V Gen: Fix precision of imageLoad According to the spec, imageLoad should return highp. However, glslang produces the same precision as the image (which makes more sense). This seems to be a spec bug per the discussion in this issue: https://gitlab.khronos.org/opengl/GLSL/-/issues/57 This change aligns ANGLE with glslang w.r.t to the precision of imageLoad. Bug: angleproject:4889 Bug: angleproject:6132 Change-Id: Ia0ce493a0deab21810458da6b48fdf51dfbd41a2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3122317 Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Brandon Schade 10846073 2021-08-30T14:41:16 Allow image uniforms to be used in separable programs This change updates mActiveImagesMask in ProgramExecutable for separable programs. Previously image uniforms would only work in the first shader stage. Bug: angleproject:4512 Tests: ProgramPipelineTest31.ImageUniforms Change-Id: Ib35bed94bb8fac883fd67f8bfa052186926d0ce4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3131582 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Brandon Schade <b.schade@samsung.com>
YuxinHu af57475e 2021-08-27T00:33:39 Improve Error Messaging Improving error messaging for egl validations. Bug: b/186543601 Change-Id: Iec9a8f14998bc105785eca990f6512b72385191a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3124071 Reviewed-by: Ian Elliott <ianelliott@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Geoff Lang 4b5a774e 2020-04-03T14:56:36 GL: Update StateManagerGL binding funcs to use ANGLE_GL_TRY Bug: angleproject:3020 Change-Id: Iff460a1012d06e1c5feff84d91117de87e7c870a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3123167 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Jamie Madill a8f1a916 2021-08-26T17:53:56 GetTexImage: Remove syncState calls & add early error exit. Instead of calling syncState to force the Vulkan staged textures to flush, we ensure the Texture is marked initialized by sending a message up to the Texture when there are no more pending updates. Also adds handling for textures with extra mips. Instead of crashing, we now return an error with a warning. Also adds a test with a texture that has extra (outside the mip chain) defined levels. Also adds a test and handling for empty texture levels. This should lead to more consistent behaviour in the trace test serialization logic, where often the prior logic would behave differently depending on if GetImage was called from MEC or from the serialization code. Also updates the generateMipmap logic to syncState after calling initializeContents so the updates happen in the correct order on Vulkan. Bug: angleproject:5133 Bug: angleproject:6336 Change-Id: Iab1c2a22b9f9435e7f3c0f870c86bbed3460482e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3123168 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Tim Van Patten <timvp@google.com>