src


Log

Author Commit Date CI Message
Yuly Novikov e7e072ef 2018-04-19T15:06:30 Use EGL_KHR_no_config_context in Android GLES backend, when available Create ANGLE's real context with EGL_NO_CONFIG_KHR. This allows ANGLE to advertise EGLConfigs which previously were hidden due to incompatibility with ANGLE's context. Also enable EGLContextCompatibilityTest on ES2_OPENGLES to test this. BUG=angleproject:2468 Change-Id: I6fbbe01b4b93db7df39606980f0f58eb74b11e31 Reviewed-on: https://chromium-review.googlesource.com/1022088 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Yuly Novikov aecfa71b 2018-04-20T11:18:59 Print more logs 1. Really print WARN with default platform 2. Print UNREACHABLE, was getting lost because ~LogMessage was not reached BUG=angleproject:1660 Change-Id: I56fad24895adfec8d81539c6628e65ec2f9e7722 Reviewed-on: https://chromium-review.googlesource.com/1021592 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Geoff Lang 8ceea819 2018-04-10T03:07:13 Refactor packed enum generation to support EGL enums. Convert the very simple EGL texture type enum. BUG=angleproject:1618 Change-Id: Ieea382a282a8f2544f2982627e8445e6e5cea826 Reviewed-on: https://chromium-review.googlesource.com/1019386 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 7b19a49b 2018-04-20T09:31:52 Use LIKELY and UNLIKELY macros to wrap error generation. BUG=609673 Change-Id: I247f561712e30aa10bad77fabf614501d596915e Reviewed-on: https://chromium-review.googlesource.com/1021995 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Jamie Madill 629bb259 2018-04-20T11:01:33 Fix WebGL compat feedback loop null deref. This regressed in "Optimize ValidateDrawAttribs: Part 2." Bug: chromium:834943 Bug: angleproject:1391 Change-Id: I217719d76b0524ed7900e18bcc4ca1280ec7b6ff Reviewed-on: https://chromium-review.googlesource.com/1020280 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Luc Ferron 4bba74f0 2018-04-19T14:40:45 Refactor Texture::syncState to pass down the Context Also returning a gl::Error everywhere. Bug: angleproject:2478 Change-Id: Ic8cae0ee7aee318bb95b3588044c34c62707b578 Reviewed-on: https://chromium-review.googlesource.com/1020083 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Luc Ferron <lucferron@chromium.org>
Luc Ferron 3ec304db 2018-04-18T14:14:25 Vulkan: Support struct initializers in shaders Also adds a new test in GLSLTest to validate the initialization of a struct on the same line as its declaration. Bug: angleproject:2459 Change-Id: Ib37e20378f8ec76541db26392663bcba03390756 Reviewed-on: https://chromium-review.googlesource.com/1017340 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
Geoff Lang b0f917fa 2017-12-05T13:41:54 Fix being unable to request some extensions implemented in the GL layer. Some extensions are forced on in Context::initCaps even though the backend's native extensions do not mark the extension as supported. These extensions were not requestable because the Context::isExtensionRequestable only checks if the backend supports the extension. Make GL_OES_vertex_array_object requestable to cover the issue. BUG=angleproject:1523 Change-Id: Ie64df8e270924727ecf9cd3f993443abeb3ef658 Reviewed-on: https://chromium-review.googlesource.com/809197 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Geoff Lang 025aafdf 2017-10-30T15:16:37 Make EGL image extensions enableable. BUG=angleproject:1523 Change-Id: I6e890380bafb9f81595ab603996259fe6177e9e0 Reviewed-on: https://chromium-review.googlesource.com/744447 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang d54d3045 2017-11-07T14:56:07 Make EXT_texture_storage enableable. BUG=angleproject:1523 Change-Id: I55ef1233fb42e2dc3eda26c3aa4e14c700f98bf0 Reviewed-on: https://chromium-review.googlesource.com/756868 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang e24032a2 2018-03-28T15:41:46 The 'format' of unsized SRGB internal formats should be SRGB too. EXT_sRGB requires calling TexImage with SRGB as the 'format' parameter. This was causing issues when we would take an InternalFormat struct representing an unsized sRGB format and be unable to use it's format member to make GL calls without transforming it. BUG=693090 Change-Id: I8b9baf2591a998a0088e5275f42ffc568e37100d Reviewed-on: https://chromium-review.googlesource.com/984965 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Luc Ferron 1d97a4d0 2018-04-18T15:51:32 Revert "Fix dEQP renderbuffer unspecified attachment test." This seems to have caused a regression in Chrome. I'm reverting the change and suppressing the test that is failing on our end because of it. Once we can confirm this solves the problem, we'll need some help investigating further. This reverts commit c0db9addeaebc76c7cc99b26aa27df5e432097ac. Bug: angleproject:2321 Bug: chromium:833809 Change-Id: I5e40364217e15ae6117f5288a4754b25d983ca0a Reviewed-on: https://chromium-review.googlesource.com/1017763 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill eeec3b14 2018-04-16T11:00:03 dEQP: Add override for ES2 Color Clear Test. This test has a bug where the masked clear flag is not being set properly, leading to incorrect test behaviour and missing coverage. Until this bug is fixed in dEQP we can override it with a fixed version. Also remove a prior override that had an upstreamed fix. Bug: angleproject:2455 Change-Id: Ia2c57251b2a97eb5b4d8a4bdb0ce31796a66ea01 Reviewed-on: https://chromium-review.googlesource.com/1013859 Reviewed-by: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Luc Ferron <lucferron@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Lingfeng Yang abb09f12 2018-04-16T10:43:53 GLES1: Client vertex array pointer API glVertexPointer glNormalPointer glColorPointer glPointSizePointerOES glTexCoordPointer BUG=angleproject:2306 Change-Id: Id022b467ac998ea116130c5cec0c77afefb0dd4c Reviewed-on: https://chromium-review.googlesource.com/1014381 Commit-Queue: Lingfeng Yang <lfy@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 427064d2 2018-04-13T16:20:34 Fix perf regression with checkStatus. Returning an Error was costing us performance in extra error checks. This intead uses the Context to process the Error immediately, and returns a value from isComplete and checkStatus. Improves performance in draw call validation. Bug: chromium:822235 Change-Id: I0793fc690e86137425fed593d45083e40aee8db9 Reviewed-on: https://chromium-review.googlesource.com/1011370 Reviewed-by: Luc Ferron <lucferron@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 02c9c04f 2018-04-17T13:43:48 Optimize ValidateDrawAttribs: Part 2. This moves much of the math into cached values in the VertexAttribute and VertexBinding. Bug: angleproject:1391 Change-Id: I1b6c0553bf57fef864c27c5193c7dd7ca9b56f53 Reviewed-on: https://chromium-review.googlesource.com/1008274 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Luc Ferron fe22e23a 2018-04-16T14:15:11 Vulkan: Use SH_INITIALIZE_UNINITIALIZED_LOCALS in ShaderVk Re-enable the flaky test InitUninitializedStructContainingArrays that was failing because of this option missing. Bug: angleproject:2460 Change-Id: Icf794a5fdca48619756d575faa4cb04f0323712e Reviewed-on: https://chromium-review.googlesource.com/1014271 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Luc Ferron 0986f1cc 2018-04-16T13:47:23 Vulkan: Implement depth_range dirty bit and enable tests - Additional fix in GlslWrapper.cpp to remove the @@ markers for unused attributes. - Enables 28 dEQP gles2 tests in functional.depth_range.* Bug: angleproject:2454 Change-Id: I1a6f72d846b476ba681140d4b242208d24e18b95 Reviewed-on: https://chromium-review.googlesource.com/1014262 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Luc Ferron f1d3c20c 2018-04-16T07:44:27 Vulkan: Fix the issue with unused attributes / varyings When an attribute, a uniform or a varying isn't used, we now remove their layout and in/out qualifiers so that the shader can still refer to these var names. Bug: angleproject:2456 Change-Id: I5f1241d91bd46f663750adfab2562ef87ce69ae5 Reviewed-on: https://chromium-review.googlesource.com/1014009 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Luc Ferron ef2fda72 2018-04-18T07:44:14 Vulkan: Fix issue in GlslWrapper and maxVaryingVectors calculation (2nd try) The layout needed to also have a component qualifier so that the registerColumn wouldn't be ignored. Bug: angleproject:2460 Bug: angleproject:2483 Change-Id: I3adcd6208aca4afebd45311ded93d00087b60a99 Reviewed-on: https://chromium-review.googlesource.com/1016680 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Olli Etuaho 5804dc8e 2018-04-13T14:11:46 Refactor GL tests to use a shader library Instead of having the same simple shaders repeated over and over in the test code, reuse a single shader library. BUG=angleproject:2474 TEST=angle_end2end_tests Change-Id: I13f8ca8c0125e6d30f1761639bf8c3f69e0e77d2 Reviewed-on: https://chromium-review.googlesource.com/1012078 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Jamie Madill c90d4d38 2018-04-17T13:11:15 Fix problematic query in TOutputGLSLBase::visitDeclaration. There was an invalid derefernce that for some reason was not caught on the bots. Bug: angleproject:2456 No-Try: True Change-Id: I088e9671122fd25077027cb2eb577aa099fdcacf Reviewed-on: https://chromium-review.googlesource.com/1015287 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Luc Ferron <lucferron@chromium.org>
Jamie Madill c97e900c 2018-04-17T19:11:39 Revert "Vulkan: Fix issue in GlslWrapper and maxVaryingVectors calculation" This reverts commit 1d882aaa0720b0dee0e8fc807d93d0e3f3e6bc67. Sorry about this Luc. I think there was a missing suppression. You can even see a flaky failure in the CQ when you landed this - it seems the flakiness of the failure let it through. This is blocking another fix from landing which fixes the fact the CQ is on fire. The revert button is also missing from Gerrit which means this is a manual revert. Failures: https://ci.chromium.org/p/chromium/builders/luci.chromium.try/win_angle_rel_ng/361 Original CL Message: The layout needed to also have a component qualifier so that the registerColumn wouldn't be ignored. Bug: angleproject:2460 Bug: angleproject:2483 No-Try: True Change-Id: I84c38497fbda43d9defbc6d5d3ff0f9c133e6e46 Reviewed-on: https://chromium-review.googlesource.com/1015323 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill aed1b56a 2018-04-17T11:47:46 Prerequisite code for simpler GlslangWrapper. This makes two changes for the linking step: * allows symbol names in TOutputGLSLBase::writeVariableType * stores a list of inactive varying names in VaryingPacking Bug: angleproject:2456 Change-Id: Id651721a008c049508303d18c45c6b96c76114d9 Reviewed-on: https://chromium-review.googlesource.com/1014707 Reviewed-by: Luc Ferron <lucferron@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Luc Ferron 1d882aaa 2018-04-13T10:12:05 Vulkan: Fix issue in GlslWrapper and maxVaryingVectors calculation The layout needed to also have a component qualifier so that the registerColumn wouldn't be ignored. Bug: angleproject:2460 Bug: angleproject:2483 Change-Id: Ib5b15c4dc0ce42633f4994648f1eb22d8b63336a Reviewed-on: https://chromium-review.googlesource.com/1011680 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Luc Ferron <lucferron@chromium.org>
Luc Ferron e4c38be0 2018-04-17T11:09:16 Vulkan: clearRegionWithScissor did not determine the region correctly When the scissor region given was completely outside the renderArea, we were calling vkCmdClearAttachments with the unmodified rectangle. Instead, we just need to actually skip the clear call since there is nothing to clear if we have a scissor region outside the render area. Bug: angleproject:2484 Change-Id: If2c7c5b91e07081f1d2e4f4d8d13f8c8a842ea0b Reviewed-on: https://chromium-review.googlesource.com/1014958 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Lingfeng Yang 01074436 2018-04-16T10:19:51 GLES1: gl(Enable|Disable)ClientState + Introduce the GL_OES_point_size_array extension for point size array support. BUG=angleproject:2306 Change-Id: Ib1a60b7dcd0497eb807f0d3c80bc95b4748d9a96 Reviewed-on: https://chromium-review.googlesource.com/1014282 Commit-Queue: Lingfeng Yang <lfy@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Jamie Madill 86de76b6 2018-04-17T08:29:55 Vulkan: Suppress ClearIssue test. This test was flaky, the failure was missed on the CQ. Bug: angleproject:2484 Change-Id: Ic3c32bcd385620683e9a01acf37d62bbf3ca8797 Reviewed-on: https://chromium-review.googlesource.com/1014733 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Tobin Ehlis 41c43ce7 2018-04-16T08:42:56 Roll (2/2) to latest LVL as of 4/16/18 Moving to HEAD of LVL master on morning of 4/16/18. Made some updates to BUILD.gn to add use debug_utils files now instead of debug_report. Re-enable ANGLE Vulkan build. Bug: angleproject:2482 Change-Id: Ic2ab2a1cd7ecdba3152d433efcdbf427864e7e2b Reviewed-on: https://chromium-review.googlesource.com/1014258 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 0cb6dc4c 2018-04-16T10:36:39 Vulkan: Fix texture descriptor set alloc count. We were reserving half the required descriptor sets for our pool. This fixes the counting and ensures we won't regress by adding a test. Also enables the cube map texture sample, and removes an UNIMPLEMENTED warning that was spurious. Bug: angleproject:2318 Change-Id: I371cd7c5b42e1ce980cce7bb0ef04885db72b614 Reviewed-on: https://chromium-review.googlesource.com/1014165 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Luc Ferron <lucferron@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Jamie Madill 51af38b8 2018-04-15T08:50:56 Optimize ValidateDrawAttribs: Part 1. This moves several loop checks outside the loop, and uses more of the gl::AttributesMask class to do bitset operations instead of using checks and for loops. Bug: angleproject:1391 Change-Id: I90a1a7db550390ecd1402cf5a8a6677fd852b7b0 Reviewed-on: https://chromium-review.googlesource.com/1008273 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill a7be1f77 2018-04-13T15:16:26 Vulkan: Rename StagingStorage to PixelBuffer. This more closely matches the OpenGL "Pixel Buffer" concept. Bug: angleproject:2318 Change-Id: I930b24f68cde2995488737908aae469c86b74092 Reviewed-on: https://chromium-review.googlesource.com/1012456 Reviewed-by: Luc Ferron <lucferron@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Luc Ferron a4fa9c27 2018-04-13T07:00:56 Vulkan: drawElements with GL_LINE_LOOP and an offset Also enables a test in LineLoopTest that validates this case. Bug: angleproject:2473 Change-Id: Icb4c5735c11be40cdeceaa051f5a5cef33fd22c6 Reviewed-on: https://chromium-review.googlesource.com/1011669 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 20fa8d5c 2018-04-15T10:09:32 Vulkan: Implement cube map texture sampling. This changes the TextureVk class to have a queue of staging copies, instead of a single copy at a time. This will allow us to upload multiple sub regions of a texture image at once when we need to resolve the Image at sampling time. Enables the remainder of the texture.format tests, and all non-mipped tests in the texture.size tests. Also updates the expectations with the bug number for mipmap support. Bug: angleproject:2318 Change-Id: Ie55f8f2dc24d7b133ad735e37f0f78937f022b5b Reviewed-on: https://chromium-review.googlesource.com/980775 Reviewed-by: Luc Ferron <lucferron@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jiawei Shao 016105bb 2018-04-12T16:38:31 Store shader information in ShaderMap in class Program and Compiler This patch is the first one in the series of using ShaderMap as the container of the resources for each type of shader everywhere in ANGLE. This patch defines the new data structure ShaderMap and use it in class Program and Compiler in ANGLE front-end. The following work includes: 1. Use ShaderMap in D3D back-ends. 2. Use ShaderMap in Vulkan back-ends. BUG=angleproject:2169 Change-Id: I1c284d95f5a071c45bb468901eabc15694fffe38 Reviewed-on: https://chromium-review.googlesource.com/1011722 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Olli Etuaho 76b2c385 2018-03-19T15:51:29 Store invariant declarations in variable metadata This is simpler than storing the information in symbol table levels. Invariant declarations can only be present at the global scope, so storing the information per level is not required. BUG=angleproject:2267 TEST=angle_unittests Change-Id: Idb07d734950c8a0a8bda5b2380e181902f9eb633 Reviewed-on: https://chromium-review.googlesource.com/1007060 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Courtney Goeltzenleuchter 15215261 2018-04-11T12:14:55 Enable unneeded-internal-declaration compiler warning No longer have issues with unneeded internal declarations now that Tokenizer.cpp has been updated so re-enable compiler warning to catch future issues. BUG:angleproject:2451 Test: build Change-Id: I30daadc8c7374bcae753a7e69cb9a72855a1f548 Reviewed-on: https://chromium-review.googlesource.com/1007965 Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill bcef3224 2018-04-13T15:19:11 Move client attribs mask to front-end. The Vulkan and GL back-ends both had a client attributes mask. This consolidates them into the front-end, where it can also be used in the validation layer. Also includes a fix which was incorrectly setting the enabled mask in setVertexAttribFormatImpl. Bug: angleproject:1391 Change-Id: I5e45c1e2a56b30a36dec1482d170592c30a16d40 Reviewed-on: https://chromium-review.googlesource.com/1008272 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Luc Ferron <lucferron@chromium.org>
Yuly Novikov 1dc4414f 2018-04-13T13:39:23 Suppress self-assign warning in angle_deqp_decpp and angle_deqp_libtester Compiling dEQP with clang started failing after clang roll https://chromium-review.googlesource.com/1012028 BUG=chromium:832753 Change-Id: I532872a68c3c8d916c6bfd2b5370501746076193 Reviewed-on: https://chromium-review.googlesource.com/1012382 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Luc Ferron a912046d 2018-04-12T13:11:03 Vulkan: DrawElements with line loops client side memory support - Also enables 6 new tests in LineLoopTests.cpp in angle_end2end Bug: angleproject:2458 Change-Id: I4aec12b0ac780e81e6811f1199a5acaf17d9b982 Reviewed-on: https://chromium-review.googlesource.com/1010411 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Luc Ferron <lucferron@chromium.org>
Luc Ferron 983c429f 2018-04-10T13:05:45 Vulkan: Lineloops edge base bugfix and new tests The dynamic buffer we are using in the LineLoopHelper wasn't able to support switching between different allocation sizes. Fix this by simply using a min alignment of the maximum allocation size we can reach. Adds 2 new tests to validate these calls in StateChangeTest.cpp Bug: angleproject:2458 Change-Id: I9d224e7dcfcd7627010832ca30dd9e1b9eceea4e Reviewed-on: https://chromium-review.googlesource.com/1007335 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill cc129377 2018-04-12T09:13:18 ImageIndex: Consolidate layer/cube face. In terms of the Texture or Image resource, a cube face refers to a layer of a 2D texture. This layer has a special meaning for cube textures, but it is represented as a layer with a layer index. Cube array textures are no different, they just use a different indexing scheme for the array layers. This also cleans up the ImageIndex helper to have a class structure with private data, and cleans up a few cases to use generic Make functions and iterators where they were setting properties of the index directly. This will make it easier to have ImageIndexes address entire levels of a Cube map in the future, and makes the layer count logic in Vulkan cleaner. Bug: angleproject:2318 Change-Id: Iea9842e233f974a9896282ca224cb001f7882bd1 Reviewed-on: https://chromium-review.googlesource.com/987525 Reviewed-by: Luc Ferron <lucferron@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Courtney Goeltzenleuchter ed8d5ec7 2018-03-20T10:08:05 Add json build file generation gen_angle_gn_info_json.py can be used to generate a json description of the build for given targets. This information can then be used to generate build files for other tool chains (e.g. Android blueprint) Bug: angleproject:2418 Change-Id: Ief8f43e30ae1f469e3fcfa795306675e29a90a2f Reviewed-on: https://chromium-review.googlesource.com/967225 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Lingfeng Yang bb5ce5cc 2018-04-09T08:08:46 GLES1: Built-in matrix operations glRotate glTranslate glScale glFrustum glPerspective glOrtho BUG=angleproject:2306 Change-Id: Ia9321d52f5824ef7c15b56d94e23ff3b1fbc3151 Reviewed-on: https://chromium-review.googlesource.com/1002915 Commit-Queue: Lingfeng Yang <lfy@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Corentin Wallez 56c8577b 2018-04-06T16:31:47 TextureD3D_2D::CopyImage clear using initializeContents When using glCopyTexImage2D clearing of the mip level needs to happen when running in WebGL or robust resource init mode and any pixel would be sampled outside of the framebuffer. Previously the code was using "setImage" for this purpose, causing issues when a PIXEL_UNPACK_BUFFER was bound. Also add a regression test. BUG=chromium:827667 Change-Id: I03be20d8272730ab30afdab2f8919be853e729b6 Reviewed-on: https://chromium-review.googlesource.com/1000182 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Luc Ferron bfb5df15 2018-04-12T12:45:26 Vulkan: Suppress flaky test in GLSLTest on Windows Bug: angleproject:2460 Change-Id: I4dba274e29a147c3066848a729f37297951a7f77 Reviewed-on: https://chromium-review.googlesource.com/1010405 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Brandon Jones 416aaf95 2018-04-10T08:10:16 Autogenerate ANGLE extension entry points Modify autogeneration script to pull data from gl_ext.xml and generate entry_points_gles_2_0_ext_autogen.cpp/h as a replacement for entry_points_gles_2_0_ext.cpp/h Bug:angleproject:2263 Bug:angleproject:1309 Change-Id: Ie21079f8ec5f85c657b891f6d6d59306a4c3b5fe Reviewed-on: https://chromium-review.googlesource.com/1005409 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Luc Ferron c1e0268a 2018-04-11T11:02:55 Vulkan: drawArrays followed by drawElements bugfix Also add a test in StateChangeTest.cpp to validate the behavior. Bug: angleproject:2458 Change-Id: I58848772c0b4f71aaa3ee187778e49fa08e6800d Reviewed-on: https://chromium-review.googlesource.com/1007320 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Luc Ferron <lucferron@chromium.org> Commit-Queue: Luc Ferron <lucferron@chromium.org>
Jamie Madill a56467e0 2018-04-11T16:19:41 VertexArray: Use switch macro for faster iteration. Has a small but noticeable impact on performance on a microbenchmark. Seems to improve a synthetic score by about 1%. Should have a very small improvement in real-world performance. Note that the odd formatting is an idiosyncrasy of clang-format. Bug: angleproject:2389 Change-Id: I888bf101c6d8b80a0fbafdb9c5a84205c9c8fee6 Reviewed-on: https://chromium-review.googlesource.com/962963 Reviewed-by: Luc Ferron <lucferron@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Luc Ferron 6d5af92b 2018-04-09T14:37:15 Vulkan: Enable GLSLTest tests for Vulkan - Suppress tests that don't pass yet. Bug: angleproject:2460 Change-Id: I7c95ae9504a8d5e112fd9d1bb8536cc9bbf16e7b Reviewed-on: https://chromium-review.googlesource.com/1003099 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Luc Ferron <lucferron@chromium.org>
Luc Ferron 14f4817c 2018-04-11T08:43:28 Vulkan: Simplify viewport / scissor updates Stop tying the viewport and the scissor together. Instead, we simply use a very large (0->maxInt) scissor when scissor isn't enabled and we use the clipped scissor to the renderArea size when its enabled. Bug: angleproject:2443 Change-Id: If7454793a050b1833c7d3166ea6b380192085c8f Reviewed-on: https://chromium-review.googlesource.com/1006996 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 2dadd1d0 2018-04-11T09:25:18 D3D11: Fix inactive attrib VAO perf regression. In the case there are any dirty inactive attributes, we were continually invalidating the Vertex Buffer and Input Layout bindings. This fixes the invalidation to only happen when there are any dirty active attributes. This regressed in "Move Buffer Subject/Observer to front end." Bug: chromium:829906 Bug: angleproject:2389 Change-Id: I8ed616bb696e0be548344192037ad6cc6f9c595c Reviewed-on: https://chromium-review.googlesource.com/1006998 Reviewed-by: Luc Ferron <lucferron@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill c4f27e4b 2018-03-31T14:19:18 Texture: Pass ImageIndex to relevant methods. The Vulkan back-end will be using this helper struct, so make it available everywhere. This cleans up a lot of the code for D3D. Potentially in the future we could generate these in the entry points if we supported packing multiple arguments into one. Also changes a few parameter types to GLint for compatibility. Also updates the Vulkan Texture implementation check the stored vk::Format on setImage changes. Bug: angleproject:2318 Change-Id: I57cea4a42483ab51859229517d783b58f206b8e7 Reviewed-on: https://chromium-review.googlesource.com/985203 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Luc Ferron <lucferron@chromium.org>
Jamie Madill 22f12fed 2018-04-08T14:23:40 Vulkan: Rename vk::LineLoopHelper. This more closely follows the general pattern laid out by the naming in vk_helpers.h. It also changes the dynamic buffer that the helper wraps to be stored by-value since the header include order problem is fixed. Bug: angleproject:2318 Change-Id: I1de9e1edee2125d3afd490b4f9c99cf70c61215c Reviewed-on: https://chromium-review.googlesource.com/1001654 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Luc Ferron <lucferron@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
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>