src/libANGLE


Log

Author Commit Date CI Message
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>
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>
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>
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>
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>
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>
Cody Northrop 27517801 2021-08-26T15:42:05 Capture/Replay: Set texture buffer offset alignment Set a texture buffer offset alignment value (256) that is divisible by most device's actual GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT. This is the highest and most common recorded value on gpuinfo.org. It is also listed in the spec as the minimum value. Specifically, this allows running the trace on SwiftShader. Test: Fortnite MEC Bug: b/180418810 Bug: angleproject:5658 Change-Id: Ied58000221465b8bdafb189a54d0418e58996ec3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3123956 Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Cody Northrop ef96bde8 2021-08-28T23:59:33 Vulkan: Fix VVL error regarding geometryStreams Addresses new validation error: [ VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-geometryStreams-02324 ] Validation Error: [ VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-geometryStreams-02324 ] Object 0: handle = 0xb400007e8176af60, type = VK_OBJECT_TYPE_DEVICE; | MessageID = 0xf1034461 | pCreateInfos[0].pRasterizationState pNext chain includes VkPipelineRasterizationStateStreamCreateInfoEXT, but geometryStreams feature is not enabled. The Vulkan spec states: VkPhysicalDeviceTransformFeedbackFeaturesEXT::geometryStreams must be enabled (https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-geometryStreams-02324) The validation was added in this commit: https://github.com/KhronosGroup/Vulkan-ValidationLayers/commit/bdaec8454a27e65dd81f46bbfad1889b7a3e34f6 Test: World of Kings MEC Bug: b/198101940 Bug: angleproject:6339 Change-Id: I3cfacc20d231d246500e83451c9ec6b74d9372f2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3127942 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Charlie Lao ab1a5dbe 2021-08-17T15:42:43 Vulkan: Use angle::Format for ImageViewHelper class ImageViewHelper class only needs actualFormatID. Instead of passing vk::Format to ImageViewHelper, this CL passes actualImageFormatID to the ImageViewHelper API to further reduce the exposure to vk::Format where getting actualImageFormatID needs extra information (renderable or not) Bug: b/196456356 Change-Id: I26afc1f37980a3b2419a66510cf720d79ad0a111 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3101928 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 e98539f0 2021-08-17T14:42:26 Vulkan: Add ImageHelper::getIntendedFormatID() This adds helper API to return intendedFormat directly from ImageHelper object instead of vk::Format, to make API symmetrical. It is also necessary. It is also needed in some places where we no longer have access to vk::Format any more due to refactoring. Bug: b/196456356 Change-Id: Ie0502793623138ded28c3f01320c57ffea2d93df Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3101925 Reviewed-by: Ian Elliott <ianelliott@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Gert Wollny bc89eda7 2021-08-26T21:30:41 Capture/Replay: honor base level when serializing textures Bug: angleproject:6331 Change-Id: Ibd1eba995b0aec02854da5c3c16196c6d079e94d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3123407 Commit-Queue: Gert Wollny <gert.wollny@collabora.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tim Van Patten 58bb11ca 2021-04-16T12:28:50 Capture/Replay: Multi-Context Support Add support for capturing and replaying multiple contexts. 1.) Create and initialize the Contexts in the share group during SetupReplay(). 2.) Track the Context the command stream is for, and if the Context ID changes, inject an eglMakeCurrent() call to switch to the new Context. 3.) Intercept eglCreateContext() and eglMakeCurrent() to route to either EGLWindow or WGLWindow, depending on the current platform. Specifically, this enables capturing and replaying Asphalt 9. Bug: angleproject:5878 Change-Id: I5bc9b7ece5388ce405ba3f9e9dc3967e78662000 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2830145 Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Alexey Knyazev 82423ad1 2021-08-27T11:48:22 Cleanup ValidateES2TexImageParametersBase; update tests Non-compressed TexImage entry points consistently reject compressed format enums. They no longer have a special case for four S3TC formats. Expanded coverage of CompressedTextureFormatsTest. Bug: angleproject:5731, angleproject:6280 Change-Id: I058a1e745a0d5257bd5e0333d71b238b0a2e7b96 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3123414 Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org>
Jamie Madill 9a3f60f2 2021-08-26T10:30:23 Capture/Replay: Allow serializing cube map array data. This ASSERT was firing which was preventing several traces from re-tracing. Bug: angleproject:5133 Change-Id: I86d956bf0c95210bef5572a30fb786555d14522f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3123226 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Jamie Madill d72cad5e 2021-08-26T13:40:49 Capture/Replay: Serialize buffer texture buffer IDs. Instead of trying to serialize buffer texture contents, we can serialize the ID of the bound buffer. The buffer contents are already serialized in the buffer manager iteration. This prevents an ASSERT failure in PUBG. Bug: angleproject:6328 Change-Id: I5427df86c7146d27cf10e316db0b1436b6774747 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3123229 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Alexey Knyazev 77151a6c 2021-08-26T19:32:35 Cleanup ValidateES2CopyTexImageParameters; add test Compressed and depth formats are rejected earlier with ValidateCopyTexImageParametersBase. Added a new Texture2DTest.CopyAfterCompressed test to ensure that validation code for non-subImage case does not fail new assertions. Bug: angleproject:5731, chromium:1216276 Change-Id: I11d2ac3389418731b6cc6e2bd5c9655b1590b02d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3122156 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Lubosz Sarnecki 41f7dedd 2021-08-05T16:48:17 Reland "VulkanExternalHelper: Use VK_KHR_image_format_list extension." This reverts commit bd19620fcd599947a2fada3e02061d02d690d9eb. Bug: angleproject:5281, chromium:1233561 Change-Id: I0dc2a142dc7de83c0bdbf2256e9fb372e56d177a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3122124 Commit-Queue: Lubosz Sarnecki <lubosz.sarnecki@collabora.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Gert Wollny b3d062da 2021-08-26T20:41:42 Capture/Replay: Handle glCopyTexture3DANGLE Bug: angleproject:6331 Change-Id: I704a34587600e612dd1d8d16b87225a7c66d4e82 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3122164 Commit-Queue: Gert Wollny <gert.wollny@collabora.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Cody Northrop 5f092f8b 2021-08-17T17:15:59 FrameCapture: Support glProgramBinary This CL allows applications to use glProgramBinary. Normally this is a problem because we need program source in order to recreate shaders in use during mid-execution capture. Use of program binaries means an app can start and render frames without having submitted source for that run. To support this, we will embed program source into ANGLE's binary format. This will allow us to extract it when the app submits the binary. We will only embed this when capture is enabled to prevent increased binary size in the common case. Since this changes ANGLE's binary format, apps will recreate binaries when capture is enabled. Additionally, we can't allow captures to have glProgramBinary calls in the middle of captured frame ranges, so intercept those calls and replace with a full linking sequence. Changes include: - Add new frontend feauture enableProgramBinaryForCapture that allows OES_get_program_binary during capture. - Update ANGLE's binary format to include program source when capture is enabled. - Update maybeOverrideEntryPoint to handle multiple new calls instead of a single call. - Override calls to glProgramBinary that occur mid-capture to instead emit a full GenerateLinkedProgram sequence. - Add checks for created/attached shaders during FrameCapture since they won't be available for programs populated by the app using glProgramBinary. Test: Fortnite MEC Bug: b/180418810 Bug: angleproject:5658 Change-Id: Ib2a0e9e434d3ee0f384d128c48b2a7d4834f5b0f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3105390 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Charlie Lao cf24931a 2021-08-17T10:48:23 Vulkan: Add ImageHelper::getActualFormat() This is preparation for future CLs. In the future vk::Format may not tell you what actual format is. This CL adds a new method of ImageHelper::getActualFormatID() and ImageHelper::getActualFormat() so that we can use these two APIs and avoid using vk::Format, thus reduce reliance on vk::Format. Bug: b/196456356 Change-Id: Ic50e664e033feb5e066f40269c33cffe96024172 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3100319 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Ian Elliott <ianelliott@google.com>
Cody Northrop 9f59cac0 2021-08-17T16:37:03 FrameCapture: Move MEC of program binaries to a helper This creates a new function called GenerateLinkedProgram that will facilitate capture support of glProgramBinary. Note this also moves one line out of the GenerateLinkedProgram path because it modifies state. The new function needs to be run against const state mid-capture in the next CL. Test: Fortnite MEC Bug: b/180418810 Bug: angleproject:5658 Change-Id: I4e3a7f3ff8d31b07bb0ebc220858a66e91e24933 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3105389 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Geoff Lang f3bccd9d 2021-08-26T18:04:13 Revert "GL: Update StateManagerGL binding funcs to use ANGLE_GL_TRY" This reverts commit 8d7f4cc986778bfff0b242dbea6083346da6c54d. Reason for revert: Broke CrOS build. Original change's description: > GL: Update StateManagerGL binding funcs to use ANGLE_GL_TRY > > Bug: angleproject:3020 > Change-Id: If60448f80daaeeb1503b41db8ac309e45923fd13 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2135929 > Commit-Queue: Geoff Lang <geofflang@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> Bug: angleproject:3020 Change-Id: I0930c1bdb5356d533fae563428893aa8a9f91a52 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3123266 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Charlie Lao 24a1650a 2021-08-23T18:48:24 Vulkan: set TextureVk::mImageUsageFlags for extern mem backed texture For external memory backed texture, mImageUseFlags are never set. Not exactly sure what harm will cause, but I am seeing when TextureVk::syncState is called we are incorrectly recreating storage due to we think there is usage flags change. The other fix here is the test VulkanExternalImageTest.ShouldClearOpaqueFdWithSemaphores is not using deviceMemorySize and causing VVL to complain. Bug: b/197578056 Change-Id: Icca89de973ee3cb93b7e0fe8083ae674df81cae8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3115333 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Ian Elliott <ianelliott@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Alexey Knyazev a5e95c07 2021-08-26T02:40:10 Adjust TexStorage2DEXT validation; update tests - Use common texture format support function. - Enforce size restrictions for compressed formats. - Expand CompressedTexture* and WebGLCompatibilityTest.CompressedTexImage* tests. - Adjust GL_DEPTH_COMPONENT16 support condition on ES 2.0. - Adjust GL_DEPTH24_STENCIL8 support condition on ES 2.0. - Adjust GL_RGB10_A2 support condition on ES 2.0; adjust VulkanExternalImageTest.TextureFormatCompatChromium* tests. - Do not use integer formats in TextureRectangleTest.TexStorage2D. Bug: angleproject:5731, angleproject:6230 Change-Id: I2f288f459b511cc004601238df717aa78433be7f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3118553 Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org>
Jamie Madill dd5994df 2021-08-25T18:39:31 Capture/Replay Tests: Fix Renderbuffer readback. Renderbuffer readback would use an unimplemented size function, ending up with a zero sized buffer. Also cleans up some of the code for reading back both Renderbuffers and Textures. One Depth/Stencil test that was crashing due to a recent change to read back depth data is now failing comparison because of missing combined depth/stencil support. Also updates the capture/reply self-test to handle ASAN-only test expectations. Bug: angleproject:4688 Change-Id: Idb6c05d15329f405f44502c2e5282764c7f780fb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3119057 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill c61fd919 2021-08-25T08:29:55 Fix array texture readback with GetTexImage. According to the desktop GL specs, GetTexImage retrieves entire mips of a texture for 2D array and cube array textures. The prior code was only retrieving one layer and didn't have any way to get the layers other than layer zero. Fix this by using similar logic to how we read back 3D textures. Also adds regression tests to GetImageTest. Bug: angleproject:5133 Bug: angleproject:6132 Change-Id: I8b22bc10ac1fdfe6389ac309450b92681f087cda Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3118266 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Tim Van Patten <timvp@google.com>
Geoff Lang 8d7f4cc9 2020-04-03T14:56:36 GL: Update StateManagerGL binding funcs to use ANGLE_GL_TRY Bug: angleproject:3020 Change-Id: If60448f80daaeeb1503b41db8ac309e45923fd13 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2135929 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi 0394fc62 2021-08-25T15:18:44 Vulkan: Fix transform feedback pause on UtilsVk clear Transform feedback was paused after vkCmdBindPipeline, but should be done before as that command is not valid while transform feedback is active. Bug: angleproject:6317 Change-Id: Ifcea8de07e24c71a19a74e738cb700576f7f53cc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3118812 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Ian Elliott <ianelliott@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill 1be6d1d4 2021-08-24T10:03:13 Capture/Replay: Sync textures before serialization. This ensures we get a consistent value for the texture init status and pixel data between when we capture the trace and when we run the replay. Because syncState is normally only called for textures that are currently bound for sampling, and here we are calling syncState when texture are not (and may never be) bound, we have to rely on a few extra checks to ensure we return a correct result. Bug: angleproject:5133 Change-Id: I2ca76743e8a6550a730dc55d935ba69d88679589 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3118265 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 1fc754b0 2021-08-25T08:34:36 GetTexImage: Read back depth from combined depth/stencil. This at least allows ANGLE to verify some of the depth/stencil pixel data, when using trace serialization. The correct behaviour would be to pack depth/stencil the same way as we unpack it. Bug: angleproject:4688 Bug: angleproject:5133 Change-Id: I5fc6649f577c7bd07aafabc9717c8235a5429e10 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3118267 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Tim Van Patten <timvp@google.com>
Alexey Knyazev 47279c72 2021-08-15T23:20:32 Adjust compressed texture validation; add test - Format check happens before target check to accommodate for unknown / disabled format enums. - PVRTC1 and ETC1 enums are not allowed for 2D Array and 3D targets. - PVRTC1 sRGB formats require enabling two extensions. - New noCompressedTexture3D limitation for older Metal versions. The test checks that only the appropriate entry points are affected after enabling compressed texture extensions. Bug: angleproject:5731, angleproject:6280 Change-Id: I4943cd3a82f60f9348215caa8639e0bc3e8b45db Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3094018 Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Cody Northrop 96a48a30 2021-08-18T14:33:41 FrameCapture: Only finish contexts that have been current The finish() was crashing during initial Fortnite debug. Test: Fortnite MEC Bug: b/180418810 Bug: angleproject:5658 Change-Id: If8c7376c8ff3ee82581db40c5611309cf700c00d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3105388 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Cody Northrop 257ef4e2 2021-08-17T16:26:46 FrameCapture: Add more helpful texture errors Rather than asserting, print an error message that provides some helpful details to guide capture triage. Test: Fortnite MEC Bug: b/180418810 Bug: angleproject:5658 Change-Id: I03ee2a12fa1185698650643f8767cd758bd87a4d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3105387 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Cody Northrop 03fdde06 2021-08-17T16:21:07 FrameCapture: Adjust CopyImageSubData target Our PackedEnums don't line up exactly with the texture targets used by glCopyImageSubData. Adjust the CUBE selection to use a face instead. Test: Fortnite MEC Bug: b/180418810 Bug: angleproject:5658 Change-Id: I855f9e68f3b78212ccb03d9e2ffe947084db85b5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3105386 Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Shahbaz Youssefi 210773db 2021-08-05T10:41:59 Translator: Be more explicit about precisions GLSL ES requires that every symbol (variable, block member, function parameter and return value) is appropriately qualified with a precision, either individually or through the global precision specifier. Some tree transformations however produced symbols with EbpUndefined precision. In text GLSL output, these would produce unqualified symbols which was often incorrect. In this change, the transformations are made to produce explicit / more consistent precisions. The validation (that caught these issues) is not included in this change as there are still a few corner cases left to address. Bug: angleproject:4889 Bug: angleproject:6132 Change-Id: Icca8a0a5476f8646226e7243aa8f501f44acc164 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3075127 Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Alexey Knyazev 8c05fd4f 2021-08-21T23:03:16 Add ASTC & PVRTC to GLenumToString Bug: angleproject:4093 Change-Id: Iab19fddd2e0680a39741d2ef0b9003af5a808d49 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3110552 Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Jamie Madill 2f45d93d 2021-08-18T16:58:44 Capture/Replay: Init shader outputs during self-tests. This forces all uninitialized variables to have default values. For instance if the application doesn't initialize the output color, or a varying that's use in the output, this will ensure we don't use any undefined values in the computation. Found when working on a re-trace of T-Rex, which doesn't write to the alpha channel in the final rendering pass. Also fixes undefined values in GLSLTest.InactiveVaryingInVertexActiveInFragment. Bug: angleproject:5133 Change-Id: Ia291338e5adf23dab5263cb2ebe737dc05852d3e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3110225 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Tim Van Patten <timvp@google.com>
Jamie Madill d2d1f41f 2021-08-16T08:05:55 Add EGL extension to create window with a swap interval set. On Vulkan this allows creating a window once without needing to recreate the swapChain after we specify the swap interval. Also adds a simple regression test and EGL enum assertion printing formatting. Bug: angleproject:5133 Change-Id: I72af124cb0e8f7cddfa810988a9862c0f36a0e46 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3097806 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Jamie Madill 0adaabfc 2021-08-18T16:29:12 Ensure RGB10A2 format properly uses 4 pixel bytes. This fixes a problem with capture/replay where using pixelBytes was returning a 3 byte stride for this 4 byte format. Note this format is a bit odd, because it forces the alpha to 1.0, but the format is specified as using 4 byte upload width, with 2 bits unused. Also adds compile and run-time checking to ensure our bits are always multiples of 8. This flushed out an issue with 565 formats which were using an extra 1 bit for alpha. Test: TexureUploadFormatTest Bug: angleproject:5133 Change-Id: Ia41e86a4980fc041bb1a19b548c32329fa486d03 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3104686 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Geoff Lang fc09350a 2021-08-18T12:24:39 GL: Update VertexArrayGL to use ANGLE_GL_TRY. Bug: angleproject:3020 Change-Id: If3409d0d4bc9fdc5c990cece92461e2526c752c9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1809058 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Peng Huang <penghuang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Jamie Madill f6b8db1d 2021-08-18T15:20:10 Capture/Replay: Don't access OOB in TexImage2D. The last row of pixels is treated specially because we don't need to round up to the unpack alignment. This fixes an ASAN error with some 1x1 texture tests with small-sized formats. Test: TextureUploadFormatTest Bug: angleproject:5133 Change-Id: I4c56958b83406aff380bda56b90d3258020a1f99 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3104685 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Gert Wollny e2485d60 2021-08-14T17:40:14 Capture/Replay: Add the layer to the texture data label string Otherwise the output map will seperate the hash from the raw data when multiple layers are written for the same mip-map level. Bug: angleproject:5133 Change-Id: I7636b6dc66f7ec31958e6eb44591c0a9b9280b00 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3093814 Commit-Queue: Gert Wollny <gert.wollny@collabora.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Gregg Tavares 54e31116 2021-08-19T15:02:16 Add delimeter to attribute search Attributes are written in MSL as type nameOfAttrib __unassigned_attribute__ and then at link time a string substitution replaces __unassigned_attribute__ The test had these attributes metal::float4 floatInput __unassigned_attribute__; metal::uint4 uintInput __unassigned_attribute__; metal::int4 intInput __unassigned_attribute__; and was searching for "intInput __unassigned_attribute__" which matching "uintInput __unassigned_attribute__". Adding a space in front of the search string fixes the issue. This fixes this test: WebGL2CompatibilityTest.VertexShaderAttributeTypeMismatch/ES3_Metal Bug: angleproject:5505 Change-Id: Ide07e5120e88927b1fdeb3cc32b456a661092802 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3108339 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Gregg Tavares <gman@chromium.org>
Jamie Madill b2cb9e50 2021-08-19T07:37:28 Capture/Replay: Fix extra frame captured with trigger. A prior CL erroneously removed the -1 from the trigger frame count. Restore this to ensure we capture the right number of frames. Bug: angleproject:5133 Change-Id: Ic24404fbfeb8578badd6204db8316f081eafaa53 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3104693 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 49af677a 2021-08-16T07:59:18 Capture/Replay: Update serialization logic. - Uses more common toString methods instead of custom ones. - Uses enum to string in more places intsead of numeric enums. - Adds missing group scopes in several places. - Skips serializing empty image levels. Bug: angleproject:5133 Change-Id: I2c9523981aba4ec0afb5f0623cb34154db263e6b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3097805 Reviewed-by: Gert Wollny <gert.wollny@collabora.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Alexey Knyazev eb458fbe 2021-08-18T14:17:31 GL: Add emulateImmutableCompressedTexture3D workaround The workaround replaces glTexStorage3D with a series of glCompressedTexImage3D calls. Bug: chromium:1060012 Change-Id: I08e026e68dd697654cc4ab8feb190a35e56ea133 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3103070 Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org>
Jamie Madill b2238a3c 2021-08-16T08:23:00 Capture/Replay: MEC consistency improvements. Fixes a few very small bugs in MEC. The current program wasn't always captured correctly. Also texture bindings were not always left in the right state. Fixes this by tracking the currently bound GL state between the "shared" and "aux" MEC capture functions. Also updates the vertex array capture to detect when to use ES 2.0 semantics. ES 3.1 is left unimplemented as it was before. Bug: angleproject:5133 Change-Id: I5f03b8ffbdccec2664fda4698581b166a36fabdd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3097809 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Jamie Madill 839d5318 2021-08-16T08:29:28 Capture/Replay: Changes to MEC first frame capture. Recent changes made it so it was impossible to trigger MEC *after* the first frame and *before* the second frame. Instead it was only possible to capture *before* the first frame or *after* the second frame. Makes it possible for the retracing script to do identical captures. Also includes a number of refactorings to make it simpler to follow the code, including renaming methods, and removing some extra output files. Bug: angleproject:5133 Change-Id: Ice6a189eb9f4d53e8ee1ba39beb537af2ef5fd9f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3097807 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Yuly Novikov 2967166e 2021-08-04T19:31:54 Reland "Properly report xcb_connect failures in DisplayVkXcb" This is a reland of 81bee2e7f6deeda15691dd0b7fca90626b66bfb8 Changes for the reland: Do not attempt to use Xcb if DISPLAY is not defined - for headless ozone. Original change's description: > Properly report xcb_connect failures in DisplayVkXcb > > Bug: chromium:1223431 > Change-Id: Iaefddbda3fef283eed365fe010ee003a3b3beca8 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3083383 > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Bug: chromium:1223431 Change-Id: I19be7d10cbd3692e1de6458bc0e2db5996a755af Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3099674 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Gert Wollny f2c96887 2021-08-16T15:23:34 Capture/Replay: Pop only after using values it in endGroup When running the replay in valgrind the use of an undefined value in the JsonSerializer::endGroup shows that 'name' value on the stack is handled in an unexpected fashion, i.e the pop seems to invalidate the values that should have already been moved. Using the reference of the top() values and doing pop() only after the new group entry has been created avoids this. Bug: angleproject:6180 Change-Id: I8e5f8dd3d14928d4763faabe236379b40a4f6f4c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3093815 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
Jamie Madill ad286e71 2021-08-17T10:43:47 Capture/Replay: Clean up ResourceTracker access. This reduces the boilerplate needed to tracked genned/deleted resources. Refactoring change only. Bug: angleproject:5133 Change-Id: I81f8877b2c308fe9d4136999f3ca63371a070720 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3100591 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Jamie Madill 9872e5af 2021-08-18T07:56:38 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>
Jamie Madill 7e040640 2021-08-16T08:43:17 libANGLE: Minor cleanups. Removes a couple duplicated cached members in gl::State. Also a few other small refactorings. Bug: angleproject:5133 Change-Id: I0c6cd4c6544ef1690a4ce95d40dac70c688c7092 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3097808 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Brandon Schade cc52e7cd 2021-04-19T21:37:20 Prevent separable programs from relying on attached shaders Previously, several linking functions were reliant on the HasAttachedShaders interface. The information stored there has been moved to ProgramExecutable. Linking information such as uniforms and uniform blocks from attached shaders is now also stored in temporary pending variables inside ProgramExecutable. Bug: angleproject:5506 Test: ProgramPipelineTest31.VaryingLocationMismatch* Test: GeometryShaderTest.RecompileSeparableVSWithVaryings* Test: ProgramBinaryES31Test.SeparableProgramLinkedUniforms* Change-Id: I93591431959c1c4c547ada92ec358369a3417723 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2909760 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Brandon Schade <b.schade@samsung.com>
Jason Macnak 0be285c6 2021-07-20T11:36:22 Vulkan: Flush read RT if color attachment is the read buffer Prior to this change, the following sequence: * eglMakeCurrent(..., draw=surface1, read=surface1, ...); * glClear(...); * eglMakeCurrent(..., draw=surface2, read=surface1, ...); * glBlitFramebuffer(...); * eglMakeCurrent(..., draw=surface1, read=surface1, ...); * glReadPixels(...); would end up with the `vkCmdClearColorImage()` on surface1 occuring after the `vkCmdBlitImage()`. This CL updates flushColorAttachmentUpdates() to flush any staged updates to both the read and draw attachments, since they can be different if different read and draw surfaces are bound. Adds a test which is a small repro of android.opengl.cts.FramebufferTest#testBlitFramebuffer failure. Bug: b/192327017 Test: EGLSurfaceTest.BlitBetweenSurfaces/* Change-Id: Iabad26dfcd8633e9dcfcee2fb16ba352bc3931d5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3078980 Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Gert Wollny 4aedb71f 2021-08-11T17:00:41 Capture/Replay: Force count and length in CaptureShaderSource The problem ist that there is a mix on how the captured shader source is written out, in some cases one string is written, e.g. with the test ZeroShaderLength, and in others case an array if strings is written, a with MixedShaderLengths. Be constistent about it and capture the shader source always as one string and handle it like this, and override the count to be 1 to reflect this and set the length to {-1} to use the new accumulated shader strings automatically. Bug: angleproject:6268 Change-Id: Ide927db1a6e4facdbab4d35c023b9bce4b6c30d8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3087448 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
Jamie Madill a835912f 2021-08-09T13:58:37 Texture: Mark initialized after syncState. This fixes an issue with retracing where textures that are never used or only used once may have different init states on re-tracing. Bug: angleproject:5133 Change-Id: I29fdc477e3522582c8e2eece0b4b86384ecf6d9a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3081762 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Tim Van Patten <timvp@google.com>
Alexey Knyazev 1fb846cb 2021-08-03T01:57:49 Validate texStorage dimensions with compressed formats Bug: angleproject:6230 Change-Id: I501ec1e6974bdc7e6731dcb88045edb0aa22b888 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3067329 Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Kenneth Russell d8cb9967 2021-08-04T18:15:51 In WebGL, constrain base level of compressed textures. Enforce that if a mipmap level > 0 is specified for a compressed texture, that it implies that the size of the base level of the texture is a multiple of the format's block size. Makes the test changes in https://github.com/KhronosGroup/WebGL/pull/3304 largely pass. There are some needed follow-on fixes to that PR, and this CL changes a sub-test result in the existing S3TC and S3TC-sRGB tests which will need to be suppressed Chromium-side first. Bug: angleproject:6245 Change-Id: I7723d7882091b78a353d8d273e80b819dd384021 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3072568 Commit-Queue: Kenneth Russell <kbr@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Tim Van Patten 62cac8b5 2021-08-06T18:24:52 Capture/Replay: Add EGL support to generate_entry_points.py Add EGL support to generate_entry_points.py. This is a pre-requisite to frame capture being able to generate EGL calls, which is required for multi-context support. Bug: angleproject:5878 Bug: angleproject:4035 Change-Id: I3b8e9c91f9e2820b5207fc02d858e8109921f581 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3078993 Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Kenneth Russell ff64d2c7 2021-08-06T21:24:09 Choose direct-to-Metal translator through a feature. Define directMetalGeneration in FeaturesMtl.h. If ANGLE_ENABLE_METAL_SPIRV is defined to 1 (still the default), directMetalGeneration defaults to false. It can be overridden via the standard ANGLE mechanism: ANGLE_FEATURE_OVERRIDES_ENABLED=directMetalGeneration It can also be overridden by instantiating angle_end2end_tests with the directives: WithDirectMetalGeneration(ES2_METAL()) WithDirectMetalGeneration(ES3_METAL()) These directives aren't working properly yet though. The direct-to-Metal compiler is instantiated, but the _DirectMetalGen versions of the tests fail. They pass when switching the Metal backend's default behavior using the above environment variable. This will be debugged in follow-on CLs. Thanks to syoussefi@ for the prototype of this CL: https://chromium-review.googlesource.com/3076129 Bug: angleproject:5505 Change-Id: I188ab89abc75bf89c5ed2d90102af311feaa1960 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3079083 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Kenneth Russell <kbr@chromium.org>
Jeff Vigil 6136620b 2021-03-25T15:43:06 Reland "EGL: GLES: Implement GL_EXT_protected_textures" This is a reland of 6210a9b34a721df2c84cf69170ad9bf7ba40e4aa This removes changes in gl backend. Original change's description: > EGL: GLES: Implement GL_EXT_protected_textures > > Implement EGL_EXT_protected_content Images > Add protected member to Images and Textures > Add error when creating objects if not supported or > does't match native buffer > When creating siblings pass protected state > Add extension caps > Add Validation > Add GetTexParameter and SetTextparameter > Add protected to Texture and state > Expand tests for images and textures > > Test: angle_end2end_test --gtest_filter=EGLProtectedContentTest > > Bug: angleproject:3965 > Change-Id: I35a89b4e80bba6d9b6831c68e71630eef304dacb > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2802852 > Commit-Queue: Mohan Maiya <m.maiya@samsung.com> > Reviewed-by: Geoff Lang <geofflang@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Test: angle_end2end_test --gtest_filter=EGLProtectedContentTest Bug: angleproject:3965 Change-Id: Id36d697c53afc0f0dadf92bda4565f9157f4fc2a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3076825 Commit-Queue: Brandon Schade <b.schade@samsung.com> Reviewed-by: Ian Elliott <ianelliott@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Cody Northrop 0bd5cac2 2021-08-06T17:56:58 Allow BufferSubData with persistently mapped buffers Per the GL_EXT_buffer_storage extension: What commands are affected by the relaxed errors for persistently mapped buffers? RESOLVED: In GL 4.5 the following commands have the relaxed language BufferSubData, ClearBufferSubData, CopyBufferSubData, GetBufferSubData and InvalidateBufferSubData. Of these commands the only ones that apply to ES 3.1 are BufferSubData and CopyBufferSubData. However, if additional extensions add any of the other commands and EXT_buffer_storage is supported, they would have the same behavior in ES. Therefore we need to allow BufferSubData and CopyBufferSubData on persistently mapped buffers. Current we fail these scenarios in validation. This was detected when running Fortnite on Android using the game's GLES backend. Also added two tests: - StorageCopyBufferSubDataMapped to recreate the exact Fortnite scenario using glCopyBufferSubData. - StorageBufferSubDataMapped is a contrived case to cover glBufferSubData Test: BufferStorageTestES3.StorageCopyBufferSubDataMapped/* Test: BufferStorageTestES3.StorageBufferSubDataMapped/* Bug: b/180418810 Bug: angleproject:5658 Change-Id: Ib678e84f367934656ec10f0f4ad0d35ac687f0b0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3078316 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Yuly Novikov 8f214193 2021-08-10T20:40:36 Revert "Properly report xcb_connect failures in DisplayVkXcb" This reverts commit 81bee2e7f6deeda15691dd0b7fca90626b66bfb8. Reason for revert: fails on https://ci.chromium.org/ui/p/chromium/builders/try/linux-ozone-rel/918054/overview Original change's description: > Properly report xcb_connect failures in DisplayVkXcb > > Bug: chromium:1223431 > Change-Id: Iaefddbda3fef283eed365fe010ee003a3b3beca8 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3083383 > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Bug: chromium:1223431 Change-Id: I1da24861375a29f448e61771a609396e777c2e29 No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3087555 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Geoff Lang 0b651e42 2021-07-20T11:48:38 Vulkan/D3D11/Metal: Expose GL_NV_framebuffer_blit GL_NV_framebuffer_blit is equivalent to ES3 blit which these backends support. Bug: chromium:1220246 Change-Id: I6ef0b80f9e9ba7828d6720cdbe19c83c4abdc4cf Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3041878 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Yuly Novikov 81bee2e7 2021-08-04T19:31:54 Properly report xcb_connect failures in DisplayVkXcb Bug: chromium:1223431 Change-Id: Iaefddbda3fef283eed365fe010ee003a3b3beca8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3083383 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Lubosz Sarnecki 97c21277 2021-08-03T15:06:37 FrameCapture: Don't capture default drawbuffers state. When capturing framebuffers during mid-execution-capture the drawbuffers state is now compared with the default one and skipped when equal. This prevents capturing the unavailable glDrawBuffers call when using OES_framebuffer_object on GLES 1 contexts. Bug: angleproject:6181 Change-Id: Id2076223067dc5f89df88fe6a3a48b09fa9a3f5d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3068957 Commit-Queue: Lubosz Sarnecki <lubosz.sarnecki@collabora.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Alexey Knyazev 856228b0 2021-08-05T23:10:25 D3D9: Expose EXT_sRGB and EXT_texture_compression_s3tc_srgb sRGB reads are supported on D3D9 via SetSamplerState. sRGB writes are supported on D3D9 via SetRenderState. Bug: angleproject:6258 Change-Id: I841c25ce66486e93ae2122b370e910f383fed774 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3076359 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Lubosz Sarnecki 595ce2b8 2021-08-03T15:06:14 FrameCapture: Use OES suffixes for framebuffer functions on ES1. Functions using the GL_OES_framebuffer_object extension on GLES 1.1 require the OES suffix or will otherwise crash on certain native OpenGL drivers. The framebuffer capture functions are stored in a struct. This patch makes replay of Sonic The Hedgehog possible on Pixel 4 XL native GL. Bug: angleproject:6181 Change-Id: I689267b024824818bfcf28e652b835e075208415 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3068956 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Lubosz Sarnecki <lubosz.sarnecki@collabora.com>
Yuly Novikov b1b760e7 2021-08-09T13:37:10 Ignore VUID-vkCmdClearAttachments-baseArrayLayer-00018 New message added in https://github.com/KhronosGroup/Vulkan-ValidationLayers/pull/3133 Blocks vulkan-deps rolls. Bug: angleproject:6262 Change-Id: Iaaafe7539092cbe7eadd01e47b67071d60779929 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3081376 Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 23a50a7c 2021-08-06T18:15:30 Serialization: Fix groups & ensure compile resolution. This change has two fixes: 1) Some texture groups had multiple duplicate keys. Namely image descs and image contents. 2) Programs and Shaders would serialize non-deterministically because we would not ensure the compile/link was resolved. Fix this by explicitly ensuring the shaders/programs are done. Bug: angleproject:5133 Change-Id: I2f7f7768c76f90275f81e032ac08e3f2bc828ea2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3076134 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Tim Van Patten 06b19ed8 2021-08-06T17:02:36 Framecapture: Update file naming Update the file naming to add "shared" and remove the unnecessary frame numbering: angle.angledata.gz angle_capture_context1.cpp angle_capture_context1.h angle_capture_context1_files.txt angle_capture_context1_frame001.cpp angle_capture_shared.cpp angle_capture_shared.h Bug: angleproject:6256 Change-Id: I6454a3dc412896557f29faee1269dfa55146d43b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3078908 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Tim Van Patten <timvp@google.com>
Kenneth Russell 1654537d 2021-08-06T17:49:52 Fix default and driver uniforms' binding indices. These abstractions were introduced in the SymbolTable during upstreaming of the direct-to-Metal compiler and were accidentally swapped, leading to widespread test failures. Fix the comment reference in ContextMtl's DriverUniforms struct. Add missing emulatedInstance field, and add a TODO about its missing support in direct-to-Metal translator. Define it in SPIR-V Metal translator; the driver uniforms for the two must match. Bug: angleproject:6259 Change-Id: I0330ab4efca5b64a749b9cca90564fdbc84d7a80 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3078998 Commit-Queue: Kenneth Russell <kbr@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi e70a1444 2021-08-05T12:49:21 Vulkan: Fix draw FBO1 followed by resolve FBO2 When syncing the framebuffer for blit/resolve, the render pass was not closed. This would be done later when necessary, except that onFramebufferChange called from FramebufferVk::syncState attempted to adjust the render area of the render pass (as it considered it open). If FBO2 is larger than FBO1, this would cause the render area of the previous render pass to become larger than the framebuffer size. This change makes sure that onFramebufferChange considers the render pass closed no matter what. Test is based on patch from steven@valvesoftware.com Bug: angleproject:6244 Change-Id: Iaec04232cfd2af04ba2564fd2de1dd5f08a40df6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3076620 Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Brandon Schade c664601d 2021-04-26T17:08:06 Allow drawing if a fragment shader isn't present According to the OpenGL ES 3.1 spec: 7.3 PROGRAM OBJECTS If there is no active program for the vertex or fragment shader stages, the results of vertex and fragment shader execution will respectively be undefined. If there isn't an active program for only one of these shader stages, the results of the other shader stage are still defined. To handle this, we no longer no-op the draw call if one of these is missing. We only no-op the draw if there's no vs. This allows for transform feedback to be captured when there's only a geometry and vertex shader. Tests: KHR-GLES32.core.geometry_shader.api.program_pipeline_vs_gs_capture Tests: KHR-GLES32.core.separable_programs_tf.geometry_active Tests: ProgramPipelineTest31.PipelineWithoutVertexShader* Tests: ProgramPipelineTest31.PipelineWithoutShaders* Bug: angleproject:5579 Change-Id: If9849cc398c307232435b167ab12431fa4258201 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2906723 Commit-Queue: Brandon Schade <b.schade@samsung.com> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi cf090996 2021-08-05T16:20:39 Vulkan: Call onFramebufferChange from a single place When sRGB control mode was dirty, onFramebufferChange was called which may not have been necessary if the actualy state hadn't changed. This removes a call to onFramebufferChange() in this path, and leaves it to be naturally called if the framebuffer desc actually changes. Bug: angleproject:5075 Change-Id: I177572a3cb819d7e1ecd589f46e03da4b967529e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3076619 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao 934ffac6 2021-08-05T15:43:32 Vulkan: Propagate BufferData changes to shader storage buffer binding This CL adds context to the observer list of shader storage buffer. When BufferData is called on the current bound shader storage buffer, context gets notified and DIRTY_BIT_SHADER_STORAGE_BUFFER_BINDING gets set. Bug: b/195678877 Change-Id: Id8a5266942e33f0a834d7c57fdde75f57e93d347 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3076177 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Kenneth Russell 07c21bcc 2021-08-06T01:54:58 Add run-time switch for direct-to-Metal compiler. Setting the environment variable: ANGLE_USE_MSL_COMPILER=1 will switch from the SPIR-V Metal to the direct-to-Metal compiler. This makes it easier to diagnose regressions as the direct-to-Metal compiler is upstreamed. Bug: angleproject:5505 Change-Id: I78593e8ddc4e483bb0795960c432bcfa17e0a5b1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3076332 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Kenneth Russell <kbr@chromium.org>
Alexey Knyazev 8387f10f 2021-08-06T21:46:02 D3D9: Mark destination images dirty after CPU-copy path Fixes WebGL CTS failures for L and LA formats in: conformance/textures/image_bitmap_from_canvas conformance/textures/webgl_canvas Bug: angleproject:2192 Change-Id: If3a9bd81298c76320ed029617fd4965efe4e8ef0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3076720 Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
SeongHwan Park 16a61bbb 2021-08-05T23:06:22 D3D: Fix not notifying RenderTarget release in TextureD3D This could lead to use-after-free for the RenderTarget object. Bug: chromium:1234829 Change-Id: I73d4547b8f09f2f2cf3f7f8394f7f573fe5a4ef5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3063858 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Charlie Lao e28fb127 2021-08-05T14:32:16 Vulkan: Propagate BufferData changes to atomic counter binding This CL adds context to the observer list of atomic counter buffer so that it gets notified when BufferData is called on atomic counter buffer and set dirty bit accordingly. Bug: b/195678877 Change-Id: I924cf12ef54b5986d5c56b9e3b71584039490206 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3076170 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Tim Van Patten 3fd572c4 2021-08-04T12:45:09 FrameCapture: Fix setCaptureActive() and MEC timing Frame capture is currently off by one when calling setCaptureActive() and collecting the mid-execution capture state. The MEC state is collected at frame N, but setCaptureActive() isn't called until frame N+1, meaning all of the maybeCapturePreCallUpdates() and maybeCapturePostCallUpdates() calls are not tracking resources correctly for frame N. This CL fixes when setCaptureActive() is called relative to when setupSharedAndAuxReplay() is called, so the trace is active for the first frame and all of the resources are correctly tracked. Additionally, setCaptureActive() during the FrameCaptureShared() ctor if frame capture starts with the first frame. Bug: angleproject:6225 Change-Id: Id07e78b2da9c9d33779e20ab6a42f63cd103a6a6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3071940 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Tim Van Patten <timvp@google.com>
Cody Northrop f9c287f0 2021-08-04T17:24:02 Capture/Replay: Fix reset for immutable textures Before this CL, we were including TexStorage in the calls to reset an immutable texture. This throws an error in GL, as you can only call TexStorage once on a texture. Example from ResetReplay(): glBindTexture(GL_TEXTURE_2D, gTextureMap[52]); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, 9729); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_R, 0); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_G, 0); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_B, 0); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_A, 6403); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 0); glTexStorage2D(GL_TEXTURE_2D, 1, GL_R8, 256, 512); // <== ERROR glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 256, 512, GL_RED, GL_UNSIGNED_BYTE, ...); To fix this, move TexStorage into the calls used to regen the texture rather than restore its contents. This means ResetReplay will only call TexStorage again if the texture was actually deleted. Example new regen sequence, if the texture had been deleted: const GLuint deleteTexturesPacked[] = { gTextureMap[52] }; glDeleteTextures(1, deleteTexturesPacked); glGenTextures(1, reinterpret_cast<GLuint *>(gReadBuffer)); UpdateTextureID(52, 0); glBindTexture(GL_TEXTURE_2D, gTextureMap[52]); glTexStorage2D(GL_TEXTURE_2D, 1, GL_R8, 256, 512); Also rename texCalls to texSetupCalls to more easily distinguish from texGenCalls, now that they intermingle. Test: Final Fantasy MEC Bug: b/195607411 Bug: angleproject:6246 Change-Id: I37daaeb6ea4337969cb241a20256fec07dce514e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3073379 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Shahbaz Youssefi 091fb9b9 2021-07-23T10:44:35 Reland "Reland "GL: Fix GPU detection"" This is a reland of a8f9b79a14b923e925d4aecb5eb5d973f92ae4e1 It was assumed that getting the GPU info from the system will always yield a valid Device ID, but this seems to be incorrect on some platforms (e.g. Apple M1). Reland reverts to the old logic of silently accepting 0 as Device ID. Original change's description: > Reland "GL: Fix GPU detection" > > This is a reland of 30dea869a7dc939f94048de23d70705247905c51 > > Original change's description: > > GL: Fix GPU detection > > > > Always use GL_VENDOR to determine vendor. On multi-GPU systems, this > > ensures that the correct GPU is used to determine workarounds. > > GetSystemInfo is still broken in that it assumes the discrete GPU to be > > active, but with this change it will only affect the test infrastructure > > (and not users). > > > > Bug: chromium:1187475 > > Bug: angleproject:6174 > > Change-Id: I4dffadf0e28c73e01d6b4bf49ab708c0714cdc7c > > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3049350 > > Reviewed-by: Kenneth Russell <kbr@chromium.org> > > Reviewed-by: Jamie Madill <jmadill@chromium.org> > > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> > > Bug: chromium:1187475 > Bug: angleproject:6174 > Change-Id: Id0e5bae23f60e87d3de384e84dc5b8059013926d > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3067801 > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Bug: chromium:1187475 Bug: angleproject:6174 Change-Id: Ie13854da314d8963c33f61f1fd1628a674fae434 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3067768 Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 09d5047b 2021-08-03T01:31:03 GL: Remove the rewriteVectorScalarArithmetic workaround This workaround was implemented for a bug in Nvidia driver 387 which is end-of-life. More recent driver branches (390 and 4XX) are fixed, and so this workaround is no longer required. The implementation of the workaround itself could introduce bugs. Bug: chromium:772651 Bug: chromium:1201084 Change-Id: I3db179eb90d9124235bdad2daacc712302906d8e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3067952 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org>
Shahbaz Youssefi 10d50f64 2021-08-04T14:17:17 Revert "Reland "GL: Fix GPU detection"" This reverts commit a8f9b79a14b923e925d4aecb5eb5d973f92ae4e1. Reason for revert: assertion failure on mac ARM bots: anglebug.com/6242 Original change's description: > Reland "GL: Fix GPU detection" > > This is a reland of 30dea869a7dc939f94048de23d70705247905c51 > > Original change's description: > > GL: Fix GPU detection > > > > Always use GL_VENDOR to determine vendor. On multi-GPU systems, this > > ensures that the correct GPU is used to determine workarounds. > > GetSystemInfo is still broken in that it assumes the discrete GPU to be > > active, but with this change it will only affect the test infrastructure > > (and not users). > > > > Bug: chromium:1187475 > > Bug: angleproject:6174 > > Change-Id: I4dffadf0e28c73e01d6b4bf49ab708c0714cdc7c > > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3049350 > > Reviewed-by: Kenneth Russell <kbr@chromium.org> > > Reviewed-by: Jamie Madill <jmadill@chromium.org> > > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> > > Bug: chromium:1187475 > Bug: angleproject:6174 > Change-Id: Id0e5bae23f60e87d3de384e84dc5b8059013926d > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3067801 > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Bug: chromium:1187475 Bug: angleproject:6174 Change-Id: Ice7a1246cb7ad0c257e685b1da4424aba8eaf406 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3067767 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
SeongHwan Park 215d00b1 2021-08-03T23:34:02 D3D11: Add validation for storages size in updateBufferStorage The source/dest BufferStorage used by the updateBufferStorage may have a raw buffer ptr value of null. Add size validation to prevent null crashes. Bug: angleproject:6235 Change-Id: I57ed1ae0e558bd2f61273c64ed067958a1603425 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3069000 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Brandon Schade 217acac2 2021-07-21T12:42:56 Vulkan: Add support for EXT_primitive_bounding_box 1. Added support for EXT_primitive_bounding_box extension 2. Renamed shader variable gl_BoundingBoxEXT[] to ANGLEBoundingBox[] Bug: angleproject:3576 Test: dEQP-GLES31.functional.primitive_bounding_box.* Change-Id: I15fa9af50c6fd8e86d225670ddd8eb39f6e65d35 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3053618 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill 35bdaf8d 2021-08-03T08:12:26 Capture/Replay: Minor cleanups. Removes a duplicate assignment to the enabled variable. In the cpp it's set to true, and in the header it was false. Also updates a few variable names to be consistent with the group. Bug: angleproject:5133 Change-Id: I3fb00ecc474191bea7c3a650ce23805b6f02d667 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3066007 Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Cody Northrop 5bbaa2c5 2021-08-02T15:50:11 Capture/Replay: Track arrayed uniform locations Arrayed uniform values consume multiple locations. Until now we've only tracked the starting location in our lookup table. This breaks down when applications update uniforms in the middle of an array. We don't have a location to provide. We need to start tracking a location per entry. To support this, pass in the uniform count to UpdateUniformLocation and track a location for each array entry. Do it with an overload to preserve functionality with existing traces. Test: PUBG Mobile MEC Bug: b/180418573 Bug: angleproject:6087 Bug: angleproject:6234 Change-Id: I74fbe201cb37273d1a5f361ef0c951e00ca89a88 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3068199 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Shahbaz Youssefi a8f9b79a 2021-07-23T10:44:35 Reland "GL: Fix GPU detection" This is a reland of 30dea869a7dc939f94048de23d70705247905c51 Original change's description: > GL: Fix GPU detection > > Always use GL_VENDOR to determine vendor. On multi-GPU systems, this > ensures that the correct GPU is used to determine workarounds. > GetSystemInfo is still broken in that it assumes the discrete GPU to be > active, but with this change it will only affect the test infrastructure > (and not users). > > Bug: chromium:1187475 > Bug: angleproject:6174 > Change-Id: I4dffadf0e28c73e01d6b4bf49ab708c0714cdc7c > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3049350 > Reviewed-by: Kenneth Russell <kbr@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Bug: chromium:1187475 Bug: angleproject:6174 Change-Id: Id0e5bae23f60e87d3de384e84dc5b8059013926d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3067801 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill 1f0e2916 2021-08-03T13:42:28 Revert "GL: Fix GPU detection" This reverts commit 30dea869a7dc939f94048de23d70705247905c51. Reason for revert: Breaking roll into Chrome, see bug. Original change's description: > GL: Fix GPU detection > > Always use GL_VENDOR to determine vendor. On multi-GPU systems, this > ensures that the correct GPU is used to determine workarounds. > GetSystemInfo is still broken in that it assumes the discrete GPU to be > active, but with this change it will only affect the test infrastructure > (and not users). > > Bug: chromium:1187475 > Bug: angleproject:6174 > Change-Id: I4dffadf0e28c73e01d6b4bf49ab708c0714cdc7c > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3049350 > Reviewed-by: Kenneth Russell <kbr@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Bug: chromium:1187475 Bug: angleproject:6174 Change-Id: I815c456b0e9775115ae6d2577b40399818b5bff5 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3067800 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill ac5bcdb3 2021-08-02T18:04:49 Vulkan: Use custom volk init function. This should ensure we're using ANGLE's version of the loader. Bug: chromium:1235314 Change-Id: Ia7318a922e192ce669a8cece070ab518ea421fd5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3067511 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Lubosz Sarnecki 262dc97c 2021-07-27T11:13:59 FrameCapture: Capture the EGL color space. Add a SurfaceParams struct containing extents and color space so a single map can be used for all draw surface parameters. Persist the color space in the trace's header. Bug: angleproject:5857 Change-Id: I327da8c8870f2d76d057954af57d977a10ebb59f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3056371 Commit-Queue: Lubosz Sarnecki <lubosz.sarnecki@collabora.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>