Log

Author Commit Date CI Message
Jamie Madill 888081d5 2018-02-27T00:24:46 D3D11: Refactor dependent Framebuffer state changes. Previously, when a state change would cause a Texture to recreate its storage specific to D3D11, we would use a dependent notification from RenderTarget11 to Framebuffer11 to re-check internal dirty bits. In this new method, we instead set dirty bits on the gl::Frambuffer directly. This also means we use fewer internal objects for these notifications, because we share the same structures between the D3D11 back-end notifications and the top-level notifications we use for Robust init and Framebuffer completeness. This also allows us to get rid of one "if" that we check on every draw call in D3D11. This also introduces a dirty bits guard concept - a shadow set of dirty bits that is checked in dependent state changes to ensure that extra bits aren't set inside syncState. This also implements Framebuffer dirty bits for the D3D9 back-end. This has the side effect of cleaning up the "null colorbuffer" D3D9 workaround. Bug: angleproject:2372 Change-Id: Ie346d39030f4f6df583d735685b0babea4e745a8 Reviewed-on: https://chromium-review.googlesource.com/936691 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Olli Etuaho 92e4e079 2018-03-02T13:34:56 Test shader builtin accessibility from different stages Test that fragment, vertex or compute shader exclusive builtins are not accessible from another shader stage. This will protect against regressions when refactoring the symbol table. BUG=angleproject:2267 TEST=angle_unittests Change-Id: I50f97cbde3f1c5cb4584568e3008f1dab724b769 Reviewed-on: https://chromium-review.googlesource.com/941953 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Jeff Gilbert ff32734d 2018-02-22T18:20:37 Support EGLStream from B8G8R8A8_UNORM D3D11Texture. Mozilla bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1415754 BUG=angleproject:2368 Change-Id: Ic2c71b36e7b08560e158fd3dbf10b2fe225f1364 Reviewed-on: https://chromium-review.googlesource.com/935148 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jeff Gilbert 259b2977 2018-02-26T16:30:06 Move constructors may not be marked explicit. BUG=angleproject:2383 Change-Id: If22c7f7c15b7bbe89b859281b28c2b9695e34a1d Reviewed-on: https://chromium-review.googlesource.com/945415 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Olli Etuaho 28cf920e 2018-03-02T15:54:56 Fix checking texture function offset There was a mistake in one of the texture offset function names being checked. Fix it and add a test making sure that a similar mistake cannot slip in again. BUG=angleproject:2387 TEST=angle_unittests Change-Id: I2dddfbdc2836f9e7e94ca6573a8f3689eecf7eb2 Reviewed-on: https://chromium-review.googlesource.com/946254 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Olli Etuaho e765e215 2018-03-01T12:00:48 Test that ESSL 300 standard derivatives compile successfully These functions have the same name in the ESSL 100 extension, creating a possibility for conflicts. This adds a convenient way to test for regressions when refactoring the symbol table. BUG=angleproject:2267 TEST=angle_unittests Change-Id: I9716524a0ea85064ba5f3ee8e7adfbdfc59d257e Reviewed-on: https://chromium-review.googlesource.com/945989 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Olli Etuaho 437664b4 2018-02-28T15:38:14 Clean up TSymbolTable entry points TSymbolTable API can be cleaned up further now that we have separate logic for inserting builtins and user-defined symbols. BUG=angleprojec:2267 TEST=angle_unittests Change-Id: I7a228891ecdf4696e50868b9e7dfc2a50b5d8e92 Reviewed-on: https://chromium-review.googlesource.com/941301 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Yuly Novikov b7d14586 2018-03-01T18:07:41 Update dEQP EGL expectations BUG=angleproject:2341,angleproject:2382 Change-Id: I5bcc0938e2d86165022cc80afda6b11c801ef5ed Reviewed-on: https://chromium-review.googlesource.com/944711 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Olli Etuaho d6fef528 2018-03-01T13:41:13 Shorten mangled names of types This will reduce binary size by a few kilobytes once we store mangled names of functions as constexpr strings. This still keeps mangled names human readable. BUG=angleproject:2267 TEST=angle_unittests Change-Id: Ia63980bd511c701a93e2c5e247d24578c7d7f332 Reviewed-on: https://chromium-review.googlesource.com/943101 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Frank Henigman 98e6a5f7 2018-02-28T15:47:13 Add missing #include. Would not compile locally on Linux without adding #include <algorithm>. BUG=none Change-Id: I2f817faf681234c0e7eeeda0ad837e8285d9071a Reviewed-on: https://chromium-review.googlesource.com/941613 Commit-Queue: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Luc Ferron <lucferron@chromium.org>
Jamie Madill d444255a 2018-02-27T22:03:47 Refactor signal utils into Observer pattern. These types were over-generalized. All use cases featured arrays of resources attached to single parent resources. The channel ID is sufficient to identify the child resource in the parent, and having variadic template arguments wasn't necessary. Futhermore we can rename these types to use the common Observer pattern. This should make them more readable to new developers. Also update some classes to inherit from Subject instead of having a member Subject. This cleans up the code in a few places. This should lead to a simpler refactor to allow dependent dirty bits notifications in the Vulkan back-end. In the following patch the signal_utils files will be renamed. They are not renamed in this patch to ensure git history is preserved. Bug: angleproject:2372 Change-Id: I17a3f2c8d92afd4bb3cba2d378c3a2e8a6d7fb11 Reviewed-on: https://chromium-review.googlesource.com/936690 Reviewed-by: Luc Ferron <lucferron@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Yunchao He 2f3a0dc5 2018-02-27T22:39:44 Report INVALID_VALUE if width/height of invalidateSubFramebuffer is negative. BUG=angleproject:2376 TEST=dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer.invalidate_sub_framebuffer Change-Id: Ie1ca30f29d7583c86130f46d4e6b5c7211eee63a Reviewed-on: https://chromium-review.googlesource.com/938367 Reviewed-by: Jiawei Shao <jiawei.shao@intel.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Frank Henigman a8e868f2 2018-01-28T23:32:25 Vulkan: use correct vertex stride. It was passing the attribute size, not the stride, so it worked only when they were the same. Enable corresponding tests. BUG=angleproject:2310 Change-Id: Ie3ab13567c16c302aa9aeda5d059e5fd4eb92b4e Reviewed-on: https://chromium-review.googlesource.com/875304 Commit-Queue: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Frank Henigman 640fa5dc 2018-02-22T17:03:15 Enable more of AttributeLayoutTest. Enable more parts of AttributeLayoutTest because: - partial Vulkan support for vertex data in client memory has landed - we can work around bugs which prevented some parts from working - we have more fine-grained control over which parts to run Avoid glBufferSubData to work around ANGLE bug 2374. Let subclasses decide about skipping test cases. For example on Vulkan indexed draw with vertex data in client memory is not supported yet. BUG=angleproject:1683 Change-Id: Id073334299bd1a642b2518ccb3c47ebd8ff010d9 Reviewed-on: https://chromium-review.googlesource.com/933943 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
Luc Ferron 360098d5 2018-02-21T07:33:50 Vulkan: Implement GL_LINE_LOOP support for non-indexed draw calls Line loops aren't supported in Vulkan directly, so we use line strips with an indexed buffer to emulate them. To hide the complexity of that, I've created the LineLoopHandler class in vk_utils. Bug: angleproject:2335 Change-Id: Id3e020d27e5265565e61e96d3fd0187c4fe2b152 Reviewed-on: https://chromium-review.googlesource.com/931421 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Qin Jiajia 339f65bb 2018-02-27T12:52:48 ES31: Fix incorrect initialization for indexed atomic counter buffer BUG=angleproject:1729 TEST=dEQP-GLES31.functional.state_query.indexed.atomic_counter_buffer_binding_getbooleani_v Change-Id: I3f6975ecc0e69f487f66ff65d613307fcaa6eb08 Reviewed-on: https://chromium-review.googlesource.com/939106 Reviewed-by: Jiawei Shao <jiawei.shao@intel.com> Reviewed-by: Yunchao He <yunchao.he@intel.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Qin Jiajia aef92166 2018-02-27T13:51:44 Move the early-return case of zero mask to Context::blitFramebuffer When the mask is zero, no buffers are copied in BlitFramebuffer. But we still need to check all the error situations. So mask of zero should be put in blitFramebuffer not the validation file. Meanwhile, we adjust the checking sequence to pass the deqp case. BUG=angleproject:2375 TEST=dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer.blit_framebuffer Change-Id: I73c78ffb8853153f70fc30e8ae0e704e08e454ac Reviewed-on: https://chromium-review.googlesource.com/938573 Reviewed-by: Jiawei Shao <jiawei.shao@intel.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 06a87ec8 2018-02-25T22:07:27 Vulkan: Fix offsets in BufferVk::setDataImpl. We were using a src offset instead of a dest offset. The staging buffer should always start at the zero offset, while the dest buffer (the real buffer) should use the offset argument to Buffer*Data. Bug: angleproject:2374 Change-Id: I9ee702709d9c15945935f4eae25f308b71e0d1e8 Reviewed-on: https://chromium-review.googlesource.com/937022 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Jiawei Shao d063affa 2018-02-22T10:19:09 ES31: Add link validation on geometry shader varyings This patch adds the link validation on geometry shader varyings. According to SPEC, geometry shader inputs should not be treated as arrays for the purpose of interface matching. This patch also moves the checks on fragment input bindings into a single function. BUG=angleproject:1941 TEST=angle_end2end_tests dEQP-GLES31.functional.shaders.linkage.es31.geometry.varying.* Change-Id: Ib3ca64e28683e9688edc9432d43ff5a70c86117e Reviewed-on: https://chromium-review.googlesource.com/929866 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Jeff Gilbert 85f0b5ea 2018-02-23T15:23:21 Allow EGL_EXPERIMENTAL_PRESENT_PATH_FAST_ANGLE with EGL_PLATFORM_DEVICE_EXT. Mozilla bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1395107 BUG=angleproject:2370 Change-Id: Id0c0cecbe14c1c0a1b3de18b0ccf70d00af81a80 Reviewed-on: https://chromium-review.googlesource.com/935454 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jiawei Shao 6ae51611 2018-02-23T14:03:25 ES31: Add missing checks for querying GL_COMPUTE_WORK_GROUP_SIZE This patch adds missing checks for querying GL_COMPUTE_WORK_GROUP_SIZE by glGetProgramiv. When querying GL_COMPUTE_WORK_GROUP_SIZE, an INVALID_OPERATION error should be generated when this program hasn't been linked successfully or it doesn't contain any objects to form a compute shader. BUG=angleproject:2324 TEST=angle_end2end_tests dEQP-GLES31.functional.debug.negative_coverage.get_error.compute.invalid_program_query Change-Id: I13dcebef8a0abede5c18a038d4cf915ee4164e2e Reviewed-on: https://chromium-review.googlesource.com/933627 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Geoff Lang b52fac03 2018-02-21T15:45:35 Refactor ImageIndex to have separate type and target members. BUG=angleproject:2169 Change-Id: Ib3fb699058f76d0eb810a9691ea1d64311dadbb1 Reviewed-on: https://chromium-review.googlesource.com/929650 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Yunchao He bacaa714 2018-01-30T14:01:39 ES31: support stencil texture via DEPTH_STENCIL_TEXTURE_MODE. BUG=angleproject:2373 Change-Id: I5edd9db6ef6101b0ad75f71fdcdfbb1261100583 Reviewed-on: https://chromium-review.googlesource.com/936421 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Olli Etuaho c4bd0ac9 2018-02-22T16:29:32 Add 32-bit hash helper to ImmutableString Since the length of the hash is known prior to compilation, it can be compared with script-generated hashes. BUG=angleproject:2267 TEST=angle_unittests Change-Id: Ia0a78dfd450c4ea2d526da7f3495b9750dcbd1af Reviewed-on: https://chromium-review.googlesource.com/931884 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Olli Etuaho 2f7c04a3 2018-01-25T14:50:37 Clean up unnecessary use of TString TString was being used in some places where it was not really needed. Clean these up. BUG=angleproject:2267 TEST=angle_unittests Change-Id: Ib7fd26f9c6b6b885433c840a9520393908f1f902 Reviewed-on: https://chromium-review.googlesource.com/887068 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Olli Etuaho 3582c0e2 2018-02-22T14:38:09 Add a test for redefining an unavailable built-in This is going to guard against regressions when symbol table init is optimized. TEST=angle_unittests BUG=angleproject:2267 Change-Id: Iec7b9814f4af215dc0b3e8a39c8cfab004451836 Reviewed-on: https://chromium-review.googlesource.com/931883 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Jeff Gilbert 81aa15f1 2018-02-22T18:22:52 Test `EGL_OPENGL_ES3_BIT_KHR` against `rendererType`, not `conformant`. Mozilla bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1415754 BUG=angleproject:2369 Change-Id: I99cae322eb70ea3920eb296fd590abccded6dab4 Reviewed-on: https://chromium-review.googlesource.com/935149 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jiawei Shao 3c43b4d1 2018-02-23T11:08:28 Fix incorrect conversion in ConvertToGLint This patch fixes a bug in function ConvertToGLint. This function should convert ParamType into GLint instead of GLenum. This patch can fix the bug that no errors are generated when trying to set negative base level or max level by glTexParameteri because ConvertToGLint always incorrectly converts a negative integer into an unsigned integer in ValidateTexParameterBase. BUG=angleproject:2371 TEST=angle_end2end_tests dEQP-GLES31.functional.debug.negative_coverage.get_error.texture.texparameter* Change-Id: Id5baf3430ae574a083bcc40a7a8f7db1cb2d07ed Reviewed-on: https://chromium-review.googlesource.com/933923 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jiajia Qin <jiajia.qin@intel.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jeff Gilbert 20c46284 2018-02-22T18:18:01 Make OpenSharedResource() call become fallible in SwapChain11::resetOffscreenColorBuffer(). Mozilla bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1415754 BUG=angleproject:2367 Change-Id: I69a75c38c6811752df6da9c3cba5901c9d8ab8c4 Reviewed-on: https://chromium-review.googlesource.com/935281 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jeff Gilbert ad661940 2018-02-22T18:15:45 Remove unused include of math.h in matrix_utils.h. BUG=angleproject:2366 Change-Id: Ic398da0b86caef577140808a87fcc2e74ed28dc0 Reviewed-on: https://chromium-review.googlesource.com/935144 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Qin Jiajia a4ef843f 2018-02-22T16:02:24 ES31: Fix incorrect error code in DispatchComputeIndirect INVALID_VALUE error should be generated not INVALID_OPERATION if indirect is not a multiple of the size, in basic machine units, of uint. Meanwhile, we put the validation of indirect before indirect buffer so that the corresponding deqp cases can pass. BUG=angleproject:2324 Change-Id: I223ec1893a6dd613f84e51a98f02d5f79482952f Reviewed-on: https://chromium-review.googlesource.com/929900 Reviewed-by: Jiawei Shao <jiawei.shao@intel.com> Reviewed-by: Yunchao He <yunchao.he@intel.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Qin Jiajia 76bf01d7 2018-02-22T14:11:34 Fix that readonly buffer variable can be assigned This change will add memory qualifier checking for binaryNode in case the memory qualifier information is lost. BUG=angleproject:1951 TEST=angle_unittests Change-Id: I3f0cfd7d8a059753cf3c982ee0a977b4b0fd0128 Reviewed-on: https://chromium-review.googlesource.com/929877 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jiawei Shao e41df655 2018-02-09T14:31:39 ES31: Add shader version check for CS and GS This patch adds the missing check on the shader version for compute and geometry shaders, which can fix a bug that ANGLE GLSL compiler doesn't report a compile error when compiling an empty compute or geometry shader in version 100 or 300. This patch also updates the original compiler tests on the check of shader version. In these tests, the compile errors are all caused by illegal layouts instead of shader versions, which is against the purpose of the tests. This patch also fixes an incorrect case that used an empty compute shader in version 300. BUG=angleproject:1442, angleproject:1941 TEST=angle_unittests Change-Id: Ic26bb8eb312dbc0cec6a879997d0ae7a2e625a0f Reviewed-on: https://chromium-review.googlesource.com/910715 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Olli Etuaho f7f0b8c3 2018-02-21T20:02:23 Rename operator enums so they can be autogenerated Camel casing is removed from the enums where it differs from the GLSL spec. This way it's easier to autogenerate code for built-in functions mapped to operators. BUG=angleproject:2267 TEST=angle_unittests Change-Id: I2490d5d0e8ffb45eba343f225f76779e63381a65 Reviewed-on: https://chromium-review.googlesource.com/929361 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Olli Etuaho 7c8567a3 2018-02-20T15:44:07 Always add most extension symbols to symbol table An error will be generated either way if the extension symbols are used incorrectly since each use of an extension function or variable checks whether the extension is enabled. We now also track extension in unmangled built-in names, so that redefining built-ins of extensions that are not enabled can be supported. This includes refactoring the shader extension tests to share a common helper class ShaderExtensionTest. BUG=angleproject:2267 TEST=angle_unittests Change-Id: I9cc5e9bd62fa07796e69256a6a9a493531a62446 Reviewed-on: https://chromium-review.googlesource.com/926526 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Geoff Lang a953b527 2018-02-21T16:56:23 Avoid possible overflow when computing ReadPixels bounds. BUG=809881 Change-Id: I69c58c93597aea5a5c25298908592ce1ab4a957b Reviewed-on: https://chromium-review.googlesource.com/929984 Reviewed-by: Luc Ferron <lucferron@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
JiangYizhou 1dce1bd3 2017-12-06T10:25:40 Add test case to catch depth stencil buffer bug on Intel windows Rendering with depth buffer disabled and stencil buffer enabled leads to memory leak if we set viewport a large size on Intel windows platforms. Add an end2end test case to catch this driver bug. TEST=DepthStencilFormatsTestES3.DrawWithLargeViewport/ES3_D3D11 BUG=782317 Change-Id: I16efb9459717e94e2edb5d5eb5dc24f47d746ea3 Reviewed-on: https://chromium-review.googlesource.com/858430 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Frank Henigman 24842908 2018-02-02T01:21:12 New test for vertex attribute arrangements. Test various ways of organizing attributes: in memory or buffer object, sequential or interleaved. Test different types of vertex data. Test non-indexed draw, indices in buffer, indices in memory. Test starting at vertex zero and higher. BUG=angleproject:1683 Change-Id: I54a752679b31bbb3f573c922d59da69a18302daa Reviewed-on: https://chromium-review.googlesource.com/898608 Commit-Queue: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Frank Henigman df4b6316 2018-01-18T18:22:19 Vulkan: Add unmap in BufferVk::getIndexRange. There was a map() without a corresponding unmap(). Add a test which does multiple indexed draws, triggering the problem. BUG=angleproject:2310 Change-Id: Id33d66f24de2005ec3f9958d33ab4c2630b49dc5 Reviewed-on: https://chromium-review.googlesource.com/875318 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
Jamie Madill 8d986bf2 2018-02-21T08:28:01 Fix missing include files visible to GN. This should also fix the VS project generation. Thanks to Jeff Gilbert from Mozilla for sharing a list of missing files. Bug: angleproject:2360 Change-Id: Ideab28a0169cd7aabb6a7bd3aac3a5832443f023 Reviewed-on: https://chromium-review.googlesource.com/922874 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 1f46bc12 2018-02-20T16:09:43 Vulkan: Add CommandGraph class. This also renames CommandBufferNode to CommandGraphNode. It also renames some of the intenal members to more closely represent the tree relationships (parents/children). This should clean up the command graph classes and make them a bit easier to understand. Bug: angleproject:2361 Change-Id: I024bffcc7f4157c78072ef902a3c40a07a08b18a Reviewed-on: https://chromium-review.googlesource.com/922121 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill e703c606 2018-02-20T10:21:48 Add gl::RenderbufferState shared state helper. This shared state will be read-only visible in the RenderbufferImpl class. It mirrors existing structs for Textures, Buffers, and other classes. It allows the implementation class to have a read-only view as to the current GL state of an object. This will be useful to the Vulkan back-end, which would like to know the current Renderbuffer state before having to redefine the storage. If the current parameters match, it might not have to redefine the storage at all. The solution involves passing around the gl::RenderbufferState through various factory methods. Also name the Renderbuffer implementation pointer consistently and make it use std::unique_ptr. Bug: angleproject:2347 Change-Id: Ied6e0358e24e74a7fedbe4aea692edee909b5838 Reviewed-on: https://chromium-review.googlesource.com/922457 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang f81d17c2 2018-02-02T15:10:37 D3D11: Downsample when copying to emulated 16-bit texture formats. BUG=angleproject:2313 Change-Id: Ic1e679164d82f3024bb6842c9af2716aa10feb76 Reviewed-on: https://chromium-review.googlesource.com/900042 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 795d741a 2018-02-20T12:28:25 Add empty file to prevent git clean from deleting the tools folder. Bug: angleproject:1569 Change-Id: Ic0161260e1c19fb660be06cd5a844f9031a77ef0 Reviewed-on: https://chromium-review.googlesource.com/926863 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Geoff Lang 5f3047c5 2018-02-14T14:39:12 StateManagerGL: Use dirty bits for VAO bindings. Delay binding the VAO in VertexArrayGL::syncDrawState until we actually need to make glVertexAttrib calls. BUG=angleproject:2188 Change-Id: Ib7d22d641c9f19c639ba8c596bff6bc7de952e7f Reviewed-on: https://chromium-review.googlesource.com/919503 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Luc Ferron <lucferron@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Corentin Wallez 3f4b87b4 2018-02-16T17:12:19 Expand the EGLIOSurfaceClientBufferTests This expands the test to check for validation errors and that multiple formats of IOSurfaces can be read from / rendered to. It fixes a couple issues in the implementation of the extension too. Minor fixes in the EGL_ANGLE_iosurface_client_buffer extension text. Fix a fragile test that was not setting the texture unit a shader is to sample from. BUG=angleproject:1649 Change-Id: Ied2a9bfff95cb3a9a7a59008260899eb2fc55575 Reviewed-on: https://chromium-review.googlesource.com/924477 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Olli Etuaho 029e8ca7 2018-02-16T14:06:49 Add a constexpr constructor for TFunction Access to TFunction parameters is now handled through two new members: a pointer to a parameter array and a parameter count. There's still also a vector pointer in TFunction for adding function parameters one by one. This is used when parsing user-defined functions. TEST=angle_unittests BUG=angleproject:2267 Change-Id: I86987ae56b7cf37f010d0651e9861789050aec2b Reviewed-on: https://chromium-review.googlesource.com/923987 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Olli Etuaho 697bf65c 2018-02-16T11:50:54 Avoid redundant symbol lookup when parsing functions The lexical phase looks up symbols when it encounters an identifier. Instead of duplicating this work when parsing non-constructor functions, we now store the symbol looked up in the lexical phase in TFunctionLookup. This improves scores of the real world shader compiler perf test by 1-2%. BUG=angleproject:2267 TEST=angle_unittests Change-Id: Idc99776571313d8b654910f9daaf9bf34a048228 Reviewed-on: https://chromium-review.googlesource.com/923725 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 9fdaa497 2018-02-16T10:52:11 Don't no-op draw calls for zero count in validation. Make the no-op happen in the Context, so we can properly generator more errors for negative WebGL tests. Some validation tests still need to check for no-ops, such as range checks. BUG=angleproject:2050 Change-Id: I48d0b3cf640f7f128679600e5df108146cfd6348 Reviewed-on: https://chromium-review.googlesource.com/522869 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Jamie Madill 0cbfa586 2018-02-15T14:45:41 Vulkan: Implement basic Renderbuffer attachments. Creating an ImageView for color Renderbuffers allows us to render to them in a RenderPass. We will also need additional functionality to support depth/stencil Renderbuffers. Bug: angleproject:2347 Change-Id: I5d4f7d8242ad4fbca38cb08c0cf6b43edca57c8f Reviewed-on: https://chromium-review.googlesource.com/922456 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Olli Etuaho e80825ef 2018-02-16T10:24:53 Simplify built-in function node initialization Built-ins with no math op associated with them now have the op code EOpCallBuiltInFunction set. This makes initializing built-in function nodes simpler, since they can always get the op code from the function symbol. We also no longer look for functions in inner scopes, only from the global scope and from built-in functions. BUG=angleproject:2267 TEST=angle_unittests Change-Id: I55a2642f34bb3c8b8f13183c95fa509ec3b9cfdb Reviewed-on: https://chromium-review.googlesource.com/923724 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Frank Henigman 17448956 2017-01-05T15:48:26 Vulkan: vertex attributes in client memory. Support vertex data stored in client memory passed to glVertexAttribPointer. Only GL_FLOAT data is supported at this time. Includes a simple test. BUG=angleproject:1683 Change-Id: I3bc0cdefe02b02c046b0e85822019a0f1762235e Reviewed-on: https://chromium-review.googlesource.com/425137 Commit-Queue: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Nico Weber b66de58f 2018-02-15T14:02:33 Mark third-party code in ANGLE as no_chromium_code. That way, we don't have to explicitly disable Wimplicit-fallthrough for these targets, and when we add new warnings to chromium_code in the future, these targets won't need any special attention. Like https://chromium-review.googlesource.com/c/chromium/src/+/905222 Bug: 807632 Change-Id: I3a605dd3ef9ed7d8cfe9e36964c3433040bfc330 Reviewed-on: https://chromium-review.googlesource.com/922503 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Nico Weber <thakis@chromium.org>
Jamie Madill d7ebfb92 2018-02-15T16:34:29 Add missing is_fuchsia to system_utils selection. This fixes a build break because of 046fa0efc44d3ac5d. See: https://crrev.com/c/898591 Bug: angleproject:2333 Change-Id: I6a4cb60dd2d2958ea71aaa27f1429233c2787fb4 Reviewed-on: https://chromium-review.googlesource.com/922878 Reviewed-by: Scott Graham <scottmg@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill f618c9e5 2018-02-15T14:45:40 Vulkan: Add depth/stencil surfaces. This change lets us create egl::Surfaces from a D24S8 config. This is a bit hacky, because the spec only mandates 24 -or- 32 bit depth support, but not both or either individually. Will need follow-up work for proper EGL config setup. A single depth buffer is allocated for the entire set of swapchain images and is used with each. This also might be a problem if we're rendering to multiple frames at the same time. We'll likely have to revisit this in the future as well. This adds a new RenderTargetVk to the SurfaceVk class which points to the Depth/Stencil image. Since ImageViews must refer to either the depth or stencil, but not both, we'll need to address this when we get to implementing depth/stencil texture reads in shaders. Bug: angleproject:2357 Change-Id: Ibed0eed7e1d0efb272758dbfc79fa2c5aa93997f Reviewed-on: https://chromium-review.googlesource.com/919761 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Olli Etuaho b92f92a7 2018-02-15T19:14:59 Clean up dead insertion of unmangled symbols Unmangled names of built-ins are not inserted to the symbol table in a normal way, so the function to do that is not needed. BUG=angleproject:2267 TEST=compile ANGLE Change-Id: I68bae9a1f762ecc69ab31f04458a38c941b9d74c Reviewed-on: https://chromium-review.googlesource.com/922202 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Nico Weber b5db2b49 2018-02-12T15:31:56 Enable -Wimplicit-fallthrough for ANGLE. Also teach MSVC that ANGLE_CRASH() can't return. Also fix instances of the warning in build configurations where UNREACHABLE() can return (e.g. release without dcheck_always_on or debug). If the UNREACHABLE()s are truly unreachable, this change has no behavior change. Bug: chromium:810767 Change-Id: I68f3587cf3e268c3ef634dce7ae3d70399859d0f Reviewed-on: https://chromium-review.googlesource.com/914842 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Nico Weber <thakis@chromium.org> Commit-Queue: Nico Weber <thakis@chromium.org>
Lingfeng Yang 4edce336 2018-02-14T19:01:31 GLES1: macOS: Add rpath to libGLESv1_CM.dylib This is to fix error messages when running GLES1 samples (and probably other apps) from different directories than the same one as where libGLESv1_CM.dylib is located. BUG=angleproject:2306 Change-Id: I24ab33eb1bc805c1e64efab9a0acbfcf10480d94 Reviewed-on: https://chromium-review.googlesource.com/920926 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Lingfeng Yang <lfy@google.com>
shinchiro 0bc6024a 2018-02-09T22:03:49 Fix mingw compile. Adjust a compile guard around posix_memalign. Bug: angleproject:2163 Change-Id: I1d2dca24b8a2b8e549df411b1611e9fe0ac9082d Reviewed-on: https://chromium-review.googlesource.com/920748 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Lingfeng Yang 710aa5c7 2018-02-08T10:57:55 GLES1: Mat4 transform library GLES1 has functions like glFrustum / glTranslatef which are baked 4x4 matrix operations. The purpose of this CL is to add those operations as library functions in ANGLE, to make it convenient later on. This is inspired by GLM and tested against GLM-generated numbers. BUG=angleproject:2306 Change-Id: I3b428a115a935ee4f0d00585ad38745a38cc128c Reviewed-on: https://chromium-review.googlesource.com/909578 Commit-Queue: Lingfeng Yang <lfy@google.com> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Yuly Novikov f3803d4f 2018-02-14T18:29:27 Fix standalone Linux build Need to include gtest before X11 to avoid defines conflict BUG=angleproject:2348 Change-Id: If758c53fb5ef010506f13165186110f00c099e07 Reviewed-on: https://chromium-review.googlesource.com/919687 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Geoff Lang 809b13ed 2017-11-07T15:33:46 StateManagerGL: Use dirty bits for framebuffer bindings. BUG=angleproject:2188 Change-Id: Icbe78f645b693a5b2ef555feffda0f618209e867 Reviewed-on: https://chromium-review.googlesource.com/757092 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Luc Ferron <lucferron@chromium.org>
Jamie Madill f4d693c0 2018-02-14T16:38:16 Vulkan: Cache clear color in ContextVk. This makes the current clear color a bit more accessible than using the current GL state clear color directly. It is stored in the Context using the Vulkan clear color struct. This also cleans up the attachment clear values in FramebufferVk and paves the way for depth/stencil clear when support for depth/stencil exists. Bug: angleproject:2357 Change-Id: I0553e4447249325115625a44e9f4b1623c7cb0bc Reviewed-on: https://chromium-review.googlesource.com/919550 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Jamie Madill 57fbfd80 2018-02-14T12:45:34 Vulkan: Pass RendererVk to Allocate helpers. Passing the Renderer pointer instead of the Context pointer makes these methods a bit easier to work with from the "EGL" sections of the code. This is a refactoring-only change to aid the Depth/Stencil implementation. Bug: angleproject:2357 Change-Id: Icbcc72a1daff4edd947a21672744498781cfc064 Reviewed-on: https://chromium-review.googlesource.com/919523 Reviewed-by: Luc Ferron <lucferron@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 12eb3d74 2018-02-14T12:34:45 Vulkan: Implement basic Renderbuffer creation. Bug: angleproject:2347 Change-Id: I56edfde2dbc020d5c792cc4f107aa4b9d6b71840 Reviewed-on: https://chromium-review.googlesource.com/905895 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Luc Ferron <lucferron@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Luc Ferron ee305913 2018-02-14T13:50:38 AngleWrangle: Suppress newly introduced flakyness Flakyness noticed there: https://ci.chromium.org/buildbot/tryserver.chromium.angle/mac_angle_rel_ng/ https://ci.chromium.org/buildbot/chromium.gpu.fyi/Mac%20FYI%20Release%20%28Intel%29/ Introduced in: https://chromium-review.googlesource.com/c/angle/angle/+/913108 Change-Id: I9cbd76c0472d023005ded9f957b304a4a769c619 Reviewed-on: https://chromium-review.googlesource.com/919547 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Luc Ferron 0aa1ffe3 2018-02-08T13:42:36 Vulkan: Autogen mandatory texture caps * This commit includes a JS file to execute on the spec and generate the JSON output of all the mandatory texture caps. Bug: angleproject:2348 Change-Id: I57e969915bdd0e7104e00a73fd3743ff1ecf0a6d Reviewed-on: https://chromium-review.googlesource.com/911615 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Geoff Lang 8170eab7 2017-09-21T13:59:04 D3D: Implement robust resource init for Surfaces. BUG=angleproject:2107 BUG=angleproject:2317 Change-Id: I22260e1093dc6c09e4627c62a95ca4088c99e951 Reviewed-on: https://chromium-review.googlesource.com/678480 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Jamie Madill 26403533 2018-02-14T14:19:13 Revert "Vulkan: Add glslang validator to build." This reverts commit 560bfbcb7860267888db2e8933c187710f4e1512. Reason for revert: Appears to be causing a compile error on the ANGLE roll. https://chromium-review.googlesource.com/c/chromium/src/+/914429 https://ci.chromium.org/p/chromium/builders/luci.chromium.try/linux_chromium_compile_dbg_ng/11598 /b/swarming/w/ir/cache/builder/linux/src/out/Debug/../../third_party/llvm-build/Release+Asserts/bin/ld.lld: error: undefined symbol: std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::compare(unsigned long, unsigned long, char const*) const >>> referenced by StandAlone.cpp Original change's description: > Vulkan: Add glslang validator to build. > > This binary will be used to generate internal shaders for > clearing/blit/etc. > > Bug: angleproject:2339 > Change-Id: I13db7d7a4f5a0155798c9b9a6d2972dd69a680ef > Reviewed-on: https://chromium-review.googlesource.com/904683 > Commit-Queue: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Geoff Lang <geofflang@chromium.org> TBR=ynovikov@chromium.org,geofflang@chromium.org,jmadill@chromium.org # Not skipping CQ checks because original CL landed > 1 day ago. Bug: angleproject:2339 Change-Id: I7bcedf27831648d4c659294d12cab50f6ef9f33f Reviewed-on: https://chromium-review.googlesource.com/919141 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Luc Ferron <lucferron@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Yunchao He 9550c603 2018-02-13T14:47:05 Code refactoring for end2end tests. This change: 1) uses the new style ANGLE_SKIP_TEST_IF to skip tests. 2) replaces compile-time definition for OSX to skip tests by run-time function IsOSX() to skip tests, in order to align with ANGLE_SKIP_TEST_IF. 3) fixes a couple of typos. BUG=angleproject:2005 Change-Id: I5af77d82257536b9eb79e26afa502f5b91ff6d31 Reviewed-on: https://chromium-review.googlesource.com/915861 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Luc Ferron 2900c3be 2018-02-09T16:02:41 Vulkan: Add culling rasterization states tests and invert front face Bug: angleproject:2352 Change-Id: I0ac83f3173d22a2ee8bc98d2fd7bfa1875d46b8c Reviewed-on: https://chromium-review.googlesource.com/912358 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Luc Ferron <lucferron@chromium.org>
Luc Ferron d50537a7 2018-02-07T17:02:08 Vulkan: Texture caps map We are generating the caps map using various bits from the results of vkGetPhysicalDeviceFormatProperties. This contains all the information required to fill out "renderable", "texturable" and "filterable". Later we'll need to read from vkGetPhysicalDeviceImageFormatProperties as well to get the sampleCounts. The tests for now are not very meaningful since they use the same logic as the caps code to build the expected results, however as soon as we'll add the hard-coded list of mandatory texture caps, the test will be a good validator that we are not breaking anything. We only check the optimal set of flags since it is the most restrictive set. isTexturable = flags contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT isFilterable = flags contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT isRenderable = flags contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT OR VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT Bug: angleproject:2348 Change-Id: I9da0712190d2678d7e377d6fcd4ca83d23eefd38 Reviewed-on: https://chromium-review.googlesource.com/908712 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Olli Etuaho defe3937 2018-02-13T11:56:09 Store invariant varying names as ImmutableString This gets rid of a few extra ImmutableString to std::string conversions which makes the code clearer. There doesn't seem to be any significant effect on performance. BUG=angleproject:2267 TEST=angle_unittests Change-Id: I36ebbc8a4130ab8f9d6194feca83ec5dcbc95f78 Reviewed-on: https://chromium-review.googlesource.com/916141 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Olli Etuaho bf107be4 2018-02-08T18:43:03 Don't search for nonexistent brackets in InitializeVariables Array brackets are not included in ShaderVariable::name, so they don't need to be pruned from there either when using the name to look up the variable. BUG=angleproject:2267 TEST=angle_unittests --gtest_filter=*InitOutput*Array* Change-Id: I2b80a88c1d67f7f0dde12880bcfb35fb6d861cd0 Reviewed-on: https://chromium-review.googlesource.com/909109 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Tobin Ehlis d9ed9c1a 2018-02-12T14:50:10 Put Vulkan mock ICD json file in separate dir Create "icd" subdir in angledata directory where the Vulkan mock ICD json file is stored. This prevents potential loader conflicts with the layer json files. This change means that when running with the mock ICD a user will need to set their VK_ICD_FILENAMES env variable to now point to "<build_out_dir>/angledata/icd/VkICD_mock_icd.json" and make sure that the built mock icd library resides in the system's shared object search path. Bug: angleproject:2159 Change-Id: I802bb61a06a2f370bb1fa7a28d9c3548e5f94ecf Reviewed-on: https://chromium-review.googlesource.com/914819 Commit-Queue: Tobin Ehlis <tobine@google.com> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Olli Etuaho 7b17fa18 2018-01-29T11:12:57 Add a constexpr constructor for TVariable BUG=angleproject:2267 TEST=angle_unittests Change-Id: I9b7e01801caa7235ac5e2d4212ea92e38c1f774d Reviewed-on: https://chromium-review.googlesource.com/908752 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Geoff Lang 34a06269 2018-02-12T16:30:43 Remove usage of ANGLE_FALLTHROUGH in EmulatePrecision.cpp BUG=chromium:810767 Change-Id: Ic0dafc9038b14093fdb799fe382ba8275195c0cc Reviewed-on: https://chromium-review.googlesource.com/914804 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Jamie Madill b79f0351 2018-02-12T13:13:53 Add test for scissored clear. This simple test will be used to debug the Vulkan back-end's basic scissored clear functionality. Bug: angleproject:2356 Change-Id: I4bed68740ac57b3cc61f2dfe9164081b05bc31b3 Reviewed-on: https://chromium-review.googlesource.com/914230 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Brandon Jones f0d3b901 2018-02-08T08:57:14 Enable Multisample Sources in copyImageInternal For D3D11 This enables the copyTexImage2D and copyTexSubImage2D to handle multisampled source through through the blit path. We attempt to use a cached texture as an intermediate to resolve to, or create a new texture if there's a mismatch. The resolved texture is sent through blit11::copyTexture as normal. BUG:angleproject:2316 Change-Id: Ie3490b45b1a368300ee13fe5a0b35dc3920364ff Reviewed-on: https://chromium-review.googlesource.com/911889 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Jamie Madill 560bfbcb 2018-02-12T10:08:25 Vulkan: Add glslang validator to build. This binary will be used to generate internal shaders for clearing/blit/etc. Bug: angleproject:2339 Change-Id: I13db7d7a4f5a0155798c9b9a6d2972dd69a680ef Reviewed-on: https://chromium-review.googlesource.com/904683 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jiawei Shao 4ed05da2 2018-02-02T14:26:15 ES31: Add link validation on geometry shader itself This patch intends to support program link validation on geometry shader itself. A link error should occur when linking a program with a geometry shader that lacks input primitive or output primitive or the declaration of 'max_vertices'. This patch also adds the support of linking a program with geometry shader in angle_end2end_tests. BUG=angleproject:1941 TEST=angle_end2end_tests dEQP-GLES31.functional.shaders.linkage.es31.geometry.varying.rules.unspecified_* Change-Id: I25fb08514753102f5dd3ab86211c05d2ca4fd185 Reviewed-on: https://chromium-review.googlesource.com/898842 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 30414789 2018-02-12T15:16:02 Revert "GLES1: Link against angle_util_static instead of angle_util." This reverts commit da91c9a6d86c9ecd21c6ac724cf9576d7ee310d2. Reason for revert: Causes undefined behaviour in linker. Original change's description: > GLES1: Link against angle_util_static instead of angle_util. > > Attempting to work around missing .so on linux bots. > > BUG=angleproject:2303 > > Change-Id: I7fabad308afd420987369b460c13c00781113605 > Reviewed-on: https://chromium-review.googlesource.com/909028 > Reviewed-by: Geoff Lang <geofflang@chromium.org> > Commit-Queue: Geoff Lang <geofflang@chromium.org> TBR=geofflang@chromium.org,lfy@google.com # Not skipping CQ checks because original CL landed > 1 day ago. Bug: angleproject:2303 Change-Id: I8d3f3d9bd618d9604cec0f02424f788cab25b3f9 Reviewed-on: https://chromium-review.googlesource.com/913550 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Lingfeng Yang <lfy@google.com> Commit-Queue: Geoff Lang <geofflang@chromium.org>
jchen10 046fa0ef 2018-02-02T14:51:36 Vulkan: Prepend layer path to VK_LAYER_PATH Directly setting this variable overwrites old value, as might be unexpected. Instead the path can be prepended to it, so that old value can still work. This is needed in order to use additional debugging layers, like the "api_dump" layer. See https://github.com/LunarG/VulkanTools for more. BUG=angleproject:2333 Change-Id: I5338a5b928ffa792cc9b6db5b69713320b5b0842 Reviewed-on: https://chromium-review.googlesource.com/898591 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Yunchao He 2f23f35a 2018-02-11T22:11:37 Clean up end2end tests for Intel OSX. BUG=angleproject:2205 BUG=angleproject:2041 BUG=angleproject:2155 Change-Id: I26bcbb63e147787cd342ec80a86d60cf230be4c9 Reviewed-on: https://chromium-review.googlesource.com/913108 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Olli Etuaho e5fe7aad 2018-01-29T12:06:11 Store builtin symbols as const pointers To do this we need two types of symbol table levels: A level for built-ins and a level for user-defined symbols. User-defined symbols are non-const because function symbols created based on function prototypes are changed when the function definition is parsed. On the other hand, we want to make built-in symbols constexpr, so we should only handle them through const pointers. This also gets rid of extra empty precision stack levels. Only one level is needed to store predefined precisions. BUG=angleproject:2267 TEST=angle_unittests Change-Id: I9f14b24c2cfce272f22c16e7a8dfb653b849cbeb Reviewed-on: https://chromium-review.googlesource.com/892879 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Yuly Novikov 8f27b050 2018-02-08T16:18:37 Update Android build instructions Build flags to enable Vulkan backend and some small updates. BUG=angleproject:2314 Change-Id: Ia99cc5a4b326a4cab115652cb12b3fb61033eeee Reviewed-on: https://chromium-review.googlesource.com/909723 Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Yuly Novikov 6108b766 2018-02-08T18:17:43 Remove angle::Library and its usages No longer needed after https://chromium-review.googlesource.com/513519 Loading libGLESv2 interferes with API tracing tools BUG=angleproject:1892,angleproject:2343 Change-Id: I2ccbc99377d75d107fd644301402c52466dded21 Reviewed-on: https://chromium-review.googlesource.com/910094 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Nico Weber 41b072b6 2018-02-09T10:01:32 Prepare for -Wimplicit-fallthrough in ANGLE. Disable the warning for flex-generated output, which contains lots of intentional fallthrough. Fixes a bug where GL_SAMPLE_ALPHA_TO_ONE_EXT would fall through to GL_COVERAGE_MODULATION_CHROMIUM and hence behave like that. Fixes a bug in the D3D9 state management where invalidating DIRTY_BIT_POLYGON_OFFSET would also invalidate the stencil bits. One somewhat common incorrect pattern in ANGLE is nested switch statements that look like so: switch (a) { case a1: switch (b) { case b1: ... break; } case a2: ... } The assumption here seems to be that the breakk exits the outer case (here a1), while it in fact only exits the inner switch, so that we fall through to a2. In most places, I fixed this by adding an explicit `break` after the inner switch. This fixes a bug wher GL_PATH_JOIN_STYLE_CHROMIUM would fall through to GL_PATH_MITER_LIMIT_CHROMIUM in validation (but since the join style enum is always > 0, this happened to not have an effect in practice). This also fixes 87 bugs in GetLoadFunctionsMap() where invalid values would previously return an unrelated function map instead of the empty load function map. Bug: chromium:810767 Change-Id: Ib51388c73fbfc229160e2c10f8fb9364cc7c996c Reviewed-on: https://chromium-review.googlesource.com/911529 Commit-Queue: Nico Weber <thakis@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 61773640 2018-02-09T10:12:21 Skip PostSubBuffer calls that have zero size. BUG=810411 Change-Id: I8770b69fe4ab8a8f9bacd141c89e7f83f67f15fb Reviewed-on: https://chromium-review.googlesource.com/911589 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Luc Ferron f8be756e 2018-02-06T15:59:11 Vulkan: Implement blend states and add a simple test for it Bug: angleproject:2346 Change-Id: I462a2cb29ceda5563f48b4a3cc1d0aa20f4a49fc Reviewed-on: https://chromium-review.googlesource.com/907169 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Geoff Lang 3e520b6f 2018-02-08T16:26:30 OpenGL: Disable forwarding debug groups and messages all the way to the driver. Because of virtualized contexts, the debug groups are not always popped in the same order that they are pushed leading to inconsistant state and sometimes GL_STACK_OVERFLOW errors from the driver. BUG=angleproject:2354 Change-Id: I0a001002149184dd882c3b17e8451bcd694608ba Reviewed-on: https://chromium-review.googlesource.com/909794 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang ed04619a 2018-02-08T14:57:14 Fix typo in bug link. BUG=angleproject:2205 Change-Id: I7ff1c3d0bb380c73c07dad0a30a4a4a19c17e397 Reviewed-on: https://chromium-review.googlesource.com/909577 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang bb514004 2017-04-28T14:08:38 Request RGBA8 configs by default for gtest dEQP. Previously, dEQP would just use the first config returned which was RGBA4 which is not very representitive of what our users would request. BUG=angleproject:2337 BUG=angleproject:1095 BUG=angleproject:2222 Change-Id: I5c9defc7ce1feaa49407557b88d9bb6b98571771 Reviewed-on: https://chromium-review.googlesource.com/490726 Reviewed-by: Luc Ferron <lucferron@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang 06b95582 2018-02-08T13:48:44 Re-supress VerifyMax*UniformVectors on Ozone Intel. BUG=angleproject:2205 Change-Id: Icff414dc7a521205fd3e39af4652b0fdef1cb900 Reviewed-on: https://chromium-review.googlesource.com/909291 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang da91c9a6 2018-02-08T11:46:39 GLES1: Link against angle_util_static instead of angle_util. Attempting to work around missing .so on linux bots. BUG=angleproject:2303 Change-Id: I7fabad308afd420987369b460c13c00781113605 Reviewed-on: https://chromium-review.googlesource.com/909028 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Jamie Madill e051ea72 2018-02-08T12:04:06 Vulkan: Update .gitignore with repo change. This was missing from a prior commit which moved the Vulkan DEPS. Bug: angleproject:2339 Change-Id: I16c2918af9396b5b935993d08d8f2ff925f3cb01 Reviewed-on: https://chromium-review.googlesource.com/909228 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Yuly Novikov bac02d76 2018-02-07T20:36:07 Vulkan: Fix data_deps on layers Was broken by https://chromium-review.googlesource.com/900096 BUG=angleproject:2339 Change-Id: I3c28a38619d83e7dcbb2349565517feb1758976c Reviewed-on: https://chromium-review.googlesource.com/907959 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Yunchao He 8e5ba8bb 2018-02-05T17:52:27 Clean up end2end tests for Intel Linux platform. Removed tests can pass on Intel Linux Desktop (Intel KabyLake, Ubuntu 17.04) with system default mesa and latest upstream mesa. BUG=angleproject:2205 BUG=chromium:680631 Change-Id: Ie3f0f34b9708a7dab81f66d9ec83a469658deee7 Reviewed-on: https://chromium-review.googlesource.com/901382 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
JiangYizhou 5420cb2a 2018-01-24T10:09:22 Suppress Intel specific deqp test cases Test deqp cases on Windows D3D and Linux on Intel HD 630. Add failed or crashed test cases to expectation files. BUG=801323 BUG=angleproject:2349 Change-Id: I495874f5e1841f6c7ce0f59224ed0da9465546ce Reviewed-on: https://chromium-review.googlesource.com/900708 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 0e65454d 2018-02-07T14:50:06 Vulkan: Fix circular dependency with resource updates. The old implementation would try to keep recording draw commands to the same framebuffer write operation even if the vertex array buffer data changed. This would lead to a broken dependency graph. Fix this by forcing any current render operations to create a new node in this case, giving a correct command graph. Old design: - render (creates a CommandBufferNode A) - update buffer (creates a CommandBufferNode B which happens after A) - render (to CommandBuffer A, and gives a circular dependency with B) New design - render (CommandBufferNode A) - update buffer (CommandBufferNode B, happens after A) - render (CommandBufferNode C, happens after B) This also renames some methods to try to clarify them. Bug: angleproject:2350 Change-Id: I6559bed4ed3f58f68771662422c5bef6a505282b Reviewed-on: https://chromium-review.googlesource.com/907416 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Frank Henigman <fjhenigman@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>