- 26 Jul, 2017 6 commits
-
-
Jamie Madill authored
This change makes it so that when we need to recompile a program on a draw call, we also update the cache. It also streamlines the internal queries of the dynamic vertex and fragment shaders such that we only update the input and output signatures a single time per draw. This should also facilitate dirty bit implementations for the D3D11 back- end. BUG=angleproject:2116 Change-Id: Iccb0501b700bc894f40a8c68d7f297ff0c8f46bd Reviewed-on: https://chromium-review.googlesource.com/531798Reviewed-by:
Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
-
Jamie Madill authored
This is a small specialized macro to remove all the redundant handleError calls and return value checking. Also add a Context::prepareForDraw member that will be used in follow-up patches to do necessary work prior to a draw call. BUG=angleproject:2107 BUG=angleproject:2116 Change-Id: I8a32d2206c218fcca5236abfd3f2ce370296ca99 Reviewed-on: https://chromium-review.googlesource.com/585288Reviewed-by:
Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
-
Martin Radev authored
According to the ANGLE_multiview spec indirect draw calls must generate an INVALID_OPERATION error if the number of views in the active draw framebuffer is greater than 1. The patch addresses this by extending the indirect draw call validation. BUG=angleproject:2062 TEST=angle_end2end_tests Change-Id: Ic30ef9a0eabba454aeea6176df1be8bd2ccd9783 Reviewed-on: https://chromium-review.googlesource.com/583027Reviewed-by:
Geoff Lang <geofflang@chromium.org> Commit-Queue: Martin Radev <mradev@nvidia.com>
-
Jamie Madill authored
We don't support this call in D3D9, so need for it to be in RendererD3D. In general we want to have as few virtual calls in the hot draw call path as possible. Also rename it to 'drawCallNeedsTranslation' (with inverted condition checks). BUG=angleproject:1393 Change-Id: Ib212ec35aca4b5d45579acec65c20691b5853230 Reviewed-on: https://chromium-review.googlesource.com/584826Reviewed-by:
Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
-
Corentin Wallez authored
BUG= Change-Id: Ib237ce44644dba72bd55487756e0e69b724d30a3 Reviewed-on: https://chromium-review.googlesource.com/586429Reviewed-by:
Corentin Wallez <cwallez@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
-
Corentin Wallez authored
This reverts commit 17d27031. Reason for revert: - New test fails on NVIDIA and AMD on Windows when using the backbuffer FAST_PATH. - SetUp code ASSERT_GL_NO_ERROR (line 269) but a GL error happens on all Windows and Linux Intel OpenGL. Original change's description: > Fix BlitFramebuffer validation for BGRA sources and targets. > > It is legal to blit between GL_RGBA8 and GL_BGRA8 sources and > destinations when resolving multisampled renderbuffers. Expand > BlitFramebuffer's validation to handle this case. > > Work around a bug in macOS' OpenGL driver querying the number of > samples for GL_BGRA8. > > Query GL_MAX_VERTEX_OUTPUT_COMPONENTS on the Core Profile to work > around an error generated on macOS when querying > GL_MAX_VARYING_COMPONENTS. > > Expand the BlitFramebuffer tests to cover these cases and start > running them on the OpenGL backend. > > BUG=angleproject:891 > > Change-Id: I4829585d2b6428ce0bc7509c4734d33709a0930b > Reviewed-on: https://chromium-review.googlesource.com/582268 > Commit-Queue: Geoff Lang <geofflang@chromium.org> > Reviewed-by: Kenneth Russell <kbr@chromium.org> > Reviewed-by: Geoff Lang <geofflang@chromium.org> TBR=geofflang@chromium.org,kbr@chromium.org Change-Id: I220bc482194cf7fad5e7e732a6d043ce0d504d79 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: angleproject:891 Reviewed-on: https://chromium-review.googlesource.com/586428Reviewed-by:
Corentin Wallez <cwallez@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
-
- 25 Jul, 2017 2 commits
-
-
Kenneth Russell authored
It is legal to blit between GL_RGBA8 and GL_BGRA8 sources and destinations when resolving multisampled renderbuffers. Expand BlitFramebuffer's validation to handle this case. Work around a bug in macOS' OpenGL driver querying the number of samples for GL_BGRA8. Query GL_MAX_VERTEX_OUTPUT_COMPONENTS on the Core Profile to work around an error generated on macOS when querying GL_MAX_VARYING_COMPONENTS. Expand the BlitFramebuffer tests to cover these cases and start running them on the OpenGL backend. BUG=angleproject:891 Change-Id: I4829585d2b6428ce0bc7509c4734d33709a0930b Reviewed-on: https://chromium-review.googlesource.com/582268 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by:
Kenneth Russell <kbr@chromium.org> Reviewed-by:
Geoff Lang <geofflang@chromium.org>
-
Qin Jiajia authored
This change will remove IndexRange parameter in DrawElements functions. And calculate it until we truly need it. Meanwhile we add direct drawing path to avoid retrieving index range for DrawElements* functions in D3D11 backend. This change may not bring much performance improvement since we still need to retrieve index range in validation at the beginning of every DrawElements* call entry point. BUG=angleproject:1393 Change-Id: I86a8739c0893954c94eb398db62820ced7871565 Reviewed-on: https://chromium-review.googlesource.com/544634Reviewed-by:
Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
-
- 24 Jul, 2017 3 commits
-
-
Jamie Madill authored
Don't recompute the cached attribute layout for a program if the vertex array info hasn't changed. We can use the Serial class to know when a vertex array has identical state. BUG=angleproject:1156 Change-Id: Ia11f6ac268f63c3299f6d6d80c2866009cb8429c Reviewed-on: https://chromium-review.googlesource.com/529768Reviewed-by:
Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
-
Geoff Lang authored
Shader source strings are allowed invalid ESSL characters when they are in comments. Added a simple comment parser to determine which characters should be validated. BUG=angleproject:2093 Change-Id: If78a4ecbd61f1700fc18dcb844f3de03314a6a39 Reviewed-on: https://chromium-review.googlesource.com/578567 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by:
Jamie Madill <jmadill@chromium.org>
-
Martin Radev authored
The patch extends the FBO completeness validation to include the multiview state members according to the ANGLE_multiview specification. It also changes the numViews in FramebufferAttachment to be consistently of type GLsizei instead of GLint. BUG=angleproject:2062 TEST=angle_end2end_tests Change-Id: Ibe550ba03204d808d96a4edf4807c68421aa1158 Reviewed-on: https://chromium-review.googlesource.com/581193 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by:
Geoff Lang <geofflang@chromium.org>
-
- 21 Jul, 2017 5 commits
-
-
Olli Etuaho authored
Assign symbol ids to out parameter symbol nodes that get created in ArrayReturnValueToOutParameter. Also assign the EvqOut qualifier to references to the out parameter - this is in line with what happens normally in ParseContext. BUG=angleproject:1490 TEST=angle_unittests, angle_end2end_tests Change-Id: Ib1e8303e3ef09f2e0d24524277199785d6f47b53 Reviewed-on: https://chromium-review.googlesource.com/559533Reviewed-by:
Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
-
Jamie Madill authored
This would start off the zeroth element as enabled even if there was no attachment. If we remove the extra set, then we no longer have to check if the attachment is valid when iterating over the enabled bitset. BUG=angleproject:2107 Change-Id: I679f66156ced09d42add9e302ac974166713e0d5 Reviewed-on: https://chromium-review.googlesource.com/581884Reviewed-by:
Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
-
Jamie Madill authored
This also moves the shader application to happen before any of the other state sync work. In order to do this, we must split off the uniform application to happen after the viewport sync, because the driver uniforms for the viewport size can change. This prepares the D3D11 back-end for updating the programs before a draw call, including refreshing binary cache entries. BUG=angleproject:1156 Change-Id: Ie491e8ddb69ff44ebe076c56ebd39c4b46a4d2b2 Reviewed-on: https://chromium-review.googlesource.com/531797 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by:
Geoff Lang <geofflang@chromium.org>
-
Jamie Madill authored
This paves the way for a dirty bits implementation for Textures, and also will allow more precise ordering of the state update in D3D11. The latter becomes important when moving the shader application. Because the texture update can affect the built-in driver uniforms, we neeed to update textures before we update the uniforms. BUG=angleproject:1156 BUG=angleproject:1387 Change-Id: I995e095517c598d8672c6400d08a430da0e8339b Reviewed-on: https://chromium-review.googlesource.com/580361Reviewed-by:
Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
-
Olli Etuaho authored
There's been a long-standing bug in RewriteDoWhile where it would only call nextTemporaryId() after it had created the temporary variable. This escalated into a null pointer dereference in the recent symbol table refactoring, and initializing the traverser with the symbol table was also missing. BUG=chromium:747244 TEST=angle_unittests Change-Id: I8987a609bb5d7d49e3c3e284fc42a2e53e38dafa Reviewed-on: https://chromium-review.googlesource.com/580887 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by:
Jamie Madill <jmadill@chromium.org>
-
- 20 Jul, 2017 7 commits
-
-
Geoff Lang authored
Many of the other tests in this file are already skipped on this platform but now that GL driver errors cause tests to fail, these tests that previously did not verify their results started to fail. Change-Id: I0d5c88289de42464ae56ac7238c26b384819fe02 Reviewed-on: https://chromium-review.googlesource.com/580255Reviewed-by:
Geoff Lang <geofflang@chromium.org> Reviewed-by:
Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
-
Yuly Novikov authored
And the global static it uses. BUG=angleproject:1644 Change-Id: I6c8b186ef0dce83fe64620729af4d87ea81c77f5 Reviewed-on: https://chromium-review.googlesource.com/577922Reviewed-by:
Jamie Madill <jmadill@chromium.org> Reviewed-by:
Geoff Lang <geofflang@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
-
Olli Etuaho authored
This makes understanding and debugging the mapped names in the translator interface easier. TEST=shader_translator -u Change-Id: I2457142a6f0a8baa623e80b00cc86c8df90e6718 Reviewed-on: https://chromium-review.googlesource.com/579968 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by:
Corentin Wallez <cwallez@chromium.org> Reviewed-by:
Jamie Madill <jmadill@chromium.org>
-
Corentin Wallez authored
BUG=angleproject:2105 Change-Id: I46e5f4458be830e27345fc04ad4c9fd6e98aa946 Reviewed-on: https://chromium-review.googlesource.com/575200Reviewed-by:
Jamie Madill <jmadill@chromium.org> Reviewed-by:
Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
-
Olli Etuaho authored
Don't expose internal variables in the shader translator interface. This affects the ViewID_OVR varying needed for instanced multiview, which is so far the only variable of this kind. This fixes the translator trying to add initialization for internal variables in initializeOutputVariables. Since they are variables added by ANGLE, they should never need extra initialization. BUG=angleproject:2112 TEST=angle_unittests Change-Id: I93ee2956c8180053806ce450d93f162f78a45d8f Reviewed-on: https://chromium-review.googlesource.com/579050Reviewed-by:
Corentin Wallez <cwallez@chromium.org> Reviewed-by:
Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
-
Martin Radev authored
Handle glFramebufferTextureMultiviewSideBySideANGLE calls by saving the arguments into the attachment's state. BUG=angleproject:2062 TEST=angle_end2end_tests Change-Id: Idc5441d673b48640f47415b07b2854fbdf566c8d Reviewed-on: https://chromium-review.googlesource.com/574915 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by:
Olli Etuaho <oetuaho@nvidia.com>
-
Martin Radev authored
The patch adds validation for the ANGLE_multiview end-points and propagates the calls to the unimplemented stubs in Context. The patch also removes the glFramebufferTextureMultiviewSideBySideRobustANGLE end-point because the size of the viewport offsets buffer can trivially be computed from the number of views. BUG=angleproject:2062 Change-Id: I9a10bc00c19825e586d3df2750fabea4daf5ef8f Reviewed-on: https://chromium-review.googlesource.com/573861 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by:
Geoff Lang <geofflang@chromium.org>
-
- 19 Jul, 2017 12 commits
-
-
Jamie Madill authored
Debug layers seem to be a universal thing among functional back-ends. D3D, OpenGL and Vulkan all need some kind of controls for debugging, so it seems to make sense to make this control part of the base extension. Default the extension to EGL_DONT_CARE, which allows the back-end to have a lot of flexibility in terms of implementation. Also enable the extension in the D3D11 and OpenGL back-ends, and set the extension to enabled for angle_end2end_tests. Remove EGLVulkanEXTTest since it no longer tests anything not tested in the base ANGLETest class. BUG=angleproject:2086 Change-Id: I52d8170effd1846b9afbe6e4052c699fe5cb0de8 Reviewed-on: https://chromium-review.googlesource.com/578369 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by:
Yuly Novikov <ynovikov@chromium.org>
-
Jamie Madill authored
This consolidates all the state changes for shaders into StateManager11. BUG=angleproject:2052 Change-Id: I64dc3af5b0f1459442369e09f93a9ca8ce3232b3 Reviewed-on: https://chromium-review.googlesource.com/531796Reviewed-by:
Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
-
Jamie Madill authored
BUG=angleproject:2045 Change-Id: Ie1deac50a534ee748518d9ec5e6f749f3c78b53d Reviewed-on: https://chromium-review.googlesource.com/531795Reviewed-by:
Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
-
Jamie Madill authored
Intead of checking a series of bools and special variables, organize the state application into a switch with internal dirty bits. This should be faster for no-op, and makes it clear where we have to further optimize the state update to pre-compute certain values. BUG=angleproject:1156 Change-Id: I8eca8716340499085afa170ff45f7788e84fecab Reviewed-on: https://chromium-review.googlesource.com/531794 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by:
Geoff Lang <geofflang@chromium.org>
-
Jamie Madill authored
This makes the naming more consistent with the rest of the EGL extensions. BUG=angleproject:2086 Change-Id: If08e7a550d6b99fb5a3a2138b0c94afc82b2b417 Reviewed-on: https://chromium-review.googlesource.com/578368Reviewed-by:
Geoff Lang <geofflang@chromium.org>
-
Jamie Madill authored
We need this in a few places for handling resource init. Centralize this in the context so we don't have to recreate and re-fill a large zero buffer. BUG=angleproject:2107 Change-Id: Icf9ce417e7ee3498f03e47741dfff89e81b49519 Reviewed-on: https://chromium-review.googlesource.com/576057Reviewed-by:
Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
-
Olli Etuaho authored
NVIDIA OpenGL drivers have a bug where the point size range is being reported incorrectly - it appears the core GL driver incorrectly gives the range for smooth points, when it should be giving the range for aliased points. Clamp the actual point size to the maximum point size reported from the API so that the GLES spec is followed. The same workaround seems to be necessary also on Android. The issue was revealed by the trybots, and has not been fully diagnosed though. The newly added test fails on AMD OpenGL. As a part of this change, the existing tests in PointSpritesTest are refactored to use gl_raii. BUG=chromium:740560 TEST=angle_end2end_tests Change-Id: Ic4a66c9ea16f5ae76beb3bb6577716d10c3b226e Reviewed-on: https://chromium-review.googlesource.com/574598Reviewed-by:
Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
-
Olli Etuaho authored
In HLSL output, samplers are never passed to functions as arrays, but rather sampler array arguments are expanded into single sampler and/or texture arguments. This applies also when the samplers were inside arrays of structs in the original source. BUG=angleproject:2103 TEST=angle_end2end_tests Change-Id: Ib1fcba0c0ab3da592d15272eb56a03c3e536f349 Reviewed-on: https://chromium-review.googlesource.com/576041Reviewed-by:
Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
-
jchen10 authored
Add API entry and validation checks(GLES 3.1 section 7.3). Add the first 2 interfaces(PROGRAM_INPUT and PROGRAM_OUTPUT) implementation. BUG=angleproject:1920 TEST=angle_end2end_tests:ProgramInterfaceTestES31.* Change-Id: I5128cda43b0d9176c910b036cdc76bf37757670e Reviewed-on: https://chromium-review.googlesource.com/474212 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by:
Geoff Lang <geofflang@chromium.org>
-
JiangYizhou authored
Add GL_TEXTURE_BINDING_2D_MULTISAMPLE option to State.cpp to query binding id of GL_TEXTURE_2D_MULTISAMPLE. BUG=angleproject:1590 TEST=angle_deqp_gles31_tests.exe --deqp-case=dEQP-GLES31.functional.state_query.integer.texture_binding_2d_multisample_* Change-Id: I86b24f00ac4e75eb0e2986f7cf2eb108aae14674 Reviewed-on: https://chromium-review.googlesource.com/561196 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by:
Yunchao He <yunchao.he@intel.com> Reviewed-by:
Geoff Lang <geofflang@chromium.org>
-
Olli Etuaho authored
This makes unique id counting thread-safe. BUG=angleproject:624 TEST=angle_unittests Change-Id: Ie0f2c7e574470b39750d37d2181c790bc874b275 Reviewed-on: https://chromium-review.googlesource.com/570419 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by:
Jamie Madill <jmadill@chromium.org>
-
Martin Radev authored
The patch extends glGetIntegerv and glGetFramebufferAttachmentParameteriv logic to handle the new tokens from the ANGLE_multiview extension. BUG=angleproject:2062 TEST=angle_end2end_tests Change-Id: Ide145279cd7b58cd03502458d7d3a1a0f5e9e86d Reviewed-on: https://chromium-review.googlesource.com/573780Reviewed-by:
Olli Etuaho <oetuaho@nvidia.com> Reviewed-by:
Geoff Lang <geofflang@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
-
- 18 Jul, 2017 5 commits
-
-
Geoff Lang authored
This enum is queryable in ES3 or with the GL_OES_standard_derivatives extension. BUG=2110 Change-Id: I688777bcc65468d796333a24223d24cc66170788 Reviewed-on: https://chromium-review.googlesource.com/576156Reviewed-by:
Corentin Wallez <cwallez@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
-
Jamie Madill authored
This will make iterating over an internal set of dirty bits simpler. This also reorganizes the framebuffer invalidation logic a bit, including how the sample count is pulled from the Framebuffer. BUG=angleproject:1156 Change-Id: I79dbcd11704ab52568c587d836af9c1bff1d2d1f Reviewed-on: https://chromium-review.googlesource.com/529708 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by:
Jamie Madill <jmadill@chromium.org>
-
Geoff Lang authored
Previously, the entire original shader would end up being written to a single line, not very readable. Change-Id: I8cdfd498bb47395da2bd11c3d3b2eecf266c914e Reviewed-on: https://chromium-review.googlesource.com/576064Reviewed-by:
Corentin Wallez <cwallez@chromium.org>
-
Olli Etuaho authored
Relying on the AST conforming to known limitations makes the code for recording referenced varyings easier to understand. BUG=angleproject:2104 TEST=angle_end2end_tests Change-Id: Icdcd7602f6ed54fa439f989bf256e261627d11f5 Reviewed-on: https://chromium-review.googlesource.com/568018Reviewed-by:
Corentin Wallez <cwallez@chromium.org> Reviewed-by:
Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
-
Shao authored
This patch intends to implement Vertex Attrib Binding on OpenGL back-ends: 1. Add supports for updating vertex attributes by Vertex Attrib Binding APIs. 2. Refactor the process of updating vertex attribtues in class VertexArray to make it easier to implement this feature. BUG=angleproject:1593 TEST=dEQP-GLES31.functional.vertex_attribute_binding.* Change-Id: I800e61518c552b94b84c415895ad31668b0a84b2 Reviewed-on: https://chromium-review.googlesource.com/510251 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by:
Jamie Madill <jmadill@chromium.org>
-