kc3-lang/angle

Branch :


Log

Author Commit Date CI Message
38abd6c9 2017-08-02 13:27:45 Skip all EGLContextCompatibilityTest tests on debug builds. BUG=angleproject:2121 Change-Id: Ie7d09aca453753577dd26dcd35b1c743dbfcfce2 Reviewed-on: https://chromium-review.googlesource.com/598495 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
6c58b062 2017-08-01 13:44:25 Add histograms for the program cache. Also includes some tracking of if a cache hit comes from a binary inserted after a Link call, or sourced from the external disk cache. Chromium-side CL: https://chromium-review.googlesource.com/c/592151/ BUG=angleproject:2118 Change-Id: I80eefd203d8ce31d1ac03dd1a36459d3581128f5 Reviewed-on: https://chromium-review.googlesource.com/590689 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
c2493e38 2017-06-20 17:16:25 Add DrawElementsPerf test This is a follow-up CL for https://chromium-review.googlesource.com/c/544634/. In this commit, we add drawElements perf test for d3d9, d3d11 and OpenGL. Specially, we test DrawElements with unchanged index buffer every frame and changed index buffer every frame. This is also a preparation for further remove IndexRange in validation. Paste a set of data (repeated 30) for reference on Intel skylake Win10 desktop. DrawElementsPerfBenchmark.Run/d3d11: mean: 13186.1666667, stddev: 200.479605502, truncated mean: 13192.5416667, stddev: 156.284190704 DrawElementsPerfBenchmark.Run/d3d11_index_buffer_changed: mean: 43.6, stddev: 4.02160830183, truncated mean: 43.5833333333, stddev: 2.97092391166 BUG=angleproject:1393 TEST=angle_perftests Change-Id: I94bd181aa2b4515df1affc79f591f5db399feac3 Reviewed-on: https://chromium-review.googlesource.com/585981 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
8f276e25 2017-05-30 12:05:52 Handle multiview Draw* calls Because the ANGLE_multiview extension uses instancing to multiply geometry for each view, Draw* calls with an active multiview program have to be handled in the follwing way: 1) Convert non-instanced Draw calls to their instanced versions. 2) Multiply the number of instances in an instanced Draw call by the number of views. BUG=angleproject:2062 TEST=angle_end2end_tests Change-Id: I19119e8178f70336e5dbb1e5eed0658b5b9f43d7 Reviewed-on: https://chromium-review.googlesource.com/593657 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Martin Radev <mradev@nvidia.com>
df7d7c9e 2017-07-31 09:34:04 Split varyings into input and output varyings in compiler This patch intends to split all vector<Varying> into two vectors to store input and output varyings separately in the compiler. This patch is a base of implementing the built-ins, inputs and outputs of a geometry shader to ANGLE GLSL compiler. Unlike the vertex shaders (their outputs are varyings) and fragment shaders (their inputs are varyings), the inputs and outputs of geometry shaders are all varyings, so we need two vector<Varying> to store them correctly. BUG=angleproject:1941 Change-Id: I9e8cc16045d5e29e9a80a09dc31b33a7ae39b345 Reviewed-on: https://chromium-review.googlesource.com/593347 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
b0761934 2017-07-25 17:42:25 Handle Clear* commands for side-by-side framebuffers Clear* commands for side-by-side framebuffers require special handling because only the scissor rectangle of the first viewport is used in the scissor test as defined in the OpenGL 4.1+ specs. To enable clearing of each view of a side-by-side framebuffer all views are iterated over, the corresponding scissor rectangle is set as first, and a Clear* call is made to the driver. Afterwards the scissor state is restored. BUG=angleproject:2062 TEST=angle_end2end_tests Change-Id: I138663ea61b4f0c9302872108e7dfbadf451b3ec Reviewed-on: https://chromium-review.googlesource.com/590233 Commit-Queue: Martin Radev <mradev@nvidia.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
44183cce 2017-08-01 12:48:34 Micro-optimizations to draw call entry point. Thanks to Markus from NVIDIA. This inlines some methods and optimizes the check if a uniform is a bool type. BUG=angleproject:2119 Change-Id: I6f2c2d22c577458b39de600d3c56ec8e1a456a7a Reviewed-on: https://chromium-review.googlesource.com/591699 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org>
5788d24b 2017-07-10 11:13:36 D3D11: Support stencil-only EGL configs. WebGL can request contexts with a stencil buffer but no depth buffer. BUG=angleproject:2075 Change-Id: I46b272089e44d5f1725fa6252b68d34c9e9f37f6 Reviewed-on: https://chromium-review.googlesource.com/565052 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
23176cea 2017-07-31 14:14:33 Fix performance regression in stream init. Regressed: https://chromium-review.googlesource.com/531798 This was because the std::stringstream constructor was being called every draw call, for the InfoLog of the dynamically recompiled shaders in the D3D back-ends. The constructor was allocating memory and freeing it on destruction. Instead use a lazy init for the std::stringstream in InfoLog like we do for Error. BUG=chromium:750685 Change-Id: I9cd429ae4e1439ae504943a9cad31cbbed17ef32 Reviewed-on: https://chromium-review.googlesource.com/594629 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
878c8b1e 2017-07-28 09:51:04 Handle viewport and scissor state changes for side-by-side framebuffers Side-by-side framebuffers have viewport offsets as part of their state which have to be applied to the viewport and scissor rectangles to generate the final viewport and scissor rectangles of each view. Whenever there is a transition to or from a side-by-side framebuffer, viewport and scissor state has to be synced. Also, because rendering is done on the same 2D texture the scissor test has to be always enabled to guarantee that no fragments leak to a neighboring view. The patch addresses this by extending the viewport and scissor state in StateManagerGL to be a vector of rectangles instead of a single rectangle. Two new dirty bits are added to cover changes in the viewport offsets and whether the framebuffer has a side-by-side layout. BUG=angleproject:2062 TEST=angle_end2end_tests Change-Id: I8107d7ba97d06b20cf24358f19963fa494844592 Reviewed-on: https://chromium-review.googlesource.com/585012 Commit-Queue: Martin Radev <mradev@nvidia.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
ffe754b7 2017-07-31 10:38:07 Disallow timer queries with multi-view draw framebuffers According to the ANGLE_multiview spec Draw* commands should generate an INVALID_OPERATION error if there is an active query object for target TIME_ELAPSED_EXT and the number of views in the active draw framebuffer is greater than 1. BUG=angleproject:2062 TEST=angle_end2end_tests Change-Id: I8a4434784ecec753a39c5ef82fa3ee46255a0851 Reviewed-on: https://chromium-review.googlesource.com/593315 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Martin Radev <mradev@nvidia.com>
2803168e 2017-07-28 14:47:56 Disallow glReadPixels with multi-view read framebuffers According to the ANGLE_multiview spec, glReadPixels must generate an INVALID_FRAMEBUFFER_OPERATION error if the active read framebuffer has a multi-view layout. BUG=angleproject:2062 TEST=angle_end2end_tests Change-Id: Ia5311ff7a62c5ff732491eb80befd32de57b9d44 Reviewed-on: https://chromium-review.googlesource.com/591368 Commit-Queue: Martin Radev <mradev@nvidia.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
2bde9199 2017-07-28 14:15:01 Extend suppression for new test that fails on AMD Linux too BUG=angleproject:1987 Change-Id: Iebf9aeba61bfaa300de3ed50d7d57c61996f67dc Reviewed-on: https://chromium-review.googlesource.com/592139 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
05c31dae 2017-07-18 16:11:39 ES31: Enable atomic counter for GL backend This simply translates the offset qualifier and synchronizes the buffer binding state for GL translator and renderer. BUG=angleproject:1729 TEST=angle_end2end_tests:AtomicCounterBufferTest31 Change-Id: Ib8424918478ae4c47049d5856ea20ef022f12913 Reviewed-on: https://chromium-review.googlesource.com/575913 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
a3ed4576 2017-07-27 18:29:37 Disallow glBlitFramebuffer for multi-view framebuffers According to the ANGLE_multiview spec, glBlitFramebuffer must generate an INVALID_FRAMEBUFFER_OPERATION error if either the active read framebuffer, or active draw framebuffer has a multi-view layout. BUG=angleproject:2062 TEST=angle_end2end_tests Change-Id: I885bdc970c9606cfad882f31759f5780c65d15e5 Reviewed-on: https://chromium-review.googlesource.com/590237 Commit-Queue: Martin Radev <mradev@nvidia.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
04e2c3bc 2017-07-27 16:54:35 Disallow glCopyTex* with multi-view read framebuffers According to the ANGLE_multiview spec, glCopyTex* functions must generate an INVALID_FRAMEBUFFER_OPERATION error if the active read framebuffer has a multi-view layout. BUG=angleproject:2062 TEST=angle_end2end_tests Change-Id: Icadc4ac79843986076594da25a90ba807e511d1e Reviewed-on: https://chromium-review.googlesource.com/589447 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Martin Radev <mradev@nvidia.com>
7e69f76a 2017-07-27 14:54:13 Disallow active transform feedback with a multi-view draw framebuffer According to the ANGLE_multiview spec Draw* commands should generate an INVALID_OPERATION error if there is an active transform feedback object and the number of views in the active draw framebuffer is greater than 1. The patch addresses this by extending the base draw call validation. BUG=angleproject:2062 TEST=angle_end2end_tests Change-Id: I67221cb2cfee6febae8d97697b234aeffff313de Reviewed-on: https://chromium-review.googlesource.com/589268 Commit-Queue: Martin Radev <mradev@nvidia.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
7cf6166a 2017-07-26 17:10:53 Generate error on program-framebuffer num views mismatch According to the ANGLE_multiview spec Draw* commands should generate an INVALID_OPERATION error if the program uses the multiview extension and the number of views in the active draw framebuffer and active program differs. The patch addresses this by extending the base draw call validation. BUG=angleproject:2062 TEST=angle_end2end_tests Change-Id: I369070beb5ccb17211dbe61ebec40bfcbcf5bc4e Reviewed-on: https://chromium-review.googlesource.com/586605 Commit-Queue: Martin Radev <mradev@nvidia.com> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
6938285b 2017-07-21 16:38:44 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. 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. Fix detectition of multisampled D3D11 rendertargets when the sample count is 1. BUG=angleproject:891 Change-Id: Ief5531756651caa66f612e647d3d5c05c8c51ff5 Reviewed-on: https://chromium-review.googlesource.com/587459 Reviewed-by: Kenneth Russell <kbr@chromium.org>
40ac783b 2017-07-26 14:38:46 Implement remaining eglQuerySurface and eglSurfaceAttrib enums. BUG=angleproject:2075 Change-Id: I3b500fe80512e7a3e3a9ae9a9724015952c9cbc8 Reviewed-on: https://chromium-review.googlesource.com/587299 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
0328b575 2017-06-26 15:51:36 Bind all elements of unbound image arrays to unit zero Spec GLSL ES 3.10, section 4.4.5, Any uniform sampler, image or atomic counter variable declared without a binding qualifier is initially bound to unit zero. If the binding qualifier is used with an array, the first element of the array takes the specified unit and each subsequent element takes the next consecutive unit. BUG=angleproject:1987 TEST=angle_end2end_tests:ComputeShaderTest Change-Id: I6a8188449a91bf3e8ded37e067205dcae4e47fa7 Reviewed-on: https://chromium-review.googlesource.com/547977 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
31ecbd70 2017-07-26 13:01:27 Refactor eglQuerySurface and eglSurfaceAttrib. BUG=angleproject:2075 Change-Id: I6911a2a1e665237e1d262c06f3ccf2d84cc09669 Reviewed-on: https://chromium-review.googlesource.com/586860 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
5505bdc7 2017-07-26 14:39:27 Fix Win32Window::takeScreenshot. Several parts of this function were incorrectly checking for errors or passing the wrong parameters. If screenshotting fails, throw an exception in dEQP so that it is converted to a test failure instead of hanging the test. BUG=angleproject:2075 Change-Id: I19b55b273d0d3f1b47c1dac6affca69de8db21e0 Reviewed-on: https://chromium-review.googlesource.com/587300 Commit-Queue: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
b5cc1198 2017-07-06 10:47:20 ES31: Add Geometry Shader layout qualifiers in GLSL compiler This patch intends to implement Geometry Shader layout qualifiers required in OpenGL ES 3.1 extension GL_OES_geometry_shader in ANGLE GLSL compiler. 1. Add support to the shader type GL_GEOMETRY_SHADER_OES. 2. Implement Geometry Shader layout qualifiers in the GLSL compiler: (1) Add support to OpenGL ES 3.1 extension "GL_OES_geometry_shader". (2) Add validations of the input and output primitive declarations in the Geometry Shader layout declarations. (3) Add 'invocations' and 'max_vertices' support in the Geometry Shader layout declarations 3. Add unit tests to cover all the new features added in this patch. BUG=angleproject:1941 TEST=angle_unittests Change-Id: Ie693e11f8a00dab3552626ed63e9336c7fbd3cb8 Reviewed-on: https://chromium-review.googlesource.com/560647 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
4c19a8a8 2017-07-24 11:46:06 D3D11: Update cached dynamically recompiled programs. 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/531798 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
b6664925 2017-07-25 12:55:04 Add error handling macro to Context. 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/585288 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
14a26aea 2017-07-24 15:56:29 Disallow indirect draw calls for multi-view framebuffers 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/583027 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Martin Radev <mradev@nvidia.com>
4c56c607 2017-07-25 13:22:58 D3D: Make draw call translation check non-virtual. 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/584826 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
6caf405c 2017-07-26 07:50:08 StateManager11: Fix casing of include BUG= Change-Id: Ib237ce44644dba72bd55487756e0e69b724d30a3 Reviewed-on: https://chromium-review.googlesource.com/586429 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
26cf35a8 2017-07-26 11:01:02 Revert "Fix BlitFramebuffer validation for BGRA sources and targets." This reverts commit 17d270311efcd8c72f251a67e726518278e81c26. 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/586428 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
17d27031 2017-07-21 16:38:44 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>
1da00653 2017-06-20 17:16:25 Remove IndexRange in DrawElements functions 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/544634 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
a779b610 2017-07-24 11:46:05 Smart caching of VAO input layout. 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/529768 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
cab92ee4 2017-07-19 17:32:07 Fix WebGL validation of characters in shader source strings. 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>
9bc9a321 2017-07-21 14:28:17 Integrate multiview state in FBO completeness check 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>
7c5f5268 2017-07-05 12:20:19 Assign symbol ids in ArrayReturnValueToOutParameter 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/559533 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
5aca1939 2017-07-21 12:22:01 Framebuffer: Fix enabled draw buffers bitset. 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/581884 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
9603a956 2017-07-20 17:24:02 D3D11: Move applyShaders to StateManager11. 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>
253daa56 2017-07-20 17:24:01 D3D: Split applyTextures into each back-end. 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/580361 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
590f6235 2017-07-21 11:10:26 Fix getting temporary id in RewriteDoWhile 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>
d2391983 2017-07-20 16:26:01 Skip the RGBTextureTest.SRGB[A]Validation test on Ozone. 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/580255 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
b9c53d8d 2017-07-19 18:55:16 Remove FormatString And the global static it uses. BUG=angleproject:1644 Change-Id: I6c8b186ef0dce83fe64620729af4d87ea81c77f5 Reviewed-on: https://chromium-review.googlesource.com/577922 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
0d2ecb4e 2017-07-20 17:41:09 Output mapped name of shader variables in shader_translator 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>
0ca93f26 2017-07-17 15:13:36 eglplatform: add Wayland version of native EGL types BUG=angleproject:2105 Change-Id: I46e5f4458be830e27345fc04ad4c9fd6e98aa946 Reviewed-on: https://chromium-review.googlesource.com/575200 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
34d2007f 2017-07-18 20:07:18 Fix exposing internal shader interface variables 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/579050 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
5dae57b0 2017-07-14 16:15:55 Save side-by-side function arguments into attachment's state 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>
137032d9 2017-07-13 10:11:12 Validate ANGLE_multiview end-points 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>
222c517f 2017-07-19 16:15:42 Control Debug layers in ANGLE_platform_angle. 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>
a59a1c1e 2017-07-12 15:46:26 D3D11: Consolidate shader state application. This consolidates all the state changes for shaders into StateManager11. BUG=angleproject:2052 Change-Id: I64dc3af5b0f1459442369e09f93a9ca8ce3232b3 Reviewed-on: https://chromium-review.googlesource.com/531796 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
95107bc8 2017-07-12 15:46:25 D3D11: Consolidate primitive topology application. BUG=angleproject:2045 Change-Id: Ie1deac50a534ee748518d9ec5e6f749f3c78b53d Reviewed-on: https://chromium-review.googlesource.com/531795 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
6dd06eac 2017-07-19 13:47:55 Give StateManager11 internal dirty bits. 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>
298a35f0 2017-07-19 15:07:41 Rename EGL platform extension text files. 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/578368 Reviewed-by: Geoff Lang <geofflang@chromium.org>
b3f26b9e 2017-07-19 15:07:41 Add a zero-filled scratch buffer to Context. 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/576057 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
ab918821 2017-07-14 17:03:42 Clamp point size to maximum point size from the API on NVIDIA 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/574598 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
3860b6c0 2017-07-19 16:17:24 Fix arrays of structs containing samplers as parameters on HLSL 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/576041 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
191381fd 2017-04-11 13:59:04 ES31: Add glGetProgramResourceLocation API 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>
24fe74c1 2017-07-06 16:56:50 ES31: Query multisampled texture binding id 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>
a5e693af 2017-07-13 16:07:26 Make unique id counter a member of TSymbolTable 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>
e5285d29 2017-07-14 16:23:53 Handle ANGLE_multiview state queries 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/573780 Reviewed-by: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
6170bef8 2017-07-18 15:51:14 Fix validation of querying GL_FRAGMENT_SHADER_DERIVATIVE_HINT. 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/576156 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
9c335865 2017-07-18 11:51:38 Refactor StateManager11 for dirty bits. 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>
ab4be84f 2017-07-18 11:23:07 Add newlines when writing original shader source to shader debug output. 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/576064 Reviewed-by: Corentin Wallez <cwallez@chromium.org>
282847e9 2017-07-12 14:11:01 Clean up recording declarations in OutputHLSL 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/568018 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
dde78e8c 2017-05-22 14:13:27 ES31: Implement Vertex Attrib Binding on OpenGL 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>
ffb35f64 2017-07-14 18:01:07 Fix broadcasting gl_FragColor at the end of main Previously, the broadcast step would not get run in case the main() function returned before reaching its end. Now the broadcast step is put in a separate function that wraps main() if needed, so that it gets run even if the main() function in the original shader source returns in the middle. DrawBuffersTest is refactored to use ANGLETest::drawQuad() instead of calling glDrawArrays directly. BUG=angleproject:2109 TEST=WebGL conformance tests, angle_end2end_tests Change-Id: Id5f05094e816df03bc9c8ca62b60de914072682c Reviewed-on: https://chromium-review.googlesource.com/574597 Reviewed-by: Zhenyao Mo <zmo@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
3e5695d1 2017-07-17 15:21:14 Fix standalone OSX warnings BUG= Change-Id: I447900488559622108c0da12a352c88218f9ddc6 Reviewed-on: https://chromium-review.googlesource.com/575201 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
d2e87929 2017-07-12 15:42:34 Enable Haiku in platform-specific headers. 1. src/common/platform.h updated to define ANGLE_PLATFORM_POSIX on Haiku. 2. include/EGL/eglplatform.h updated to add stubs typedefs for platform-specific primitives for Haiku. Change-Id: I28775e909ad9cabec1c474ff4fe0a241eb05d6a1 Reviewed-on: https://chromium-review.googlesource.com/573022 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
cf42a7e8 2017-07-12 16:49:58 Add ANGLE_multiview end-points and tokens The patch adds the new end-points and tokens introduced by ANGLE_multiview without implementing them. BUG=angleproject:2062 Change-Id: I9be175263ab54b4f6d7537f05505b87ad763ee2d Reviewed-on: https://chromium-review.googlesource.com/570051 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Olli Etuaho <oetuaho@nvidia.com> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
4cff8d62 2017-07-06 14:54:09 ES31: TexParameter{if} validation for TEXTURE_2D_MULTISAMPLE on OpenGL When setting parameters by TexParameter{if} for TEXTURE_2D_MULTISAMPLE, an INVALID_ENUM error is generated if target is TEXTURE_2D_MULTISAMPLE, and pname is any sampler state from table 20.11. An INVALID_OPERATION error is generated if target is TEXTURE_2D_MULTISAMPLE, and pname TEXTURE_BASE_LEVEL is set to a value other than zero. BUG=angleproject:1590 TEST=angle_deqp_gles31_tests.exe --deqp-case=dEQP-GLES31.functional.texture.multisample.negative.texture* Change-Id: I5d71731c11fb6e114a57e753e439e180695a7c79 Reviewed-on: https://chromium-review.googlesource.com/560607 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Yunchao He <yunchao.he@intel.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
0f68463f 2017-07-13 12:42:15 Clean up inserting variables to symbol table This makes the TSymbolTable interface cleaner and prepares for making unique id counting thread-safe. BUG=angleproject:624 TEST=angle_unittests Change-Id: Ief99c9fc777603de28ba1517e351bc8a00633590 Reviewed-on: https://chromium-review.googlesource.com/570418 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
daaff1cc 2017-07-05 18:03:26 Set correct symbol ids when referring to GLSL built-ins The symbol ids are fetched from the symbol table. A new utility function is added to make this more convenient. BUG=angleproject:1490 TEST=angle_unittests, angle_end2end_tests Change-Id: I780430e3386f6599503d8290c568ca9bc9cad147 Reviewed-on: https://chromium-review.googlesource.com/559535 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
c7ba85c9 2017-07-14 22:17:01 TexutreD3D: Only update storage level if it exists. This was causing an assertion failure in updateStorageLevel when the storage didn't contain the requested level. Gate the call behind an isValidLevel check. TEST=conformance/misc/type-conversion-test.html BUG=angleproject:1815 Change-Id: Iadf46d232d5a117ae1ae74c6e71677b1e06a5321 Reviewed-on: https://chromium-review.googlesource.com/572705 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
a0016b7f 2017-07-14 14:30:46 Check depth-stencil attachment sample count. Currently we would only check for the color attachment sample count, which could return incorrect results for depth or stencil-only Framebuffers. BUG=angleproject:2108 Change-Id: I378349c91c0139ee507d88fa6a36a86234fea0d4 Reviewed-on: https://chromium-review.googlesource.com/571064 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
b50ccd36 2017-07-06 17:09:58 Use FindMainBody to retrieve node of main()'s body The patch addresses code duplication in cases in which main()'s body node has to be retrieved from the AST. TEST=angle_unittests Change-Id: I0ccee41821a5ecb2cdf09f5a928b178d6c037587 Reviewed-on: https://chromium-review.googlesource.com/561521 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Olli Etuaho <oetuaho@nvidia.com> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
318f9aa5 2017-05-17 17:47:28 Initialize ANGLE_multiview caps and workaround state The patch checks whether ANGLE_multiview can be supported in the OpenGL renderer, updates the caps and adds a workaround field to enable multiview support through the NV_viewport_array2 extension. BUG=angleproject:2062 TEST=angle_end2end_tests Change-Id: I99dae10564db7bcca41d7624f8de272c1d996e09 Reviewed-on: https://chromium-review.googlesource.com/567934 Reviewed-by: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
e71afb87 2017-07-03 16:47:14 Add specification for ANGLE_multiview The patch adds the specification for the ANGLE_multiview extension which enables efficient multiview rendering. The views can be laid out side-by-side onto a 2D texture or rendered on separated layers of a 2D texture array. BUG=angleproject:2062 Change-Id: I4edd3ab0cfbb3906d90c2a5667d8d1f99f291f1c Reviewed-on: https://chromium-review.googlesource.com/559089 Reviewed-by: Olli Etuaho <oetuaho@nvidia.com> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
4cafb867 2017-07-05 14:05:06 Sanitize AST nodes created by UseInterfaceBlockFields Don't add the same node pointer to the AST more than once, and assign the right symbol ids to symbol nodes. BUG=angleproject:1490 TEST=angle_unittests, angle_end2end_tests Change-Id: I3f00e9234245fe4b81a2388df3f83e13c4c24856 Reviewed-on: https://chromium-review.googlesource.com/559534 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
cca63f2e 2017-07-14 11:08:41 Fix compilation error in RobustResourceInitTest.cpp The patch fixes a compilation bug caused from having local variable names clash with the variables names from a parent scope. BUG=angleproject:1815 Change-Id: I3d23faaafdea9be503da99512b204d7a50a3b228 Reviewed-on: https://chromium-review.googlesource.com/571000 Reviewed-by: Olli Etuaho <oetuaho@nvidia.com> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
c43be720 2017-07-13 16:22:14 Implement ANGLE_program_cache_control extensions. This will give the browsers the ability to control the cache size, query and populate the contents, and trim cache contents on memory pressure. BUG=angleproject:1897 Change-Id: I6edaa7d307b890223db98792d5b074e4a7fdfaa4 Reviewed-on: https://chromium-review.googlesource.com/563606 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
bc58515e 2017-06-23 15:42:17 ES31: Add 'buffer' qualifier support in shader This change added 'buffer' qualifier support in shader which corresponds to ESSL 3.1 spec, session 4.3.7 'Buffer Variables'. BUG=angleproject:1951 TEST=angle_unittests:BufferVariablesTest Change-Id: I2ecb5317d5ea9d378a60b03f86bdae04dbd89e9f Reviewed-on: https://chromium-review.googlesource.com/534960 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
c5af8ba6 2017-07-11 12:18:31 D3D11: Make sure to resolve the storage for CopyTexImage3D. TextureD3D_3D::copySubImage worked around missing functionality in D3D11 for copying a framebuffer directly to a texture storage but didn't handle the case of a texture storage already existing. This caused the image to have out-of-date data before the new data was copied into it. Simply copy the data from the storage back into the image before performing the copy from the framebuffer and then copy back to the storage afterwards. TEST=conformance2/textures/misc/copy-texture-image-webgl-specific.html BUG=angleproject:1815 Change-Id: I308d6a1d3ecbc738f7d0e232bece433e6b353638 Reviewed-on: https://chromium-review.googlesource.com/567199 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
d90b214f 2017-07-12 15:33:35 D3D11: If an image is dirty, copy it to the storage before copying from a FB. If a storage already existed, it may have old data in it. Check if the image is dirty and copy the initialized memory into the storage before copying data from the framebuffer. TEST=conformance/textures/misc/copy-tex-image-and-sub-image-2d BUG=angleproject:1815 Change-Id: Ic69c5519b2e09e4b62025b1bf413d2a71a4a2afb Reviewed-on: https://chromium-review.googlesource.com/568410 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
d7ceaa16 2017-07-12 17:46:35 Remove TIntermSymbol::setId The only place it was being used was when parsing array declarators. The declarator only needs to be added to the AST when the variable has successfully been declared, so this usage was not necessary. BUG=angleproject:1490 TEST=angle_unittests Change-Id: I05b8851cfdebc9253c9fda8b12733f23da604ca6 Reviewed-on: https://chromium-review.googlesource.com/569160 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
d178aa46 2017-07-13 14:03:22 Fix attachment validation bug Passing COLOR_ATTACHMENTm, where m is greater or equal to MAX_COLOR_ATTACHMENTS, to a FramebufferTexture* function should generate an INVALID_OPERATION instead of an INVALID_VALUE error. BUG=angleproject:2106 TEST=angle_end2end_tests Change-Id: I99045defcbe5eb2afefac1b45062ee4245f50dd3 Reviewed-on: https://chromium-review.googlesource.com/569966 Reviewed-by: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
34bc315d 2017-03-29 14:56:01 ES31: Implement multisampled Textures for D3D part. Implement TexStorage2DMultisample api for d3d part. BUG=angleproject:1590 TEST=angle_end2end_tests --gtest_filter=TextureMultisampleTest* TEST=angle_deqp_gles31_tests --deqp-case=dEQP-GLES31.functional.texture.multisample.negative.fbo_* Change-Id: Icbfba45b9c2965af02b54dd4060b7b49970cb74b Reviewed-on: https://chromium-review.googlesource.com/457161 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
3ec75686 2017-07-05 17:02:55 Collect AST transform utilities to a separate file Collect static functions that are used to create nodes in AST transformations into a single file. BUG=angleproject:1490 TEST=angle_unittests Change-Id: I6f87422988fa088f2f4b48986e378a2909705cb7
84db5733 2017-07-13 08:00:02 Merge "Fix non statically used fragment input structs on HLSL"
e2a728aa 2017-07-12 20:39:35 Merge "Validate uniforms and attributes name conflicts when linking"
d5fbb8b0 2017-07-12 19:29:47 Merge "Add tests for the cache control extension."
59bc668c 2017-07-12 18:57:24 Merge "Validate the ReadPixels type and format for INVALID_ENUM."
caa5cda0 2017-06-15 21:14:03 Validate uniforms and attributes name conflicts when linking Uniforms and attribute names have global scope, according to: GLSL 1.017 sections 4.2.6, 4.3.3 and 4.3.4. Thus, they can't have same names. BUG=angleproject:2014 Change-Id: Ibeb064aca877e404a67b9e3e9b57a0cc42e86f9f
6fc8c9b9 2017-07-12 17:14:54 Merge "Validate that the mip level is not too large for CopyTextureCHROMIUM."
9dd5dbd8 2017-07-12 16:26:42 Merge "Link atomic counters to buffers"
293e114d 2017-07-11 13:51:05 Add tests for the cache control extension. A first test verifies the validation of the extension, and a second compiles a simple shader and checks the cache behaviour. These tests don't currently run since the extension is disabled, but they will start running as soon as we expose it. BUG=angleproject:1897 Change-Id: Id4a76b83090712a267576069b711eeee29aa81dd
280ba991 2017-04-18 16:30:58 Validate the ReadPixels type and format for INVALID_ENUM. GL_INVALID_ENUM should be generated if the type or format arguments were not valid for any ReadPixels command. This validation should happen before validating if the combination of format and type is valid. TEST=conformance/reading/read-pixels-test BUG=angleproject:2000 Change-Id: If49d69655f5ab0a3abbde58b49541c84249c1750
3847f94d 2017-07-12 11:17:28 Validate that the mip level is not too large for CopyTextureCHROMIUM. When the mip level was greater than the maximum, it could cause an out-of-bounds read when trying to query the Texture's size and format later in the validation. BUG=740426 Change-Id: Ibd6c977981e5f8b7368c161b7969d9e916c6095b
1636e1b9 2017-07-12 14:29:06 Merge "D3D11: Clip copy rect to the source framebuffer for copyTexImage3D."
f69ac0a5 2017-07-12 14:18:57 Merge "Add support for new internalformats in copyTextureCHROMIUM"
06a06f5e 2017-07-12 12:22:15 Fix non statically used fragment input structs on HLSL Add static use information to struct fields that mirrors the static use information on the struct itself. This way dynamically generated HLSL doesn't need special handling for initializing fragment inputs if they are structs. This fixes a problem with the previous code where dynamically generated HLSL ended up trying to initialize structs that are not declared in the HLSL output because they were not being referenced. BUG=angleproject:2104 TEST=angle_end2end_tests Change-Id: I21283ce4fe26515d62d95e61f8155dc9a9b44cf1
2c7c4268 2017-07-12 07:53:34 Merge "Select viewport index in the GLSL/ESSL vertex shader"