src


Log

Author Commit Date CI Message
Shahbaz Youssefi f0ea83a4 2019-06-26T10:17:26 Vulkan: Initial support for ES3.1 Bug: angleproject:3520 Bug: angleproject:3521 Change-Id: I49d67cae0bba3e147c7a83c10e09fe1ee5ff0824 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1678400 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Chris Dalton a9dfb3ba 2019-06-26T18:36:10 Allow "GL_INVERT" nvpr fill mode to pass validation Bug: angleproject:3617 Bug: skia:9214 Change-Id: I11f4e845095cc1ebcbc2717682e945bcf2bb67e3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1679631 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Yuly Novikov f857b501 2019-06-26T20:15:46 Skip end2end tests failing on Intel Ubuntu 19.04 Mesa 19.0.2 Failing: MaskedScissoredClearTest.Test/ES2_OpenGL_clear_cd MaskedScissoredClearTest.Test/ES2_OpenGL_clear_cd_mask_c MaskedScissoredClearTest.Test/ES2_OpenGL_clear_cds MaskedScissoredClearTest.Test/ES2_OpenGL_clear_cds_mask_c MaskedScissoredClearTest.Test/ES2_OpenGL_clear_cds_mask_cs MaskedScissoredClearTest.Test/ES2_OpenGL_clear_cds_mask_s MaskedScissoredClearTest.Test/ES2_OpenGL_clear_d MaskedScissoredClearTest.Test/ES2_OpenGL_clear_ds MaskedScissoredClearTest.Test/ES2_OpenGL_clear_ds_mask_s MaskedScissoredClearTest.Test/ES3_OpenGL_clear_cd MaskedScissoredClearTest.Test/ES3_OpenGL_clear_cd_mask_c MaskedScissoredClearTest.Test/ES3_OpenGL_clear_cds MaskedScissoredClearTest.Test/ES3_OpenGL_clear_cds_mask_c MaskedScissoredClearTest.Test/ES3_OpenGL_clear_cds_mask_cs MaskedScissoredClearTest.Test/ES3_OpenGL_clear_cds_mask_s MaskedScissoredClearTest.Test/ES3_OpenGL_clear_d MaskedScissoredClearTest.Test/ES3_OpenGL_clear_ds MaskedScissoredClearTest.Test/ES3_OpenGL_clear_ds_mask_s BlitFramebufferTest.MultisampleDepthClear/ES3_OpenGL DrawBuffersTest.FirstHalfNULL/ES2_Vulkan DrawBuffersTest.Gaps/ES2_Vulkan WebGLCompatibilityTest.DrawBuffers/ES2_Vulkan Crashing: Texture3DTestES3.DrawWithLevelsOutsideRangeWithInconsistentDimensions/ES3_OpenGL Bug: angleproject:2782, angleproject:3614, angleproject:3616 Change-Id: Ib9bc72d8fd050ba1db1269d5fb3b38e80636211e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1679630 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Jamie Madill d43eee64 2019-06-14T11:12:51 Vulkan: Increase size of driver uniforms buffer. This should prevent applications that use a lot of updates from getting bottlenecked on buffer and descriptor set updates. Bug: angleproject:3504 Change-Id: I8fc88b5f13858b8858d88f7e6f43af022c3f6a75 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1647030 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 1042250f 2019-06-25T17:06:46 Allow wildcards freely in deqp expectations files Bug: angleproject:3520 Change-Id: I1f34717e6efaf4a6371c345d892922e598e871bc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1676552 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill c773ab98 2019-06-25T17:11:58 Vulkan: Recycle dynamic buffer storage. This adds a free list to the dynamic buffer storage. Buffers are added to the free list when the retained buffers are released. They are taken from the free list when we allocate a new buffer. We only allocate a new buffer in the ring when we run out of free buffers. This reduces the amount of time we spend in allocation for frequent updates. Now that we're recycling buffers inside of DynamicBuffer we also need to be a bit more careful about when we allow ourselves to reuse them. If they're still in use by the GPU we should not try to modify them. Bug: angleproject:3082 Change-Id: Ibee5a7e2fe4a17f4a2f7af6bc6bcce54bdc413c2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1646548 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tobin Ehlis <tobine@google.com>
Tim Van Patten cc82c3f0 2019-06-21T16:04:24 Vulkan: Enable VertexAttributeTest* for ES3_Vulkan VAO support is present, so this is just enabling the necessary testing. The tests being skipped are being worked on with issue 3193, which is adding support for integer values. Bug: angleproject:3207 Test: VertexAttributeTest end2end tests Change-Id: Ic0bbcc0e05673aece203e93d8765ac8e90dc6a59 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1672445 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Tim Van Patten <timvp@google.com>
Jamie Madill 7f2520f1 2019-06-26T11:18:33 Vulkan: Refactor DynamicBuffer::init. This will allow us to more easily create a white box test that sets a very small initial size for a dynamic buffer. Bug: angleproject:3082 Change-Id: Ic02bbee83ee8e0f4bfe182e9448c2ce60dea66d5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1667645 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tobin Ehlis <tobine@google.com>
Shahbaz Youssefi 8929b9c5 2019-06-18T16:21:38 Vulkan: Output buffer memory barrier in graph dump Bug: angleproject:3205 Change-Id: Id8c1de49d2201ea331e5f5223c88144db5fadbb3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1665354 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Anders Leino 1245f078 2019-06-25T13:51:29 Use D3D11 GetDimensions driver workaround for dynamic images Some NVIDIA D3D11 drivers are buggy and interprets the level passed to GetDimensions as being relative to 0, rather than the SRV's MostDetailedMip. This affects the implementation of the imageSize function in the D3D11 backend. Bug: angleproject:3100 Change-Id: I1e48f5df5e40caf49a4d07662aec587e98cf8388 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1677206 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi 615ae1a7 2019-06-21T12:10:14 Vulkan: Improve copy buffer self-dependency The check in addReadDependency to avoid setting self-dependencies was causing the barrier set in `copySubData` to be potentially set earlier than the buffer's previous usage. This change allows buffer self-dependencies to be handled especially. Bug: angleproject:3194 Change-Id: I08f2c39f420f020ad5faa9735193e6b7142fa756 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1670952 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Ian Elliott 6d58266e 2019-06-25T09:34:46 Vulkan: Update deqp GLES 3.0 texture expectations Sub-divide one of the big SKIP lines into more-fine-grain SKIP and FAIL lines, based on current top-of-tree status. Bug: angleproject:3190 Change-Id: I50ac559a5b44c06b8e525d10efe3ff1b24350d6d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1676406 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Ian Elliott <ianelliott@google.com>
Geoff Lang a9bbf6df 2019-06-25T10:58:45 Fix warnings in standalone linux build. BUG=angleproject:3559 Change-Id: Ib57b40d6f6b488549c5746a4e2d40e6fba6bcd4f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1676306 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Shahbaz Youssefi 0fd917a2 2019-06-23T00:50:44 Vulkan: Remove unnecessary same-layout transitions Previously, only read-only layouts skipped same-layout transition. This is extended to color attachment and depth/stencil attachment layouts as well. On Nvidia+Linux, this does reduce the number of barriers in the Draw* benchmarks, though there's no visible CPU-side performance difference. GPU time is not measured in these tests, but it's possible that the driver already skips such transitions (i.e. this only saves us from recording an ineffective transition). Additionally, transfer dst and shader write same-layout transitions are turned into an execution barrier instead of a memory barrier to avoid an unnecessary flush. Currently, this particularly affects texture upload, and shows a 10% improvement in TextureUploadSubImageBenchmark. Note that this optimization is temporarily disabled due to a bug in the windows AMD driver. Bug: angleproject:3347 Change-Id: I7dc9d0b5dd2ad87ec19ae13277b330438038519f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1659149 Reviewed-by: Tobin Ehlis <tobine@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
shrekshao b937093e 2019-06-21T11:02:17 HLSL tests with regex HLSL adds a unique id suffix to user defined variable and these numbers are currently hardcoded in tests. It could easily fail if new tokens are added to angle builtin variables. Introduce C++11 regex feature into the foundInHLSLCode to avoid over strict tests. Bug: angleproject:3551 Change-Id: Ia3052afec667a7ac11198be31b5c1d03c856a723 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1670581 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shrek Shao <shrekshao@google.com>
Geoff Lang 5ff8cae9 2019-06-21T11:09:25 GL/D3D: Use texture uploads instead of clearing for robust init. Chrome uses regular texture uploads on all platforms except OpenGL on Mac to do robust resource init for textures because multiple bugs have been observed with texture corruption. BUG=883276 BUG=882580 BUG=941620 Change-Id: I5fcd6862147822a08c7533e6a6a9277223034ebd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1669104 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang 4c0a2361 2019-06-25T10:56:29 Update ValidateSamplerParameterBase to use const parameters. ValidateSamplerParameterBase is called with both const and non-const parameter pointers which caused our explicit template instantiations to not cover all cases resulting in link errors. Force the parameters to always be const so that our instantiations cover everything. BUG=angleproject:3555 Change-Id: Ibf92572ba80a689c75dcdc70e5153d9941da76f3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1676305 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Qin Jiajia 74e98f6c 2019-06-19T17:09:56 Use highestUsed() instead of size() Bug: angleproject:3548 Change-Id: Idd273cdfff5f175399dcc46bd40db52d6f4163b0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1666909 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jiajia Qin <jiajia.qin@intel.com>
Qin Jiajia 3b225597 2019-06-17T14:18:06 Fix the DispatchCompute error The error happens when a RWTexture is used in shader. However, there is no resource binding to it. We should clear the corresponding UAV in case the previous view type is a bufer not a texture. Meanwhile, this patch removes clearSRVs/clearUAVs since we use unsetConflictingSRVs/unsetConflictingUAVs to do the similar thing. Bug: angleproject:3512, angleproject:3548 Change-Id: I01752bb9bc6aca5b767599639c4dc613b4e2e2d2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1662017 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jiajia Qin <jiajia.qin@intel.com>
Jamie Madill dfd76005 2019-06-14T11:15:52 Vulkan: Don't update pipeline when only textures change. We could expand this functionality in the future to only update the pipeline when a signficiant bit of pipeline state changes. For now this is mostly a proof of concept. Significantly improves performance in the textures microbenchmark. Bug: angleproject:3117 Change-Id: I3957dd2f08d7d89694f94ddbe45eeeeb620bac0a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1650790 Reviewed-by: Tobin Ehlis <tobine@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
James Dong 87748543 2019-06-18T18:45:42 GL/Vulkan: handle depth texture discrepancy In GLES 3.0, depth textures where changed to behave like RED textures, but in GLES 2.0 with ARB/OES_depth_texture, they were treated as luminance textures. This change produces the expected behavior on GLES 2.0 for the GL backend and on GLES 3.0 for the Vulkan backend. Bug: angleproject:3540 Change-Id: Iad6b4e03cf947b27eb97dbb10419bc8bcdb11024 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1666363 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: James Dong <dongja@google.com>
Geoff Lang 647f2000 2019-06-19T16:18:28 Limit max texture size and max MSAA samples on Android. Android devices will often fail to allocate textures this large and it is prefereable to return an error from ANGLE instead of losing the context due to an out of memory error. This mirrors the limits Chrome applies with the max_texture_size_limit_4096 and max_msaa_sample_count_4 workarounds that are broadly applied to Android. BUG=882580 Change-Id: I63890baa8712f13b37c607fa475432e67e9384a4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1351357 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Geoff Lang bce4b9f8 2019-06-19T16:20:09 Always scalarize mat and vec constructor arguments. This workaround is always enabled in Chrome, do the same in ANGLE. BUG=882580 Change-Id: I2c01f34a589b07bd0035d7408be884f7a51b1706 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1666699 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Tobin Ehlis 762f180a 2019-06-20T16:12:38 Print perf results to stdout on Android Bug: chromium:977330 Change-Id: I25b2ac11b8ee9b5c084bd828a4d0ddf2b8c1b3eb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1670092 Commit-Queue: Tobin Ehlis <tobine@google.com> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi 371d95b8 2019-06-18T15:39:20 Vulkan: Handle 0-sized viewports Issue exposed by a transform feedback test. Since we already create a scissor to match the viewport (be it 0-sized or not), we can create the Vulkan viewport with a small width/height if they are 0, as that's not allowed by Vulkan. Bug: angleproject:3205 Change-Id: Ib23d8b9f5e84447be2c4b7e8aff805e7d9e57323 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1665352 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 067687f4 2019-05-29T12:48:49 Removal global locks from GL entry points. Always lock in EGL. The ANGLE Vulkan backend is now thread safe for non-share group contexts. This means that a global GL lock only adds overhead for most use cases. Remove the angle_force_thread_safety gn argument. BUG=angleproject:2464 Change-Id: Ic6ba89e18b46e5dd72aa83d0f409097441fcca3a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1635749 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Tobin Ehlis <tobine@google.com>
Shahbaz Youssefi 9d275db4 2019-06-18T15:37:22 Vulkan: Add vkCmdFillBuffer support Implemented as part of an experiment. Allows easier buffer-related testing by providing a quick way of filling the buffer with dummy data. Bug: angleproject:3205 Change-Id: Ice8cfd0c2566c91a5fb10aaea57985d671d0e7b7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1665351 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tobin Ehlis <tobine@google.com>
Courtney Goeltzenleuchter b867bc6f 2019-06-19T12:11:13 Vulkan: Fix dirty element array buffer updates. The issue occurs that binds the same buffer and calls glDrawElements with the same indices. The offset has been reset in the VertexArrayVk::syncState(), but it doesn't check the actual value in the ContextVk::setupIndexedDraw(). Also corrected case where update via BufferSubData wasn't being sent to the HW. Bug: angleproject:3362 Change-Id: I0f7d2fc162bc8f1c36cb09ba689fd27b482b9035 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1666345 Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
James Dong 661ed419 2019-06-20T11:11:41 Debug: suppress INFO level messages by default They can be re-enabled with the angle_enable_trace option. Prevents validation errors from being output in NoFixture tests, as the default platform methods aren't overridden. Bug: angleproject:3525 Change-Id: I77342230b6c7cd167cfc3169f09d4e74b4579244 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1669848 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Michael Spang cd946a03 2019-06-10T18:11:57 Vulkan: Fix out of bounds access of pWaitDstStageMask Since a6242e4d4 ("Vulkan: Support submitting multiple semaphores"), we can submit up to 2 semaphores at a time, but pWaitDstStageMask is still a single value. Change it to an array of two elements to prevent an out of bounds access. Bug: angleproject:3289 Change-Id: I5147802ce350af7b78dbf54cfa4a9519dd495f01 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1666347 Commit-Queue: Michael Spang <spang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Tim Van Patten 9420fa06 2019-06-07T17:09:22 Vulkan: Implement copyBufferSubData Implement BufferVk::copySubData(). Bug: angleproject:3194 Test: dEQP-GLES3.functional.buffer.copy.* Test: dEQP-GLES3.functional.negative_api.buffer.copy_buffer_sub_data Test: angle_end2end_tests BufferDataTestES3 Change-Id: I220cd490eb1eb799604e217b3e377af3fd431d97 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1648669 Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill d5cef305 2019-06-19T14:21:33 Vulkan: Add more trace events. This captures a bit more information about where the call time goes during a flush. It can show at least on desktop NVIDIA that we spend a fair amount of time in vkQueuePresentKHR. Bug: angleproject:3117 Change-Id: I2d0195b9338bcac80e8dd8cfb550402271f286f9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1650787 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill 44168468 2019-06-20T09:50:23 Vulkan: Sync image in TextureVk::syncState. We can use the DIRTY_BIT_IMPLEMENTATION internal dirty bit in the gl::Texture class to force calls to ContextVk::syncState. In syncState we can ensure we call ensureImageInitialized before we get to the ContextVk. This in turn means we can remove some of the command graph breaks from TextureVk. We need to make sure the dirty bits are propagated to EGL Image siblings with this method. This fixes a potential implementation issue with EGL images with the GL back-end. Also makes a state change test a little better by removing some of the VAO and program init calls before the draw. Improves perf on the texture change microbenchmark by 12.5%. Bug: angleproject:3539 Bug: angleproject:3117 Change-Id: I2b5481690801fa98f859a6c02e3f4b974590cd3d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1663839 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill 3ea463bf 2019-06-19T14:21:33 Move event tracer back into common. Requires that we update the TRACE_EVENT macros to accept a platform as an argument. The refactor isn't complete. In order to finish we'd need to ensure we have the Display's PlatformMethods available at all sites. Unblocks adding trace events directly in the perf tests. Bug: angleproject:1892 Bug: angleproject:3117 Change-Id: Iee0ca086ccfe23acab3fc186fb042f018711a94c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1664794 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi c5c937e1 2019-06-19T16:20:57 Vulkan: Support R11G11B10_FLOAT and R9G9B9E5_SHAREDEXP The keys in vk_format_map.json were incorrect. The format table generation script is enhanced to give an error in such a case. This revealed a number of entries with no corresponding angle format, which are also removed. Bug: angleproject:2898 Bug: angleproject:3190 Change-Id: I32caf2d2a8abb6f76b25436725670a8e84d576fb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1666700 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi 8af6c6f5 2019-06-18T15:43:44 Vulkan: Minor cleanup of Transform Feedback validation By using the helper isTransformFeedbackActive* functions. Bug: angleproject:3205 Change-Id: I50b3e9db427da9f65c3e2b50d7847464e8c28202 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1665353 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
James Dong c6601ec8 2019-06-14T11:07:23 Vulkan: fix texture swizzle Corrects texture swizzle in Vulkan backend. Previously user-supplied swizzle was applied before internal swizzle; this change applies the internal swizzle first, causing the correct behavior. Also recreates image views when swizzle is dirty. Test: ./angle_deqp_gles3_no_gtest --deqp-egl-display-type=angle-vulkan -n 'dEQP-GLES3.functional.texture.swizzle.*' Test: ./angle_end2end_tests --gtest_filter='SwizzleTest.*/ES3_Vulkan' Bug: angleproject:3212 Change-Id: Ie2c44b479da5c19ba744ace7562a73c944f97a49 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1660909 Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Stephen Martinis 88e03221 2019-05-31T12:06:28 Unset conflicting SRVs and UAVs D3D11 cannot allow the same (sub)-resource bound as both a SRV and an UAV at the same time. Unset conflicting SRVs and UVAs between render pipeline and compute pipeline. Bug: angleproject:3152 TEST=angle_end2end_tests.ComputeShaderTest.* Change-Id: I9cb8b902edbf987166a57af314af6b21a6874998 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1576504 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Xinghua Cao <xinghua.cao@intel.com>
Michael Spang 6c824a1b 2019-06-18T15:43:33 Vulkan: Add missing layout for VK_IMAGE_LAYOUT_UNDEFINED This this was missed because it doesn't add its own enum value and instead reuses GL_NONE. Bug: chromium:976374 Test: chrome --enable-features=UseSkiaRenderer,UiGpuRasterization \ --enable-gpu-rasterization \ --enable-oop-rasterization \ --use-vulkan=native \ --use-gl=angle \ --use-angle=vulkan Change-Id: I73437211fef3253801e899cb6e50a8e18865cc65 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1665329 Commit-Queue: Michael Spang <spang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 71ad2a73 2019-06-18T21:10:28 Revert "Vulkan: Add missing command pool reset." This reverts commit 9aa865a6f9885fce602e9b637a18fb124ce9d372. Reason for revert: Seems to be causing crashes on Android in glmark2. Might also be responsible for a perf regression. Bug: angleproject:3542 Original change's description: > Vulkan: Add missing command pool reset. > > We were still calling destroy in checkCompletedCommands. We can > instead call reset. > > May not significantly impact performance. > > Bug: angleproject:3489 > Change-Id: I61a2cb154faac56dc78a49678dd822d81ce16ad2 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1647029 > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Tobin Ehlis <tobine@google.com> > Commit-Queue: Jamie Madill <jmadill@chromium.org> TBR=tobine@google.com,jmadill@chromium.org # Not skipping CQ checks because original CL landed > 1 day ago. Bug: angleproject:3489 Change-Id: Icb0e99f18ecab09798654605973958bd2b263002 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1665748 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Geoff Lang 857880e5 2019-05-27T13:39:15 GL: Add extensions to enable hardware video decode on Android. The Android SurfaceTexture API has to be initialized with a texture id which Chrome has to query from an ANGLE external texture. It also rebinds and sets the texture dimensions on calls to SurfaceTexture.updateTexImage so ANGLE must be notified about these changes so that state tracking and validation continue to function. BUG=967410 Change-Id: I92e9077f75835b088da3a8caffb3ff40e9ad0361 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1630293 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jonah Ryan-Davis 32d718f3 2019-06-18T11:25:23 NVIDIA Shield workaround for IsNVIDIA() detection NVIDIA Shield do not implement Vulkan, which is used to populate vendor IDs in SystemInfo. The vendorIDs are used to check IsNVIDIA(). This CL adds a workaround so IsNVIDIA() returns true for NVIDIA Shield. Bug: angleproject:3541 Change-Id: Ib36dd376207163acfc8d3a0e341f07a7d6aa3122 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1663080 Commit-Queue: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Sunny Sachanandani f9686af0 2019-06-04T17:49:43 Add support for D3D11 texture backed EGLImages Implement EGL_ANGLE_image_d3d11_texture extension. Images created with this extension might not be renderable based on bind flags and resource usage of the client provided texture in which case attaching them to a framebuffer won't succeed. The intended use case is to bind the front and back buffers of a swap chain to GL textures that can be used for rendering in the case of the back buffer and as a shader input for the front buffer. Bug: chromium:939655 Change-Id: Ic3328e831880292217b88be84740740df6031fa6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1646732 Commit-Queue: Sunny Sachanandani <sunnyps@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jonah Ryan-Davis eee67c6e 2019-06-18T13:00:43 Fix Platform.h integration with ANGLE A function was renamed which broke the platformMethods table strings. This CL reverts the rename (originally from crrev/c/1660952) Bug: angleproject:1621 Change-Id: I8121a4956ba1d3e3c5036f72f6f1fdf5509dc491 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1664792 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Jamie Madill 124f78c2 2019-06-18T11:48:24 Remove gl::Context parameter from Observer functions. It was only used in exactly one instance in VertexArray. Instead we can cache a bool and avoid needing to pass it around. Will make signaling dirty easier in the Vulkan back-end. Bug: angleproject:3539 Change-Id: Ia570aec051a24a5280df49edc4345c54022b46ec Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1663838 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Kimmo Kinnunen b8252fdb 2019-06-18T12:13:49 Remove unused WidenString function The removed function had incorrect Windows implementation, the return value was checked incorrectly. Last use was removed in commit 573f76b3eebf38cefb144781bfd90418e2c7df37 https://chromium-review.googlesource.com/c/1042785 Bug: angleproject:2532 Change-Id: I66907fcb33041b097062208d53ca88752c05f9cb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1664153 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Kimmo Kinnunen FI <kkinnunen@nvidia.com>
Mohan Maiya 141a23f6 2019-06-17T17:56:59 Add support for OES_depth24 Allow 24-bit depth as a valid Renderbuffer format. Bug: angleproject:3229 Test: angle_end2end_tests --gtest_filter=DepthStencilFormatsTest.DepthBuffer/* Change-Id: I166639ec0e000595dc55848e4b8b7bef627b6471 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1661050 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Kimmo Kinnunen a4c639c4 2019-06-03T14:04:01 D3D: Add a wrapper to Image11 that enables ASAN/MSAN to catch the errors on map operations The wrapper should be a no-op on builds with assertions disabled. The wrapper should be useful on ASAN and MSAN builds. gn args out/release-asan --args="is_debug=false is_asan=true" ninja -C out/release-asan angle_end2end_tests ^ out\release-asan\angle_end2end_tests ^ --gtest_filter=Texture2DArrayCopy.SnormFormats* --gtest_catch_exceptions=0 ^ --gtest_repeat=-1 Output when the fix payload of angleproject:2865 is removed: ... Repeating all tests (iteration 1) . . . Note: Google Test filter = Texture2DArrayCopy.SnormFormats* [==========] Running 1 test from 1 test suite. [----------] Global test environment set-up. [----------] 1 test from Texture2DArrayCopy [ RUN ] Texture2DArrayCopy.SnormFormats/ES3_D3D11 ================================================================= ==500==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x12b2c4777040 at pc 0x7fff9602216b bp 0x00c0eaafd090 sp 0x00c0eaafd0d8 READ of size 1 at 0x12b2c4777040 thread T0 #0 0x7fff9602216a in angle::R8G8B8A8::readColor c:\Users\kkinnunen\angle\src\image_util\imageformats.cpp:333 #1 0x7fff9618dbf0 in rx::CopyImageCHROMIUM c:\Users\kkinnunen\angle\src\libANGLE\renderer\renderer_utils.cpp:377 #2 0x7fff96186bb2 in rx::Image11::CopyImage c:\Users\kkinnunen\angle\src\libANGLE\renderer\d3d\d3d11\Image11.cpp:113 #3 0x7fff95e90410 in rx::Renderer11::copyImage c:\Users\kkinnunen\angle\src\libANGLE\renderer\d3d\d3d11\Renderer11.cpp:3009 #4 0x7fff9617b447 in rx::TextureD3D_2DArray::copyTexture c:\Users\kkinnunen\angle\src\libANGLE\renderer\d3d\TextureD3D.cpp:3293 #5 0x7fff95afd7e1 in gl::Texture::copyTexture c:\Users\kkinnunen\angle\src\libANGLE\Texture.cpp:1196 #6 0x7fff95977f19 in gl::Context::copyTexture3D c:\Users\kkinnunen\angle\src\libANGLE\Context.cpp:4347 #7 0x7fff9568b04a in gl::CopyTexture3DANGLE c:\Users\kkinnunen\angle\src\libGLESv2\entry_points_gles_ext_autogen.cpp:57 #8 0x7ff7d1d8fc97 in angle::CopyTexture3DTest::testCopy c:\Users\kkinnunen\angle\src\tests\gl_tests\CopyTexture3DTest.cpp:90 #9 0x7ff7d1dadd10 in angle::Texture2DArrayCopy_SnormFormats_Test::TestBody c:\Users\kkinnunen\angle\src\tests\gl_tests\CopyTexture3DTest.cpp:1272 #10 0x7ff7d2c22891 in testing::Test::Run c:\Users\kkinnunen\angle\third_party\googletest\src\googletest\src\gtest.cc:2522 #11 0x7ff7d2c243c0 in testing::TestInfo::Run c:\Users\kkinnunen\angle\third_party\googletest\src\googletest\src\gtest.cc:2698 #12 0x7ff7d2c253e8 in testing::TestSuite::Run c:\Users\kkinnunen\angle\third_party\googletest\src\googletest\src\gtest.cc:2828 #13 0x7ff7d2c3f33e in testing::internal::UnitTestImpl::RunAllTests c:\Users\kkinnunen\angle\third_party\googletest\src\googletest\src\gtest.cc:5285 #14 0x7ff7d2c3e72d in testing::UnitTest::Run c:\Users\kkinnunen\angle\third_party\googletest\src\googletest\src\gtest.cc:4873 #15 0x7ff7d2bf10a2 in main c:\Users\kkinnunen\angle\src\tests\angle_end2end_tests_main.cpp:15 #16 0x7ff7d2d27897 in __scrt_common_main_seh f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:283 #17 0x7ff801ec7973 in BaseThreadInitThunk+0x13 (C:\WINDOWS\System32\KERNEL32.DLL+0x180017973) #18 0x7ff804cea270 in RtlUserThreadStart+0x20 (C:\WINDOWS\SYSTEM32\ntdll.dll+0x18006a270) 0x12b2c4777040 is located 0 bytes to the right of 256-byte region [0x12b2c4776f40,0x12b2c4777040) allocated by thread T0 here: #0 0x7ff7d2c6d574 in malloc C:\b\s\w\ir\k\src\third_party\llvm\projects\compiler-rt\lib\asan\asan_malloc_win.cc:68 #1 0x7fff95af47b2 in angle::MemoryBuffer::resize c:\Users\kkinnunen\angle\src\common\MemoryBuffer.cpp:40 #2 0x7fff9648c9a6 in rx::MappedSubresourceVerifier11::wrap c:\Users\kkinnunen\angle\src\libANGLE\renderer\d3d\d3d11\MappedSubresourceVerifier11.cpp:51 #3 0x7fff961864b5 in rx::Image11::map c:\Users\kkinnunen\angle\src\libANGLE\renderer\d3d\d3d11\Image11.cpp:648 #4 0x7fff9618676c in rx::Image11::CopyImage c:\Users\kkinnunen\angle\src\libANGLE\renderer\d3d\d3d11\Image11.cpp:93 #5 0x7fff95e90410 in rx::Renderer11::copyImage c:\Users\kkinnunen\angle\src\libANGLE\renderer\d3d\d3d11\Renderer11.cpp:3009 #6 0x7fff9617b447 in rx::TextureD3D_2DArray::copyTexture c:\Users\kkinnunen\angle\src\libANGLE\renderer\d3d\TextureD3D.cpp:3293 #7 0x7fff95afd7e1 in gl::Texture::copyTexture c:\Users\kkinnunen\angle\src\libANGLE\Texture.cpp:1196 #8 0x7fff95977f19 in gl::Context::copyTexture3D c:\Users\kkinnunen\angle\src\libANGLE\Context.cpp:4347 #9 0x7fff9568b04a in gl::CopyTexture3DANGLE c:\Users\kkinnunen\angle\src\libGLESv2\entry_points_gles_ext_autogen.cpp:57 #10 0x7ff7d1d8fc97 in angle::CopyTexture3DTest::testCopy c:\Users\kkinnunen\angle\src\tests\gl_tests\CopyTexture3DTest.cpp:90 #11 0x7ff7d1dadd10 in angle::Texture2DArrayCopy_SnormFormats_Test::TestBody c:\Users\kkinnunen\angle\src\tests\gl_tests\CopyTexture3DTest.cpp:1272 #12 0x7ff7d2c22891 in testing::Test::Run c:\Users\kkinnunen\angle\third_party\googletest\src\googletest\src\gtest.cc:2522 #13 0x7ff7d2c243c0 in testing::TestInfo::Run c:\Users\kkinnunen\angle\third_party\googletest\src\googletest\src\gtest.cc:2698 #14 0x7ff7d2c253e8 in testing::TestSuite::Run c:\Users\kkinnunen\angle\third_party\googletest\src\googletest\src\gtest.cc:2828 #15 0x7ff7d2c3f33e in testing::internal::UnitTestImpl::RunAllTests c:\Users\kkinnunen\angle\third_party\googletest\src\googletest\src\gtest.cc:5285 #16 0x7ff7d2c3e72d in testing::UnitTest::Run c:\Users\kkinnunen\angle\third_party\googletest\src\googletest\src\gtest.cc:4873 #17 0x7ff7d2bf10a2 in main c:\Users\kkinnunen\angle\src\tests\angle_end2end_tests_main.cpp:15 #18 0x7ff7d2d27897 in __scrt_common_main_seh f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:283 #19 0x7ff801ec7973 in BaseThreadInitThunk+0x13 (C:\WINDOWS\System32\KERNEL32.DLL+0x180017973) #20 0x7ff804cea270 in RtlUserThreadStart+0x20 (C:\WINDOWS\SYSTEM32\ntdll.dll+0x18006a270) Bug: angleproject:2865 Change-Id: I6c8fc203d075014ba8ce31c728982eed73812d04 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1640212 Commit-Queue: Kimmo Kinnunen FI <kkinnunen@nvidia.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Shahbaz Youssefi b1c8dbf3 2019-06-14T23:57:26 Vulkan: Correct synchronization for buffer readback When mapping buffer memory, a flush is performed if the buffer has pending operations followed by a finishToSerial to make sure the buffer is no longer in use by the GPU. This also implements GLES 3.0 buffer mapping flags: GL_MAP_INVALIDATE_RANGE_BIT: No-op. Vulkan's vkMapMemory doesn't have such a feature. GL_MAP_INVALIDATE_BUFFER_BIT: Same GL_MAP_FLUSH_EXPLICIT_BIT: Vulkan automatically flushes host memory writes on vkQueueSubmit, so this is no-op as well. GL_MAP_UNSYNCHRONIZED_BIT: The flush+finishToSerial call is skipped in this case. Bug: angleproject:3213 Change-Id: I6bdb460dffbb57170649f4c9678afbfae331926c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1661252 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Clemen Deng c211c2f5 2019-06-14T16:02:17 Make proc table autogen use gl.xml data Instead having the proc table be generated from proc_table_data.json which needed to be manually updated with changes, the proc table is now generated from data in gl.xml and egl.xml Bug: angleproject:3533 Change-Id: I773ea7615cc4ec1c9901def629b089d8d17328eb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1660645 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
James Dong 3f8975e1 2019-06-12T13:11:57 Debug: suppress INFO log level in tests Disables INFO level log messages in tests, including GL errors. Bug: angleproject:3525 Change-Id: Ib16871b9faaff54964dd2770e1791372b1b79361 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1656293 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: James Dong <dongja@google.com>
Jamie Madill 875509e9 2019-06-17T13:44:21 Vulkan: Minor cleanup to ContextVk::setupIndexedDraw. This removes VertexArrayVk::updateIndexTranslation. Turns out this helper function wasn't that helpful. Bug: angleproject:3539 Change-Id: Ia4573219073261767e9d215ed4227233c23cbfaa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1660639 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jonah Ryan-Davis beb0eb2d 2019-06-14T15:10:33 Clean up workarounds/features to single location. Rename all workarounds structs to features, and move the lists to a shared location in include/platform (to help with documentation, see: https://cs.chromium.org/chromium/src/ui/gl/gl_switches.cc?sq=package:chromium&g=0&l=69) Bug: angleproject:1621 Change-Id: I4069f08131db5e886047a007efb5d7764dfee5f2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1660952 Commit-Queue: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tobin Ehlis d7013c03 2019-06-17T09:27:18 Merge ESSL pre-processsor token errors In both the ESSL 1.00 & 3.00 specifications having an extension directive after a pre-processor token is an error. Merging those two enum cases to be a single case. WebGL is handled as a separate warning case for any shader version before 3.00. Also this change now correctly marks 1.00 shaders that break this rule to be invalid so the ExtensionAfterNonPreProcessorTokenESSL1 test no longer expects handleExtension() to be called. BUG=chromium:971660 Change-Id: I37b10cc0fb3a0efd6200a478171e005a96478255 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1661395 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Tobin Ehlis <tobine@google.com>
Shahbaz Youssefi e962b6a6 2019-06-17T10:12:26 Vulkan: Enable previously failing clear tests These tests crashed in FramebufferVk::clearWithAttachment, which no longer exists. Bug: angleproject:3081 Change-Id: I6b01c311c4caed21a920e5d5db1195c2dbfb905a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1661554 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
James Dong 08b56293 2019-06-10T12:55:36 Vulkan: add LINE_LOOP with primitive restart Adds support for GL_LINE_LOOP with primitive restart. Bug: angleproject:3215 Change-Id: Ief1bdf15ef9b108dba025eaf4ce580bba54af623 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1649351 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 2c49d0b0 2019-06-14T15:17:37 Suppress Bindings perf test on Win/Intel/GL. BindingsBenchmark.Run/gl_100_objects_allocated_every_iteration This test was timing out on the bots. Conservatively skip the benchmark on Intel/GL/Windows. Bug: chromium:974083 Change-Id: I4a254bff8b43e5a47b5905ee6b9bc1a659129684 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1660951 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org>
Clemen Deng 95ac7b7c 2019-06-13T11:29:06 Autogen gles2+ declarations Added autogeneration of method declarations for GLES2+ and extensions Bug: angleproject:3526 Change-Id: I9c7263452146098512d9584deae8ea3f15f62c46 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1660949 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 8118265a 2019-06-14T11:03:14 Add more DrawCallPerf offscreen configs. I thought these might have different performance characteristics when compared to the main configs. It's possible they would also need to forego using SwapBuffers to get different profiles. Right now perf is pretty similar to with the default FBO. Bug: angleproject:3117 Change-Id: Ic03b4ebd8c606af5121854565525e37e66f91435 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1650785 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Jamie Madill 12f38c49 2019-06-13T11:38:59 Vulkan: Use dynamic buffer for driver uniform updates. This should reduce the number of descriptor sets we need to allocate. We only allocate a new descriptor set when the underlying buffer is reallocated. We pass in the buffer offset via the dynamic offsets parameter. Bug: angleproject:3504 Change-Id: I40d031cd7295a8d002caff4f331f4a311f07505c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1646757 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tobin Ehlis <tobine@google.com>
Yuly Novikov 853ebacf 2019-06-13T18:35:25 Suppress Mac 10.13.6 Intel OpenGL dEQP failures Bug: angleproject:3531 Change-Id: I246144beb9c12b2df74612831262c7d263698db4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1658718 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
James Dong 2806a898 2019-06-07T12:10:46 Vulkan: implement primitive restart Implements ES 3.0 feature GL_PRIMITIVE_RESTART_FIXED_INDEX, which allows the application to use a fixed "restart" index to restart the primitive during a single draw call. This change does't handle GL_LINE_LOOP primitives, which requires a bit of special handling. Bug: angleproject:3215 Change-Id: I2388852683fd17328a6a76c48d70a24d67ce8b67 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1650301 Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
Shahbaz Youssefi 4316e064 2019-06-13T00:32:09 Vulkan: Output render pass loadOp in graph dump Bug: angleproject:3205 Change-Id: I7ad99bd2f8ddeb899c5fa86fd39296e5fc96d2c6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1657708 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 88596bea 2019-06-13T14:17:48 Vulkan: Implement a texture descriptor cache. We noticed a significant hotspot in vkAllocateDesctiptorSets. The app was repeatedly cycling through a few combinations of active textures. For each state change in ANGLE we were allocating a new desctiptor set. This in turn would trigger internal driver memory allocation and cause jank. Using a cache avoids allocations entirely since the application is rotating through a stable set of textures. The descriptor cache is stored in each program. It is indexed by a set of 32-bit serials. Each texture generates a unique serial for every combination of VkImage and VkSampler that the texture owns. The texture descriptor is refreshed every time a texture changes or is rebound. The descriptor cache is accessed via an unoredered map with the texture serial sets as the hash key. We also store the maximum active texture index in the cache key so we don't need to hash and memcmp on all 64 active textures. This will currently fail if more than MAX_UINT serials are generated. But that number is high enough that it shouldn't be possible to hit in practice in a practical amount of time. Requires shifting the texture sync to ContextVk so we can get the new serial after the textures are updated. And to make sure to update the image layouts even if the descriptors are not dirty. Improves performance of the T-Rex demo. Also improves the score of the texture state change microbenchmark by about 40%. Bug: angleproject:3117 Change-Id: Ieb9bec1e8c1a7619814afab767a1980b959a8241 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1642226 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
shrekshao 95428331 2019-06-10T18:03:03 Enable floatBlend for D3D9 Although according to https://docs.microsoft.com/en-us/windows/desktop/direct3ddxgi/format-support-for-direct3d-feature-level-9-1-hardware D3D9 doesn't have full blending capability for RGBA32F. But turns out it could provide correct blending result in reality. As a result of some regression reports by client app, we decided to turn floatBlend on for D3D9. I tried to make a native D3D9 program to detect float blending capability. But turns out it needs quite some effort on Win10 for a D3D newbie. Considering the fact that D3D9 backend is not fully passing conformance test anyway. I don't think it worth the effort. Seems to be okay to just turn it on. Bug: chromium:970532 Change-Id: I66bec120be6eaaa62a5472b8521a97b4d23e924a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1652731 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shrek Shao <shrekshao@google.com>
James Dong 0d3cf708 2019-06-12T10:07:02 Vulkan: fix array size for internal shaders Previously array sizes were calculated as the OR of all flag and enum masks, equal to 2^(number of bits used for flags and enums) - 1, which could be less than the actual needed array size. This fix moves array size calculation to the autogen script and changes the size to one more than the maximum potential value. Bug: angleproject:3524 Change-Id: Ia4eb2a83fc7deea84e18958efcda8b57632035f9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1655954 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill 05ba83a0 2019-06-13T13:26:58 Refactor DrawCallPerfParams. Makes it a bit easier to work with. In prep for adding offscreen configs. Bug: angleproject:3117 Change-Id: Ie2497574b2687592b7b3df2f7b933a19e83b6d16 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1650784 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Jonah Ryan-Davis 78a51911 2019-06-12T14:28:14 Clean up and expose frontend features to egl. gl::Workarounds was used to hold frontend features. Change ownership of this struct from Context to Display, so it can be exposed to egl. Also rename to features and clean up for consistency. Bug: angleproject:1621 Change-Id: I82e98e53873abb7a402c93e60f8a662a7263e0d5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1655772 Commit-Queue: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 444aa0fe 2019-06-08T13:53:17 Vulkan: Prefer immediate present mode for benchmarking. This should give the highest possible scores. Note that immediate is not always available. Bug: angleproject:3163 Change-Id: Ifedabd39819625b57feda71ed83a7bee8fa0a42b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1638904 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Qin Jiajia 3f2b4e7f 2019-06-11T14:47:59 Fix the crash in angle_deqp_gles31_tests This crash only happened on a compute test which following a render test. This root case was that after the render test, mVertexArray11 became an invalid pointer. However, compute test still went to the common path to use mVertexArray11. mVertexArray11 is never updated since compute shader doesn't need to triger DIRTY_BIT_VERTEX_ARRAY_BINDING. This patch adds checking to avoid compute test to use mVertexArray11. Besides, more ASSERT checking are added to convenient debugging. Bug: angleproject:3518, angleproject:1663, angleproject:2619 Change-Id: I446214110d762fc259899cef7635f369fa1f59a7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1652866 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jiajia Qin <jiajia.qin@intel.com>
Clemen Deng ebddd1a2 2019-06-11T16:32:46 implement core egl image entry points Bug: angleproject:2467 Change-Id: Ica943a3972333e90a516aa6960f333cc9c378be2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1653714 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 169ef353 2019-06-12T14:42:13 Vulkan: Fix build with custom secondaries disabled. We should also add a compile-only target that verifies the build works as expected. Bug: angleproject:3117 Change-Id: Ib55969cdd0e670c123cdbe98bd0decf2204e7267 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1650789 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
James Dong 13ac9422 2019-06-10T17:53:09 Vulkan: add support for shadow samplers. Adds support for ES 3.0 shadow samplers. Test: ./angle_deqp_gles3_no_gtest --deqp-egl-display-type=angle-vulkan -n 'dEQP-GLES3.functional.texture.shadow.2d.*' Bug: angleproject:3211 Change-Id: Ic82ecfe19290fb952fcb0ba423691b5bac87c4a3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1652021 Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jonah Ryan-Davis fce1e2d1 2019-06-04T15:02:08 Extend eglGetPlatformDisplay to allow feature overrides. Add EGL_FEATURE_OVERRIDES_ENABLED_ANGLE and EGL_FEATURE_OVERRIDES_DISABLED_ANGLE to submit lists of strings naming the features that should be overridden (either enabled or disabled) on display creation. Bug: angleproject:1621 Change-Id: I4bb75c5dbab0e3b701a72069c38f8c60ecfffad2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1646595 Commit-Queue: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Clemen Deng 2589cdcc 2019-06-11T11:38:41 GLSLTest stack overflow bug fix Bug: angleproject:3514 Change-Id: Id02bdb230dce0435b0b33db101d196596d6e8c93 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1652435 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 9aa865a6 2019-06-06T17:10:51 Vulkan: Add missing command pool reset. We were still calling destroy in checkCompletedCommands. We can instead call reset. May not significantly impact performance. Bug: angleproject:3489 Change-Id: I61a2cb154faac56dc78a49678dd822d81ce16ad2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1647029 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tobin Ehlis <tobine@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
James Dong c75d6dc8 2019-06-05T16:12:01 Vulkan: Add support for gl_VertexID/gl_InstanceID Adds support for GLES 3.0 feature which adds gl_VertexID and gl_InstanceID built-in variables to vertex shader. Bug: angleproject:3221 Change-Id: I372d7ac34bed376b506e327725f0eca2513852fa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1646735 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Kenneth Russell 6064e6ab 2019-06-11T04:01:12 Reland "Temporarily disable creating D3D debug device." This reverts commit 28394c2295335929c17bbfe0ab74f923cd234ff2. Reason for revert: may be the cause of flakiness on Win10 Debug (NVIDIA) per http://crbug.com/972914 . Original change's description: > Revert "Temporarily disable creating D3D debug device." > > This reverts commit 3d544fffe7ff9284b21e3a15f638297c827bbc21. > > Reason for revert: Seems like flakiness is not related. > > Suppress D3D11 test failures uncovered by re-enabling D3D debug device: > ComputeShaderTest.DispatchCompute > Texture2DTestES3.TextureImplPropogatesDirtyBits > D3DTextureTestMS.* > > Also a small fix to ANGLETestBase::checkD3D11SDKLayersMessages > to clear reported messages, otherwise the failures are also reported > for tests following the one with the actual failure. > > Original change's description: > > Temporarily disable creating D3D debug device. > > > > To diagnose whether Windows Intel end2end tests flakiness > > is related to creating debug device and new version of Windows SDK. > > > > Bug: angleproject:3153 > > Change-Id: Ica7eae3fe875e22203b6dfd98b83604d66a97737 > > Reviewed-on: https://chromium-review.googlesource.com/c/1476954 > > Reviewed-by: Geoff Lang <geofflang@chromium.org> > > Commit-Queue: Yuly Novikov <ynovikov@chromium.org> > > Bug: angleproject:3153, angleproject:3493 > Bug: angleproject:3501, angleproject:3512, angleproject:3513 > > Change-Id: I232da72aa09c2b9230cf179dd54e1731f8365f8e > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1480854 > Reviewed-by: Yuly Novikov <ynovikov@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Commit-Queue: Yuly Novikov <ynovikov@chromium.org> TBR=ynovikov@chromium.org,geofflang@chromium.org,jmadill@chromium.org Change-Id: I38a5cc9bb6ebcd50e97e40cc972a82679e73732a No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: angleproject:3153, angleproject:3493, angleproject:3501, angleproject:3512, angleproject:3513 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1652784 Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Kenneth Russell <kbr@chromium.org>
Nico Weber 1b5ad312 2019-06-10T18:41:08 Omit "de_DE.ISO-8859-15@euro" from ShCompileTest.DecimalSepLocale on Windows. A new SDK version started throwing on locales that have a code page section (the part after the dot) that's >= 16 characters long. That's a system library bug, but for now we need to work around it. Bug: chromium:972372 Change-Id: I64cee1051e854dac84e8c3c728ce65606b0dc89b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1652016 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Yuly Novikov 28394c22 2019-02-21T03:24:58 Revert "Temporarily disable creating D3D debug device." This reverts commit 3d544fffe7ff9284b21e3a15f638297c827bbc21. Reason for revert: Seems like flakiness is not related. Suppress D3D11 test failures uncovered by re-enabling D3D debug device: ComputeShaderTest.DispatchCompute Texture2DTestES3.TextureImplPropogatesDirtyBits D3DTextureTestMS.* Also a small fix to ANGLETestBase::checkD3D11SDKLayersMessages to clear reported messages, otherwise the failures are also reported for tests following the one with the actual failure. Original change's description: > Temporarily disable creating D3D debug device. > > To diagnose whether Windows Intel end2end tests flakiness > is related to creating debug device and new version of Windows SDK. > > Bug: angleproject:3153 > Change-Id: Ica7eae3fe875e22203b6dfd98b83604d66a97737 > Reviewed-on: https://chromium-review.googlesource.com/c/1476954 > Reviewed-by: Geoff Lang <geofflang@chromium.org> > Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Bug: angleproject:3153, angleproject:3493 Bug: angleproject:3501, angleproject:3512, angleproject:3513 Change-Id: I232da72aa09c2b9230cf179dd54e1731f8365f8e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1480854 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
James Dong c74c3d81 2019-06-05T10:55:40 DEBUG: Log all debug messages to console Logs all debug messages produced by GL and EGL. This is helpful for debugging when the application does not register a debug callback. Validation errors produce log messages with level INFO, and internal errors produce log messages with level WARN. Bug: angleproject:3505 Change-Id: I269055aec49e1d77edeedb482fa6873c8f79f853 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1645817 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tim Van Patten 70642e42 2019-06-05T14:55:49 Vulkan: Implement ES 3.0 rasterizer discard Rasterizer discard is a feature that allows the graphics pipeline to skip the fragment shader stage. Implementing rasterizer discard in Vulkan is as easy as not binding a fragment shader binary. Tests for rasterizer discard live in dEQP-GLES3.functional.rasterizer_discard.*. Bug: angleproject:3214 Test: dEQP-GLES3.functional.rasterizer_discard.* Change-Id: I0815df3b70f6f9cdc6c8c87ec4813bb629d8bd5f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1646692 Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tobin Ehlis 35b25fc6 2019-06-07T11:54:36 For WebGL warn on late extension directive A previous change based on ESSL 1.00 spec had made it an error in all cases when an extension directive appeared in a shader after the first non-preprocessor token. However, this is incorrect for WebGL 1.0 so adding warning case for WebGL. BUG=chromium:971660 Change-Id: I026fe60e8b1876de65b001b676f7a0552739a20c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1648661 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Kai Ninomiya <kainino@chromium.org> Commit-Queue: Tobin Ehlis <tobine@google.com>
Shahbaz Youssefi ed65dc43 2019-06-03T11:21:00 Vulkan: implement glSampleCoverage Emulated by applying a mask on top of the mask from glSampleMask. Bug: angleproject:3204 Change-Id: I4c80ab0a3261cbf1b8a43c270fe13c2a247ea663 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1639749 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi b407e1a0 2019-06-03T17:15:51 Vulkan: implement ES3 blit Augment the resolve shaders to be able to stretch and blit too. The UtilsVk resolve function is accordingly expanded to include blit. Bug: angleproject:3200 Change-Id: I30b172a5e388089735ab494f55cbfdc2781a8bf9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1635753 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
James Dong ea49f6f5 2019-06-06T12:58:27 Debug: Add LOG_INFO logging level Will be used for logging GL/EGL debug messages. Bug: angleproject:3505 Change-Id: I10ff32dd4f9227cabac2f3d9425b0428e7af1398 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1648714 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Tim Van Patten 148ecd89 2019-05-28T14:14:42 Vulkan: Handle VK_ERROR_OUT_OF_DATE returned by vkAcquireNextImageKHR() There is some new Android HWUI/SkiaGL code, that (in certain cases) looks up the underlying Vulkan swapchain that ANGLE created, and adds an image to it. This causes the next call to vkAcquireNextImageKHR() to return VK_ERROR_OUT_OF_DATE and requires the swapchain to be recreated. Bug: angleproject:3480 Test: Use ANGLE on Android and verify apps load correctly. Change-Id: I21c86035664878e75d6a9dc769546747aa4c8256 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1632424 Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jeff Gilbert 55ca3a51 2019-06-05T17:32:32 Use execv instead of execve w/ environ. Some platforms don't want us messing with environ, and these seem to be equivalent. Bug: angleproject:3506 Change-Id: I66804e8accc30421c1cd32c0eda750500e3ecb60 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1646887 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Courtney Goeltzenleuchter 3f17f929 2019-06-05T13:13:12 Avoid recreating swapchain for preRotation Android will return VK_SUBOPTIMAL_KHR if the orientation of the screen is not optimial for the orientation of the device. We were re-creating the swapchain when this happens but we weren't changing the orientation and would get this return code every time we call vkQueuePresent and re-create the swapchain each time. Apparently recreating the swapchain causes visual artifacts on some devices. Just ignoring VK_SUBOPTIMAL_KHR allows things to work. Bug: angleproject:3497 Need to implement proper preRotation support for longterm fix. Bug: angleproject:3502 Change-Id: I0904eb60b742d24618d502c111510117758a8502 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1641206 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
James Dong a4a24af3 2019-06-06T10:50:21 Vulkan: fix uint indices causing incomplete buffer Fixes buffer size calculation when uploading element buffer to account for 4-byte (uint) indices. Bug: angleproject:2902 Change-Id: Id70fc0fdffecd0b27995820bd0ad88e4cb61e013 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1648325 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 266a9e8d 2019-06-05T15:15:10 Vulkan: Move descriptor pools into ProgramVk. Previously ContextVk owned the descriptor pools. We were trying to maximize descriptor reuse to conserve memory. However the default uniforms would have no possible sharing. And because uniform buffers are usually unique to a program it's likely there would be less reuse. Image descriptors could be shared. But with the advent of a descriptor cache in the Program it becomes difficult to manage the cache through descriptor pool recycling. Moving the pools into the Program simplifies the cache management. We could look at adding back more reuse in the future. Also shifts driver uniforms back into the end of the descriptor sets to make indexing into the Program's descriptor pools simpler. Bug: angleproject:3117 Change-Id: I52bb49cf322d944ad7cf08791efdf24b7fe573ce Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1644775 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
James Dong b91f87b6 2019-06-05T11:38:39 Vulkan: enable OES_element_index_uint for Vulkan We already handle 32-bit indices, so this change enables the corresponding extension for ES 2.0. Bug: angleproject:2902 Change-Id: Iccde1d4aac383a9c11edf851778ff315de8d4ad1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1646032 Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: James Dong <dongja@google.com>
Jamie Madill 03bc3db8 2019-06-05T13:48:43 Vulkan: Minor cleanup to UtilsVk. Renames "ContextVk *context" to "ContextVk *contextVk" for consistency. Also adds an "allocateDescriptorSet" helper function. Bug: angleproject:3117 Change-Id: Id03e30432d8e5e35b682350a8e98fd2e62cdf89a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1644776 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 5643afc0 2019-06-04T15:37:58 Vulkan: add GLSL placeholder for transform feedback output Bug: angleproject:3205 Change-Id: Id3941b6953e03e7b2183acc57b2c6db4a6439352 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1643424 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Tobin Ehlis <tobine@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi ac8bafc0 2019-06-03T14:59:39 Remove unused bindGenericBuffer from TransformFeedback* Bug: angleproject:3205 Change-Id: I6dc29b48155cd3c0ef98248076cf02e70c9310d9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1643423 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Michael Spang 3c219171 2019-05-31T16:23:23 Add ARM vendor id This fixes a crash when run with asserts on ARM GPU: [2089630:1566159375:0531/202059.262200:ERROR:angle_platform_impl.cc(47)] GetVendorString(133): ! Assert failed in GetVendorString (../../third_party/angle/src/libANGLE/renderer/driver_utils.cpp:133): vendorId == 0xba5eba11 Bug: angleproject:3492 Change-Id: I786edc459b1567a3eee0034a0d8ae7050ac31952 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1642331 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 44063c80 2019-06-04T15:20:30 Vulkan: Store array buffer conversions in BufferVk. The intent of this CL is to call convertVertexBuffer*PU only when we have new data to convert. If the app unbinds and rebinds a vertex buffer without changing the data we can now retrieve the cached vertex buffer info from the BufferVk class. Previously we would always reconvert the data on a rebind. This was slowing down applications and benchmarks. To achieve this we add a conversion cache to BufferVk. Each cache entry stores a key based on the vertex info. Also we store a ring buffer for each cache entry and a flag to indicate if the entry is dirty. The cache is dirtied on a bufffer data update or a map call. Improves performance in the T-Rex benchmark. Bug: angleproject:3495 Change-Id: Ia999c9187510748ba95bc98362eb332e1990d270 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1638903 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Jonah Ryan-Davis e431aaa1 2019-06-04T11:36:43 Rename EGL_ANGLE_workaround_control to EGL_ANGLE_feature_control. For consistency, call these ANGLE "features", a subset of which may be workarounds. Also, whether the feature is enabled/disabled should be publically visible as "status". Bug: angleproject:1621 Change-Id: I0de90a932fbfe1fc9b59138153d616d29fa7268b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1643410 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Shahbaz Youssefi 071d2a44 2019-06-03T11:49:13 Vulkan: Process dirty framebuffers first The currently bound framebuffer affects some dirty bits. This means that processing those dirty bits temporarily use data from a framebuffer that's about to be changed. At best, that creates unnecessary dirty bits in the Vulkan pipeline description. Bug: angleproject:3204 Change-Id: Ie001d6c8fcc61af2e78cf2cb58a1691d8b735ff3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1639750 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi de70a713 2019-06-03T17:05:16 Vulkan: Rename Resolve* shaders to BlitResolve In preparation for adding blit functionality. Bug: angleproject:3200 Change-Id: I77b6b6cbe90b26ee23c25edebaa2b130f3c2987a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1641626 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>