src


Log

Author Commit Date CI Message
Luc Ferron d8c632c8 2018-04-10T12:31:44 Vulkan: Cleanup some TODOs in TextureTest.cpp Bug: angleproject:2364 Change-Id: I316db1f6796a4a2efe344dd4b0a4a6e7bf2ead90 Reviewed-on: https://chromium-review.googlesource.com/1005556 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
James Darpinian 78acf5b5 2018-04-10T20:39:06 D3D11: Fix primitive topology dirty bit tracking. syncPrimitiveTopology checks the transform feedback state, so it needs to be called whenever the transform feedback state changes. This fixes flakes in the WebGL 2 conformance test transform_feedback/simultaneous_binding.html Bug: 696345 Change-Id: I4e17bbf60b4a387cc23dc55bd5a051f5da9fa66e Reviewed-on: https://chromium-review.googlesource.com/1006489 Commit-Queue: James Darpinian <jdarpinian@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Olli Etuaho ebd6e2df 2018-03-23T17:07:55 Take all attributes into account when checking for aliasing This makes ANGLE to follow GLSL ES 3.00.6 spec section 12.46. The spec requires that all attributes are taken into account when checking for aliasing, regardless of if they are active or not. WebGL 2.0 spec was also recently changed to reflect GLSL ES 3.00.6 correctly. Aliasing checks for GLSL ES 1.00 shaders are left as-is. BUG=chromium:829541 TEST=angle_end2end_tests, WebGL conformance tests Change-Id: I71c36ac123f18dadf075e81f93af29321c15136b Reviewed-on: https://chromium-review.googlesource.com/1005077 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Lingfeng Yang 568fc39b 2018-04-09T07:57:23 GLES1: glMultMatrix(f|x) BUG=angleproject:2306 Change-Id: I178b051c23da51d8eaf24c2a0df97f01ae5f3aaa Reviewed-on: https://chromium-review.googlesource.com/1002914 Commit-Queue: Lingfeng Yang <lfy@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Lingfeng Yang 3a41af64 2018-04-09T07:28:56 GLES1: glLoadIdentity / glLoadMatrix(f|x) BUG=angleproject:2306 Change-Id: I46fe961e6eb87b2f41c39afe1e943d9146a0abfa Reviewed-on: https://chromium-review.googlesource.com/1002913 Commit-Queue: Lingfeng Yang <lfy@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill ec0a7028 2018-04-10T17:24:32 D3D11: Add more debug names. Bug: None Change-Id: Iedf69564f465ad1a48fd5cebfe384ace6787a720 Reviewed-on: https://chromium-review.googlesource.com/1006050 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Yuly Novikov 3e1302bd 2018-04-10T15:36:28 Skip RobustResourceInitTestES3.MaskedStencilClearBuffer on Mac NVIDIA. Flaky. BUG=angleproject:2408 Change-Id: I20a6cbf8c4daa722c9d3f91aa3b55227cfff94b5 Reviewed-on: https://chromium-review.googlesource.com/1005811 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Luc Ferron d17bdfe5 2018-04-05T13:50:10 Vulkan: 3 Final bugfixes to enable all dEQP depth_stencil tests - The scissor when clearing should not be clipped against the viewport. - The render pass was created with a render area == to the current viewport, but the viewport can be changed by the tests multiple times per render pass, so we should always keep the renderArea to the full framebuffer instead. - Enables an additional 163 dEQP tests. - We should clip the scissor to the framebuffer dimensions instead of the viewport. Its valid to do a cmdClearAttachments outside the viewport, but not outside the full framebuffer's dimension. Bug: angleproject:2443 Change-Id: I79168e9f0c782d6dec77470fef938b85ad7a8794 Reviewed-on: https://chromium-review.googlesource.com/998448 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Luc Ferron 785b20b7 2018-04-10T13:09:27 Vulkan: PointSprite suppress 3 tests that are failing the android tests Bug: angleproject:2447 Change-Id: Ib5a8176e2836374fbeb70ccd05586495c388680b Reviewed-on: https://chromium-review.googlesource.com/1005438 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Luc Ferron <lucferron@chromium.org>
Luc Ferron 4416247c 2018-04-06T13:20:45 Vulkan: Enable point sprite end2end tests Bug: angleproject:2447 Change-Id: I92a6ed730dd2048b055d32d1f149a29172c7f38a Reviewed-on: https://chromium-review.googlesource.com/999822 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Luc Ferron <lucferron@chromium.org>
Luc Ferron d91c3793 2018-04-06T09:36:36 Vulkan: Implement support for structs in uniforms - Also enables 174 additional dEQP tests. Bug: angleproject:2446 Change-Id: I07cce46815d2f7a80fd48e7fd9407f7d528b397f Reviewed-on: https://chromium-review.googlesource.com/998406 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Luc Ferron <lucferron@chromium.org>
Jamie Madill 26084d0a 2018-04-09T13:44:04 Vulkan: Create TextureVk's Image lazily. This defers the actual Image initialization until the Image is used as either a Framebuffer Attachment or OpenGL Texture object. This will allow us to construct an Image from multiple sub resources, like when we're initializing a mip chain, or a cube map texture. Also adds a helper "hasDepthOrStencilBits" function to angle::Format. Bug: angleproject:2318 Change-Id: Ife861560216581a90fc6da32a583f69886c7daea Reviewed-on: https://chromium-review.googlesource.com/985202 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 3418fe80 2018-04-09T14:08:19 Optimize Subject's binding method. Using FixedVector, we can remove the need for dynamic allocation in most of the use cases. Only when we exceed a certain amount of fixed storage do we need to spill into the heap. Bug: angleproject:2389 Bug: chromium:829906 Change-Id: Ib5f7073b58876bfd2400bd87b743bddcee5e5dc8 Reviewed-on: https://chromium-review.googlesource.com/1002884 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Luc Ferron <lucferron@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jiawei Shao 3dd8d291 2018-03-30T09:39:09 Use ShaderBitSet for active use bits on uniforms BUG=angleproject:2169 Change-Id: I192c2e3c453540c8a6d7b0d066218ea3c9fbaab2 Reviewed-on: https://chromium-review.googlesource.com/989411 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Brandon Jones fe4bbe6c 2018-04-06T13:50:14 Create Stubs For Unimplemented Extensions Create context and validation stubs for unimplemented extensions. This will allow us to use an autogeneration script in the future to generate entry_points_gles_2_0_ext.cpp. Bug:angleproject:2263 Change-Id: If3ad3ebd823d65085c7f143cce9e09187e65d4da Reviewed-on: https://chromium-review.googlesource.com/998440 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Jamie Madill 0ce016c1 2018-04-09T10:59:56 FixedVector: Add "full" method. Will be useful for an optimization to the Buffer Subject/Observer pattern. Also cleans up an ASSERT. Bug: angleproject:2389 Bug: chromium:829906 Change-Id: I2f8313ab531bca61947a51cc2396c04fb5d4bb1d Reviewed-on: https://chromium-review.googlesource.com/1002883 Reviewed-by: Luc Ferron <lucferron@chromium.org> Reviewed-by: Lingfeng Yang <lfy@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Olli Etuaho bb52c523 2018-04-06T10:22:22 Invariant declaration doesn't make a variable active Invariant declarations didn't affect static use before, but now they are also skipped in CollectVariables so an invariant declaration is not enough in itself to mark a variable as active. This fixes an assert in CollectVariables. BUG=chromium:829553 TEST=angle_unittests Change-Id: I3e51d2916f091bcc283af136a4abc846ff71447d Reviewed-on: https://chromium-review.googlesource.com/999532 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Victor Costan 6c59e4a1 2018-04-05T21:35:37 Migrate from <tr1/tuple> to <tuple> types. Bug: 829773 Change-Id: I9bfe3c7b585acb7c91303f59ee448ce2d2dc2786 Reviewed-on: https://chromium-review.googlesource.com/999181 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Victor Costan <pwnall@chromium.org>
Jamie Madill 6816d843 2018-03-31T14:19:17 Add two new fields to angle::Format. One field determines if a format is a compressed format (called Block format for angle::Format, but basically the same). The second field is the number of bytes in the format, so we can do calculations on pixel size. Both of these will make life cleaner in the Vulkan back-end. Also solves some TODOs in the vk format table init. Bug: angleproject:2318 Bug: angleproject:2358 Change-Id: I8b021b959c5892c86635e0225012295e5e830256 Reviewed-on: https://chromium-review.googlesource.com/987524 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Jamie Madill 9cceac42 2018-03-31T14:19:16 Vulkan: Update resource dependency semantics. This removes passing the Serial around to several methods, so that dependency management is a bit more automatic. This makes life a bit easier when dealing with state updates when resources are in use by Vulkan. The FramebuffeVk no longer stores an extra serial of the last draw, instead it will trigger creation of a new writing node on a state change update. Bug: angleproject:2318 Change-Id: Ie58ec66e6e8644ba4d402c509255c3795d363dd3 Reviewed-on: https://chromium-review.googlesource.com/985201 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Jamie Madill 6c7ab7fe 2018-03-31T14:19:15 Vulkan: Reorganize helper classes. This renames ResourceVk to vk::CommandGraphResource, which should help clarify its usage. This also moves LineLoopHandler, ImageHelper, and the DynamicBuffer and DynamicCommandPool classes into a new vk_helpers module. This file contains helper classes that manage other resources. Also this makes DynamicBuffer and DynamicDescriptorPool no longer inherit from CommandGraphResource. In the future, only Impl objects will be allowed to be graph resources. Bug: angleproject:2318 Change-Id: I0fa23da2ac853d90f3c822547a4a314f247cc757 Reviewed-on: https://chromium-review.googlesource.com/985200 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Olli Etuaho 5ae64c94 2018-04-06T11:27:03 Fix writing hex values in ImmutableStringBuilder The old code was accidentally using letters offset by 10 when writing out hex values >= 10. Now the letters a to f are used as they should. This is one issue that changed shader output when ImmutableString was introduced, so it is a potential cause for a regression detailed in bug 824062, though this has not been verified. BUG=chromium:824062 TEST=angle_unittests Change-Id: Idb871dffba32a3ab20df0fe17b4b1a98ec00b7fa Reviewed-on: https://chromium-review.googlesource.com/999480 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Lingfeng Yang e547aac7 2018-04-05T09:39:20 GLES1: gl(Push|Pop)Matrix BUG=angleproject:2306 Change-Id: I96498aebbbc62ebd53e5320db17ef6a54d20d2dc Reviewed-on: https://chromium-review.googlesource.com/998308 Commit-Queue: Lingfeng Yang <lfy@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Lingfeng Yang 8957e832 2018-04-06T10:49:28 Add pop_back() / back() method for FixedVector Good for implementing stacks of fixed size (in the pop operation). + fix an issue where push_back() only allows adding up to max_size() - 1 elements. BUG=angleproject:2306 Change-Id: I99b3c8416055f069fa563b684c102fd6aec116bc Reviewed-on: https://chromium-review.googlesource.com/1000031 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Lingfeng Yang <lfy@google.com>
Lingfeng Yang d2488aba 2018-04-04T09:25:48 GLES1: glMatrixMode BUG=angleproject:2306 Change-Id: I83e15990c10d9354c2db00766ddc7b0ab960aa5c Reviewed-on: https://chromium-review.googlesource.com/996019 Commit-Queue: Lingfeng Yang <lfy@google.com> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Brandon Jones 59770806 2018-04-02T13:18:42 Refactor ANGLE Extensions Context Calls Refactors ANGLE extensions context calls into a common format for future autogeneration. Any work that occurred in the entry point has been moved into its own context member function. Bug:angleproject:2263 Change-Id: I91cb3aca6a8c135ed3ae80a723d6cf16b54aeda6 Reviewed-on: https://chromium-review.googlesource.com/990809 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill b8e39660 2018-04-04T11:41:42 Vulkan: Remove Observer from LineLoopHandler. This can now use the VertexArrayVk dirty bits. It also seems as though there are a couple caching bugs with the LineLoopHandler. Bug: angleproject:2389 Change-Id: I8af73f4acf56768ed9c68395349ba96acfbe9666 Reviewed-on: https://chromium-review.googlesource.com/989259 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Luc Ferron <lucferron@google.com>
Jamie Madill c3755fc5 2018-04-05T08:39:13 Vulkan: Move Streaming data to VertexArrayVk. Instead of the ContextVk owning the translations for the various attributes, make the VertexArrayVk own them. This way they can handle the dirty bit state notifications directly instead of needing their own Observers. Bug: angleproject:2389 Change-Id: I5e571ba6c563e820a4c0d5f92db35031e6f2428a Reviewed-on: https://chromium-review.googlesource.com/989258 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Jamie Madill e7b3fe21 2018-04-05T09:42:46 Context: Release surface first in onDestroy. This works around a bug in Vulkan where the VertexArrayVk still had resources in use when the Context was being destroyed. An alternative approach is to call finish() from Context::onDestroy, but this seems heavyweight. We might have to adopt something like this eventually though. Bug: angleproject:2389 Change-Id: Id99ca00404972a0b857c0e7e36f37b8ac4fd5c5e Reviewed-on: https://chromium-review.googlesource.com/997743 Reviewed-by: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jani Hautakangas f9176ce5 2018-04-05T00:25:32 GLIBC fix: size_t requires include <stddef.h> Compiling fails with some combinations of gcc and glibc. 'size_t' does not name a type in proc_table.h Change-Id: Id79e033dc72d836788551e076ced6dbd706ce902 Reviewed-on: https://chromium-review.googlesource.com/995422 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Luc Ferron 8836f631 2018-04-05T07:26:53 Vulkan: Bugfix in depth/stencil clearing In the situation when we try to clear the depth OR the stencil buffer but we have a packed depth/stencil attachment, we were still clearing both of them since Vulkan doesn't allow setting just the depth or the stencil image aspect bit on the clear call. The workaround is to use the vkCmdClearAttachments command that allows us to clear one or the other easily. Bug: angleproject:2443 Change-Id: I6814e1927c019d9ec9255d79c6bc7b913a8c99e9 Reviewed-on: https://chromium-review.googlesource.com/997752 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Olli Etuaho 4002e92a 2018-04-04T16:55:34 Guard traversers used during parsing against stack overflow Traversers used during parsing can be vulnerable to stack overflow since the AST has not yet been validated for max depth. Make sure to check for traversal depth in traversers used during parsing. We set the maximum traversal depth in ValidateGlobalInitializer and ValidateSwitchStatementList to 256, which matches the default value for validating general AST complexity. The depth check is on regardless of compiler options. In case the traversers go over the maximum traversal depth, they fail validation. BUG=angleproject:2453 TEST=angle_unittests Change-Id: I89ba576e8ef69663ba35d7b9050a6da319f1757c Reviewed-on: https://chromium-review.googlesource.com/995795 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Luc Ferron dd196e0b 2018-04-04T11:41:44 Vulkan: Implement color mask and depth mask bits These two features are heavily used in the functional.depth_stencil_clear.* dEQP tests. Enable a bunch of color/depth/stencil clear tests, however there is still 2 tests in particular that are giving me trouble. I will work on them separately in a subsequent change. Bug: angleproject:2443 Bug: angleproject:2455 Change-Id: Ic93420c7b525b424e9641f78265e264ddb163ab1 Reviewed-on: https://chromium-review.googlesource.com/996035 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Olli Etuaho 5fec7ab2 2018-04-04T11:58:33 Identify functions by unique id in BuiltInFunctionEmulator Now that unique ids of all builtins are compile-time constants, we can use them to look up functions in BuiltInFunctionEmulator. This is simpler than using a custom struct with the name and parameters for identifying functions. This requires that we store a reference to a TFunction in those TIntermUnary nodes that were created based on a function. This decreases shader_translator binary size by about 6 KB on Windows. BUG=angleproject:2267 BUG=chromium:823856 TEST=angle_unittests Change-Id: Idd5a00c772c6f26dd36fdbbfbe161d22ab27c2fe Reviewed-on: https://chromium-review.googlesource.com/995372 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Jamie Madill f3614370 2018-03-31T14:19:14 Vulkan: Rename StreamingBuffer to DynamicBuffer. This makes it consistent with DynamicDescriptorPool, and gives a bit more precise definition. Bug: angleproject:2318 Change-Id: I8953113165ebe2d0dcfc0fc923d94280180442ce Reviewed-on: https://chromium-review.googlesource.com/985199 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Luc Ferron <lucferron@chromium.org>
Lingfeng Yang 00af463e 2018-04-02T12:42:24 GLES1: Add MatrixType packed enum to entry points (It's not called MatrixMode because that collides with the MatrixMode entry point name) BUG=angleproject:2306 Change-Id: I9a192701f6248f1e7d4f202c7d1ddfcdbe1b0089 Reviewed-on: https://chromium-review.googlesource.com/990585 Commit-Queue: Lingfeng Yang <lfy@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
U-GOOGLE\courtneygo bab086a7 2018-03-30T16:08:42 Fix Tokenizer issue Updated Tokenizer running generate_parser.sh on Windows. Test: make Change-Id: I128a70a61907bb4ce3b0a8031667bda4197b6a2d Reviewed-on: https://chromium-review.googlesource.com/988802 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
Olli Etuaho fd643283 2018-04-04T16:12:09 Disallow case statements nested in blocks The GLSL ES 3.00.6 spec is a bit unclear on this, but it does disallow case statements "inside control flow". GLSL ES 3.10 clarifies this and disallows any nesting of case or default labels within other statements. BUG=angleproject:2452 TEST=angle_unittests Change-Id: I289bb39abb5227eab7117638af388b0a57dc5dd8 Reviewed-on: https://chromium-review.googlesource.com/995478 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Lingfeng Yang 038dd539 2018-03-29T17:31:52 GLES1: glMultiTexCoord4(f|x) BUG=angleproject:2306 + common validation for multitexturing units + clang-format Change-Id: I6eb456c273490e85fc7008e7e11d15e22dd20276 Reviewed-on: https://chromium-review.googlesource.com/987298 Commit-Queue: Lingfeng Yang <lfy@google.com> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 858c1ccc 2018-03-31T14:19:13 Vulkan: Move image layout into helper. Now that we're using the helper everywhere, we can clean up the vk::Image class and move the layout tracking into ImageHelper. Bug: angleproject:2318 Change-Id: I9636835a2a3a76f181dac629bd4182bc5815cdee Reviewed-on: https://chromium-review.googlesource.com/980774 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Luc Ferron 24a3137a 2018-04-04T11:49:14 Vulkan: Follow up change to optimize number of condition checks This is a follow up of a comment on this CL: https://chromium-review.googlesource.com/c/angle/angle/+/985954 Bug: angleproject:2442 Change-Id: Id104c1437d77e6102b94351623ee8538a1d6c3d7 Reviewed-on: https://chromium-review.googlesource.com/996012 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Luc Ferron <lucferron@chromium.org>
Luc Ferron 364a9557 2018-03-29T09:44:51 Vulkan: Implement stencil test support All the fragment_ops.depth and the fragment_ops.depth tests in dEQP are now working, but not the fragment_ops.depth_stencil. Still debugging these separately and will come up with a fix for them in another commit. Bug: angleproject:2443 Change-Id: I84c3a22f612fb6dcf30598434f96c2100fd29f9c Reviewed-on: https://chromium-review.googlesource.com/993654 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Luc Ferron a8af3a69 2018-03-29T14:44:24 Vulkan: Depth/stencil scissored clears - Generalize cmdClearAttachments to be able to clear depth/stencil/color individually. - The clear of the stencil part is implemented, but cant be tested until stencil state support is implemented in the next commit. Bug: angleproject:2427 Change-Id: Ib1fc7f66b2bd232761d374e217812605d3ff9152 Reviewed-on: https://chromium-review.googlesource.com/992874 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Luc Ferron <lucferron@chromium.org>
Jamie Madill 32fd63bc 2018-03-31T11:20:35 Vulkan: Use DrawCallParams in draw methods. This cleans up some of the vertex streaming logic. Bug: angleproject:2389 Change-Id: I8ed2f8acd06bbdd97db40acac35e5692112a3efe Reviewed-on: https://chromium-review.googlesource.com/989257 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Jamie Madill 0946393d 2018-04-04T05:26:59 Move Buffer Subject/Observer to front end. This makes BufferImpl into an Observer Subject. It also refactors the Vertex Array updates for the D3D11 backend use more of a dirty bit coding style. This change makes it so Buffer contents changes trigger front-end dirty bits from the back-end, which may be undesirable. Bug: angleproject:2389 Change-Id: Iac8ce1171284a86851c18cd1373ddf24fcefe40b Reviewed-on: https://chromium-review.googlesource.com/979812 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Olli Etuaho 59c5b897 2018-04-03T11:44:50 Validate gl_FragData and gl_FragColor access after parsing After this simply declaring both variables invariant is not treated as static use. This simplifies ParseContext a bit, but the effect on compiler performance tests seems marginal. BUG=angleproject:2450 TEST=angle_unittests Change-Id: Ib90cb1d2bd1331542d1cd37732f24efb7833036a Reviewed-on: https://chromium-review.googlesource.com/992112 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Jamie Madill bc54342b 2018-03-30T10:43:19 Vulkan: Make RenderTargetVk use ImageHelper. Bug: angleproject:2318 Change-Id: I9bc4bb7f5bcd3029a31c8570809f253cf5e4b12a Reviewed-on: https://chromium-review.googlesource.com/980773 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Luc Ferron <lucferron@chromium.org> Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Luc Ferron 62059a55 2018-03-29T07:01:35 Vulkan: Support for bools and bvec* uniforms - Also enables the dEQP tests for bools and bvec* Bug: angleproject:2442 Change-Id: Ib9ea017008293bf407bf7e5b5b881f376f226cd0 Reviewed-on: https://chromium-review.googlesource.com/985954 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 93edca16 2018-03-30T10:43:18 Vulkan: Add an Image helper class. This class wraps a lot of the common functionality of a vk::Image. It keeps an associated DeviceMemory and ImageView. Eventually we can probably merge this class with RenderTargetVk. We can also use it to implement the same functionality between Renderbuffer and Texture and abstract different storage types, like 2D and Cube. Bug: angleproject:2318 Change-Id: I39239f47b483cfb96290a15b06edd264f7f4bb34 Reviewed-on: https://chromium-review.googlesource.com/980772 Reviewed-by: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Luc Ferron <lucferron@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 6bc264ae 2018-03-31T15:36:05 Fix potential bad access in LinkProgram. This could happen when linking a program with missing attachments and shaders that have no compiled sources. Also re-enables the EGL program cache control tests, which were disabled due to a wrong extension name check. Bug: chromium:827158 Change-Id: I181f878093c6e3a4acc51552ade8e7c084733a3d Reviewed-on: https://chromium-review.googlesource.com/989262 Reviewed-by: Luc Ferron <lucferron@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Olli Etuaho 94bbed1e 2018-03-20T14:44:53 Collect static use information during parsing We now collect metadata for variables in the symbol table. The metadata is stored in a map using the variable unique id as a key, so we can store the variables themselves as constexpr while still having dynamic metadata. For now we collect whether a variable is statically read or written. This can be used to more accurately determine whether a variable is statically used, but can also enable more optimizations in the future, such as pruning variables that are never read or folding variables that are never written after initialization. The collection is done during parsing, so that nothing is pruned from the AST before the static use is recorded. Static writes are flagged in ParseContext::checkCanBeLValue, as that function is already called for all variables that are written. Static reads are flagged whenever there's an operation that requires a variable to be read. This includes: * Unary and binary math ops * Comma ops * Ternary ops * Assignments * Returning the variable * Passing the variable as an in or inout argument to a function * Using the variable as a constructor argument * Using the variable as an if statement condition * Using the variable as a loop condition or expression * Using the variable as an index * Using the variable as a switch statement init expression In case there are statements that simply refer to a variable without doing operations on it, the variable is being treated as statically read. Examples of such statements: my_var; my_arr[2]; These are a bit of a corner case, but it makes sense to treat them as static use for validation purposes. Collecting correct static use information costs us a bit of compiler performance, but the regression is on the order of just a few percent in the compiler perf tests. BUG=angleproject:2262 TEST=angle_unittests, angle_end2end_tests Change-Id: Ib0d7add7e4a7d11bffeb2a4861eeea982c562234 Reviewed-on: https://chromium-review.googlesource.com/977964 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Olli Etuaho 89398b65 2018-03-21T17:30:50 Avoid mangled name comparisons of 3-parameter functions The hash values used for looking up built-ins now encode whether the mangled name contains arrays, structs or interface blocks in its parameters list. This is written in the most significant bit of the hash value. We check this bit at the start of built-in lookup and if the bit is set we exit early. After that we know that the lookup name doesn't contain array, struct or interface block parameters. When we find a hash that matches a hash of a built-in function, we now know 3 things: 1) the length of the mangled name matches 2) the open parentheses in the mangled name matches 3) the lookup doesn't contain array, struct or block parameters. Additionally, we have an if statement checking whether the function name matches. Collisions are only possible with functions that 1) have the same name 2) have the same number of parameters With these preconditions we can check beforehand whether collisions are possible for 3-parameter functions. If there are no collisions, we don't need to compare the full mangled name. This is similar to what was already being done with functions that had 0 to 2 parameters. This reduces shader_translator binary size by around 4 KB on Windows. Besides increased complexity, the tradeoff is that an exhaustive search of hash values for possible 3-parameter combinations is costly, so the gen_builtin_functions.py code generation script now takes around one minute to run on a high-end workstation. Due to this, the script now exits early if it detects it has already been run with the same inputs based on a hash value stored in builtin_symbols_hash_autogen.txt. BUG=angleproject:2267 BUG=chromium:823856 TEST=angle_unittests Change-Id: I3ff8c6eb85b90d3c4971ac8d73ee171a07a7e55f Reviewed-on: https://chromium-review.googlesource.com/973372 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Frank Henigman 5d232d53 2018-04-01T19:57:19 Fix conditions for updating element array buffer. It was skipping elementArrayBufferOverride->onReadResource() if mCurrentElementArrayBufferResource was null. BUG=angleproject:2389 Change-Id: If33a11d35225daf572796abc8c18f6d6df758b48 Reviewed-on: https://chromium-review.googlesource.com/989408 Commit-Queue: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Luc Ferron <lucferron@chromium.org>
James Darpinian 30b604d8 2018-03-12T17:26:57 Check that transform feedback will not overflow its buffers. Also fix the check for uniform buffer size to use the actual buffer size instead of the size of the bound range. Bug: 820639 Change-Id: Iaa2a617ee7ce5ce7cfabbf64bd1d6f8c82c46b65 Reviewed-on: https://chromium-review.googlesource.com/965627 Commit-Queue: James Darpinian <jdarpinian@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Lingfeng Yang 5a7e61bb 2018-03-29T16:50:32 GLES1: glNormal3(f|x) BUG=angleproject:2306 Change-Id: I42834078b14aaa20c4d4e6b67c097c810f5a17a3 Reviewed-on: https://chromium-review.googlesource.com/987297 Commit-Queue: Lingfeng Yang <lfy@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Brandon Jones d104918f 2018-03-28T10:02:20 Refactor ANGLE Extensions Validation Refactors ANGLE Extensions Validation functions into a common format for future autogeneration. Any writes to output parameters that occurred within the ANGLE entry point have been moved into the corresponding validation function. Bug:angleproject:2263 Change-Id: I7a678310ad481c1379596a493fcb0b0383fcf3b8 Reviewed-on: https://chromium-review.googlesource.com/985244 Commit-Queue: Brandon1 Jones <brandon1.jones@intel.com> Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Nico Weber b33972d4 2018-03-30T07:57:13 Fix MSan report in HandleAllocatorTest.Reallocation [ RUN ] HandleAllocatorTest.Reallocation ==30439==WARNING: MemorySanitizer: use-of-uninitialized-value #0 0x1a11ef5 in gl::HandleAllocator::allocate() third_party/angle/src/libANGLE/HandleAllocator.cpp:83:9 #1 0x6643eb in (anonymous namespace)::HandleAllocatorTest_Reallocation_Test::TestBody() third_party/angle/src/libANGLE/HandleAllocator_unittest.cpp:75:42 Looks like a true positive, one of the ctors wasn't initializing a field. Change-Id: Id8a93fe6c9a6f1f01249235630981f4f0ac4a782 Reviewed-on: https://chromium-review.googlesource.com/987474 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Olli Etuaho b1de5a7e 2018-03-28T14:07:57 Prevent stack overflow due to recursive swizzle of an l-value Long chains of recursive swizzling could previously cause a stack overflow in checkCanBeLValue. Fold recursive swizzling when it is parsed to prevent this. BUG=angleproject:2439 TEST=angle_unittests Change-Id: I83b4c27442185709f6762d5ec23b93244010da05 Reviewed-on: https://chromium-review.googlesource.com/983593 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Yuly Novikov beafe1a8 2018-03-29T18:23:50 Skip ComputeShaderTest.groupMemoryBarrierAndBarrierTest on NVIDIA D3D11 BUG=angleproject:2280 Change-Id: If2469e037b197b5e54f8fadce7a5094c5d3159a2 Reviewed-on: https://chromium-review.googlesource.com/987015 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Yuly Novikov 5cf4d06c 2018-03-29T13:33:18 Further reduce number of uniforms in UniformsBenchmark.Run/gles_matrix Because Perf bots have Android K with worse driver than GPU.FYI Android L BUG=angleproject:2431 Change-Id: I9b7a7d34f64a9832c57f9d26573b7c63594e1773 Reviewed-on: https://chromium-review.googlesource.com/986653 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Lingfeng Yang a43994c9 2018-03-29T07:21:41 GLES1: glColor4(f|ub|x) BUG=angleproject:2306 Change-Id: I4a57732d4c470c821a3847a7ee012cf3ccbba197 Reviewed-on: https://chromium-review.googlesource.com/986454 Commit-Queue: Lingfeng Yang <lfy@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Luc Ferron 489243fb 2018-03-28T16:55:28 Vulkan: Add support for ivec* for uniforms - This also enables 93 dEQP tests to validate these. Bug: angleproject:2441 Change-Id: I1e0a749dde309788d7921e369cb35881c12c9a33 Reviewed-on: https://chromium-review.googlesource.com/985095 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Luc Ferron 2371acad 2018-03-27T16:03:03 Vulkan: Support for uniform arrays - Enable dEQP tests for uniform arrays - Fix the shader translator to support arrays - Fix for finding the uniforms location - Support get/set of uniform array values Bug: angleproject:2416 Change-Id: I7d0e9c602840ffb915f8ea3ba5d832d03bd74985 Reviewed-on: https://chromium-review.googlesource.com/984599 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Xinghua Cao 4733585d 2018-02-12T15:41:55 ES31_GLSL: support invocation and memory control functions Implement shader invocation control functions and shader memory control functions on D3D backend. BUG=angleproject:2280 TEST=angle_end2end_tests.ComputeShaderTest.ShaderInvocationAndMemoryControl Change-Id: I836c3abde35f19dd40a68cf82ae7c5417c551ab4 Reviewed-on: https://chromium-review.googlesource.com/911986 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Lingfeng Yang 96310cda 2018-03-28T11:56:28 GLES1: glClientActiveTexture + adds query for GL_MAX_TEXTURE_UNITS BUG=angleproject:2306 Change-Id: Ie89fa6a067551170856bf0f7e6d7b4452b3da132 Reviewed-on: https://chromium-review.googlesource.com/984894 Commit-Queue: Lingfeng Yang <lfy@google.com> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tobin Ehlis a3b220f3 2018-03-06T16:22:13 Vulkan: Adding null driver as device option Bug: angleproject:2159 Plumbing to allow VK Mock ICD to be selected as the Vulkan driver. Adding new ANGLE env var "ANGLE_VK_ICD_JSON" to point to json file of mock ICD in angle and use this to override Vk loader ICD search path. At Vulkan renderer initialization time, enable the Mock ICD if device is EGL_PLATFORM_ANGLE_DEVICE_TYPE_NULL_ANGLE. Default physicalDevice is still the first detected device. If Mock ICD is requested but not available, fall back to the first device that was detected. Added a VULKAN_NULL() testing config that uses Vulkan as renderer but NULL as device. Turned on Vulkan NULL testing for DrawCallPerf. Change-Id: I04e15c14e998448f8c98f9fd72e796389f297993 Reviewed-on: https://chromium-review.googlesource.com/961494 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Luc Ferron 8a02d3b5 2018-03-27T12:39:16 Vulkan: Enable depth render state dEQP tests Bug: angleproject:2430 Change-Id: Ia6fec6b622c7e235d041ec4e383a4ca2f1f191a3 Reviewed-on: https://chromium-review.googlesource.com/984898 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Luc Ferron <lucferron@chromium.org>
Frank Henigman 0af5b86a 2018-03-27T20:19:33 Return gl::Error from VertexArray::syncState(). No functional change. When we add vertex data format conversion to Vulkan we will need to be able to return an error from VertexArray::syncState(). BUG=angleproject:2405 Change-Id: I4b537946ecbb6593280b6510c5cd8d8e3c65e8dd Reviewed-on: https://chromium-review.googlesource.com/982897 Commit-Queue: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Luc Ferron <lucferron@chromium.org>
Olli Etuaho 3b678745 2018-03-21T12:59:19 Use a specialized hash function for mangled names The hash values used for looking up built-ins now encode the string length and the location of parentheses as six-bit values, so that we don't need to check for these if the hash matches. This decreases shader_translator binary size on Windows by around 10 KB. BUG=angleproject:2267 BUG=chromium:823856 TEST=angle_unittests Change-Id: If8c28e1c8851750633509ec6273f556e06e91cd1 Reviewed-on: https://chromium-review.googlesource.com/973243 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Geoff Lang 2231b4e0 2018-03-26T16:44:59 Add a FixedVector class to have "variable" size vectors on the stack. Wraps a std::array and a size parameter to give the std::vector interface without making allocations. BUG=angleproject:2435 Change-Id: I7df0be1310446a2f163766149bf631a8692be9ad Reviewed-on: https://chromium-review.googlesource.com/981267 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Geoff Lang 13e31bb0 2018-03-27T15:03:36 GL: Check framebuffer completeness before running blit shaders. Cube map destination textures may not be complete until all faces have been initialized. BUG=693090 Change-Id: I19816c9def3b9663491397cded5d24ca808a3f78 Reviewed-on: https://chromium-review.googlesource.com/982393 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Olli Etuaho 7b7d2e6a 2018-03-23T16:37:36 Remove createAssign: only called once This will make it easier to add tracking of static reads. BUG=angleproject:2262 TEST=angle_unittests Change-Id: I23e0587c022c45ac62434a2a0d8170e8978d1c24 Reviewed-on: https://chromium-review.googlesource.com/983916 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Geoff Lang 78c5eb2a 2018-03-28T11:40:19 Skip RobustResourceInitTestES3.MaskedStencilClearBuffer on Intel Mac. BUG=angleproject:2408 Change-Id: I5994b5ade3c533743c9fc52915aa1d5faca3dd8f Reviewed-on: https://chromium-review.googlesource.com/984292 Reviewed-by: Geoff Lang <geofflang@chromium.org>
Frank Henigman c7575da5 2018-03-27T21:19:42 Skip ReuploadingClearsTexture test on Mac. BUG=chromium:826576 Change-Id: If241e57480efe3aabfb30a2be453f05d45367e4a Reviewed-on: https://chromium-review.googlesource.com/982910 Commit-Queue: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Jamie Madill e858cb1d 2018-03-27T09:44:32 Split VAO dirty bits to speed iteration. Using > 64 bits (we had over 90) would use a much slower dirty bit iteration. Speed this up by splitting the dirty bits into two levels. The first top level only has a single dirty bit per attrib, per binding, and one bit for the element array buffer. The next level has separate dirty bits for attribs and bindings. The D3D11 back-end doesn't actually care about individual dirty bits of attribs or bindings, since it resets entire attributes at a time, but the GL back-end only refreshes the necessary info. Improves the score of a simple state change microbenchmark by 15% on the D3D11 and GL back-ends with a no-op driver. Real-world impact will be smaller. Also includes a test suppression for an NVIDIA bug that surfaced when we changed the order of that GL commands were sent to the driver. BUG=angleproject:2389 Change-Id: If8d5e5eb0b27e2a77e20535e33626183d372d311 Reviewed-on: https://chromium-review.googlesource.com/556799 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Luc Ferron feb87852 2018-03-22T13:41:25 dEQP: Enable depth/stencil backbuffer. This will make all the dEQP tests no longer return "not supported" when trying to do any depth/stencil work. With this comes a bunch of new tests suppressions to be able to proceed forward. Bug: angleproject:2425 Bug: angleproject:2426 Bug: angleproject:2427 Bug: angleproject:2428 Bug: angleproject:2429 Change-Id: I923026bb29c4ed1f4586b89176eea848fd2ceb71 Reviewed-on: https://chromium-review.googlesource.com/976339 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Frank Henigman b1d81fe2 2018-03-27T12:37:27 Vulkan: flush StreamingBuffer before unmap. Unmap does not flush, so we need to do it explicitly. BUG=angleproject:2436 Change-Id: Id102825b1329d97965f07b97c227214fa7524a0e Reviewed-on: https://chromium-review.googlesource.com/980927 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Luc Ferron <lucferron@chromium.org> Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
Luc Ferron 6ea1b416 2018-03-21T16:13:01 Vulkan: Reallocate only the right uniform descriptor set when needed Bug: angleproject:2421 Change-Id: Ibdd8beee8103062a566b8caa23cdd9b8ac35d3a8 Reviewed-on: https://chromium-review.googlesource.com/974105 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Lingfeng Yang 13b708f2 2018-03-21T12:14:10 GLES1: glAlphaFunc BUG=angleproject:2306 Change-Id: I0bf229d3ab8a4a1217c12b434dcd8fa67d7cbadc Reviewed-on: https://chromium-review.googlesource.com/973897 Commit-Queue: Lingfeng Yang <lfy@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Luc Ferron 7a06ac1b 2018-03-15T10:17:04 Vulkan: Dynamic update of uniforms - This change enables us to update uniforms indefintely using VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC descriptor types. - Enables 219 new dEQP tests in the uniform_api namespace. - Creates a new white box test to validate new buffer allocation. Bug: angleproject:2392 Change-Id: I8146e6104a6b7727f63265a4671577d251a8fca8 Reviewed-on: https://chromium-review.googlesource.com/965929 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Luc Ferron ba939718 2018-03-27T15:33:42 Revert "Vulkan: Enable depth and stencil dEQP tests" This reverts commit 15c7d0a6493a35ea3bb244654be4ab2faabc7599. Reason for revert: This change mixed with enabling the depth/stencil backbuffer here: https://chromium-review.googlesource.com/c/angle/angle/+/976339 causes the tests to fail. I will revert these for now and put it back in a new CL once I find the fix instead. Original change's description: > Vulkan: Enable depth and stencil dEQP tests > > This enables these tests for Vulkan: > dEQP-GLES2.functional.fragment_ops.depth.* > dEQP-GLES2.functional.fragment_ops.stencil.* > > Bug: angleproject:2430 > > Change-Id: I5c58821ac2f84ce9ae5a92b3024853e5b85ad41e > Reviewed-on: https://chromium-review.googlesource.com/981999 > Commit-Queue: Luc Ferron <lucferron@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> TBR=geofflang@chromium.org,jmadill@chromium.org,lucferron@chromium.org Change-Id: Ifeebd078c1cc70d90ea1923257777f711c13593e No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: angleproject:2430 Reviewed-on: https://chromium-review.googlesource.com/982132 Reviewed-by: Luc Ferron <lucferron@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Luc Ferron <lucferron@chromium.org>
Jamie Madill d7518622 2018-03-27T09:44:31 Buffer11: Refactor Subject/Observer pattern. Instead of having a direct/static observer distinction, add two messages for 'Contents Changed' and 'Storage Changed'. This makes Buffer11 itself the subject with two different message handling cases in the onSubjectStateChange methods. Bug: angleproject:2389 Change-Id: I645cd4b7cc7ce51cb7f48a01c7fc72939cbe89fe Reviewed-on: https://chromium-review.googlesource.com/957940 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Jamie Madill e403eef9 2018-03-27T09:50:00 D3D11: Add primitive type dirty bits. Bug: angleproject:1155 Bug: angleproject:2389 Change-Id: If410bc9e2ea97385def5d6a8a95d6bf6ea4c6a28 Reviewed-on: https://chromium-review.googlesource.com/948797 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Jiajia Qin 3988f34e 2018-03-16T16:38:33 ES31: Add DispatchCompute perf tests BUG=angleproject:2265 TEST=angle_perftests Change-Id: Iad93eb3e8339c8a766b25416b28102cc54d648b8 Reviewed-on: https://chromium-review.googlesource.com/967686 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jiawei Shao 385b3e03 2018-03-21T09:43:28 Use packed enums on shader types in ANGLE renderer This patch uses a packed internal enum ShaderType everywhere we need a shader type instead of the GLenum value of the shader type. This patch also uses program::getAttachedShader(type) everywhere we need to get gl::Shader from a program in ANGLE. BUG=angleproject:2169 Change-Id: I28a7fa1cfe35622c57a486932911110688eaadec Reviewed-on: https://chromium-review.googlesource.com/972844 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Luc Ferron 15c7d0a6 2018-03-27T07:23:09 Vulkan: Enable depth and stencil dEQP tests This enables these tests for Vulkan: dEQP-GLES2.functional.fragment_ops.depth.* dEQP-GLES2.functional.fragment_ops.stencil.* Bug: angleproject:2430 Change-Id: I5c58821ac2f84ce9ae5a92b3024853e5b85ad41e Reviewed-on: https://chromium-review.googlesource.com/981999 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jiawei Shao 84fdc62c 2018-03-19T12:56:22 Fix a compile error when ANGLE_D3D9EX == ANGLE_DISABLED This patch fixes a compile error when we specify ANGLE_D3D9EX as ANGLE_DISABLED by using "UNREACHABLE()" alone instead of using it as a parameter in "ASSERT". BUG=angleproject:2434 Change-Id: Ib995a951de31edcf49598a6720f677b5ec5bd855 Reviewed-on: https://chromium-review.googlesource.com/967685 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jiajia Qin <jiajia.qin@intel.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Geoff Lang 3cd48fff 2017-10-03T15:37:16 Implement robust resource initialization for OpenGL. BUG=angleproject:2107 BUG=angleproject:2407 BUG=angleproject:2408 BUG=693090 Change-Id: I6444f80f9703d6341f2ec67518050adc88f71d96 Reviewed-on: https://chromium-review.googlesource.com/678482 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Olli Etuaho daf120b4 2018-03-20T14:21:10 Clean up checkCanBeLValue Clarify the code so that it will be easier to add marking statically written variables here. BUG=angleproject:2262 TEST=angle_unittests Change-Id: I821bde29beb89e0f3b0f99dc187d2840f8cd0f9b Reviewed-on: https://chromium-review.googlesource.com/977963 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Ken Russell b9f92504 2018-01-27T19:00:26 Update stencil validation rules for WebGL Based on kbr's patch: https://chromium-review.googlesource.com/c/angle/angle/+/890605 Implements new rules in this revised WebGL conformance test: https://github.com/KhronosGroup/WebGL/pull/2583 BUG=chromium:806557 Change-Id: I84701dd7156f0bc4a45ba68e63cb962d2d54c2e5 Reviewed-on: https://chromium-review.googlesource.com/952567 Commit-Queue: Kai Ninomiya <kainino@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Olli Etuaho e79d0f86 2018-03-19T11:55:14 Rely on hash to check for some mangled name matches When we are looking up a function with only a few parameters, we can optimize the lookup by relying on the information encoded in the hash value. There's often only one list of parameters with the same function name and mangled name length that results in a matching hash, so we don't actually need to compare the full mangled name. We can just compare 1) the hash value of the mangled name 2) the mangled name length 3) the function name to make sure that the mangled name matches the mangled name of the function. This decreases the binary size since we don't need store as many mangled names of built-in functions. Effect on symbol lookup speed is marginal. BUG=angleproject:2267 BUG=chromium:823856 TEST=angle_unittests Change-Id: I3ef41d943209509d4e8e6ece14ebad7e2677abc6 Reviewed-on: https://chromium-review.googlesource.com/973242 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Olli Etuaho 44861c48 2018-03-23T14:36:39 Clarify aliasing rules in CHROMIUM_bind_uniform_location The CHROMIUM_bind_uniform_location spec previously had some conflicting information on when uniform location aliasing was allowed. Now the section on uniform location aliasing makes it clear that aliasing locations of two statically used uniforms is an error. This guarantees compatibility between different compiler versions that may treat a different subset of uniforms as active, depending on optimizations. It follows the spirit of GLSL ES 3.00.6 spec section 12.46, that has similar rules for attributes. The implementation is fixed to correctly follow the spec. When flattening uniforms, static use is tracked separately from activeness. BUG=angleproject:2262 TEST=angle_end2end_tests Change-Id: I570fd384064aec66ef0380a53fa01ac5e43eec5a Reviewed-on: https://chromium-review.googlesource.com/978144 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Geoff Lang a571f28d 2018-03-26T11:09:37 Check result of D3D11 map operation in Blit11::copyAndConvert. BUG=825503 Change-Id: I407ded1970266bc4fa975850d5700544b9f17b4b Reviewed-on: https://chromium-review.googlesource.com/980693 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Olli Etuaho 4d549932 2018-03-22T17:32:10 Move ReplaceVariable to tree_util directory This was overlooked earlier when most AST transform related utilities were moved to tree_util. BUG=angleproject:2402 TEST=angle_unittests Change-Id: I17d3716a434f80a9316156ca019ce49aada5c249 Reviewed-on: https://chromium-review.googlesource.com/975881 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Olli Etuaho 822a84b1 2018-03-23T12:30:18 Get builtin symbol info from the node in CollectVariables Since we now have a TVariable pointer in TIntermSymbol, we don't need to look up variables from the symbol table. BUG=angleproject:2267 TEST=angle_unittests Change-Id: Id09610ccec5898eb56dcc5e9112e173edcf7ac97 Reviewed-on: https://chromium-review.googlesource.com/977828 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Yuly Novikov 26ed93d7 2018-03-23T20:06:17 Reduce number of uniforms in UniformsBenchmark perf test To fit Nexus 5 limit. BUG=angleproject:2431 Change-Id: I2184a28c19ecadb8d7f2e8ba682fc6c4e382210e Reviewed-on: https://chromium-review.googlesource.com/979154 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Yuly Novikov ad4f9642 2018-02-08T17:58:46 Allow ANGLE libs to have arbitrary suffix. In order to work with tools which intercept EGL and GLES calls. BUG=angleproject:2343 Change-Id: I63aec7a56648dc4b3e7f4aff7f7d1608709ba118 Reviewed-on: https://chromium-review.googlesource.com/920652 Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Luc Ferron e6a40d07 2018-03-22T10:30:57 Vulkan: Depth / stencil attachments bug fixes I found a couple of bugs trying to enable polygon offset render states. This is just pre-work to get to a better state. Bug:angleproject:2353 Change-Id: If6af949a09af1340e870afb627ae427d01c6e77c Reviewed-on: https://chromium-review.googlesource.com/975631 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Luc Ferron 49cef9a5 2018-03-21T17:28:53 Vulkan: Support of A8 textures Bug:angleproject:2358 Change-Id: I56a86de7cc21dee00a95f1d054d2940262797ca7 Reviewed-on: https://chromium-review.googlesource.com/974305 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Luc Ferron <lucferron@chromium.org>
Jamie Madill d779f6a9 2018-03-23T01:44:33 D3D11: Refactor draw call functions. This allow for better code reuse for the Indirect draw calls. It also cleans up the InputLayoutCache to be only responsible for caching input layouts, and moves the logic for maintaining state into StateManager11. Bug: angleproject:2389 Change-Id: I84aae164bf1b94a394743cf58650adfdcfc2c17a Reviewed-on: https://chromium-review.googlesource.com/948796 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>