- 21 Sep, 2017 2 commits
-
-
Jiawei Shao authored
The workaround for calling clearRenderTargetView on small targets isn't needed on the newly released Intel D3D driver 15.46-4771 because the fix of this bug has been merged into this driver. BUG=chromium:655534 Change-Id: I90125971fd4b782b7363b8ca3104bd500e21a034 Reviewed-on: https://chromium-review.googlesource.com/668223 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by:
Jamie Madill <jmadill@chromium.org>
-
Jamie Madill authored
"Add test for GL_KHR_robust_buffer_access_behavior" introduced a failure in Windows 10 NVIDIA OpenGL configs. "ES31: Enable shader storage buffer support for OpenGL backend" introduced a failure on Linux Intel HD 630 configs. BUG=angleproject:1463 BUG=angleproject:1951 Change-Id: I791bc729893b7f31093ab1678dc8d01edfbd0a5a Reviewed-on: https://chromium-review.googlesource.com/676473Reviewed-by:
Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
-
- 20 Sep, 2017 10 commits
-
-
Jamie Madill authored
This allows us to skip calling the dynamic shader generation and program shader application when there haven't been any state changes. It builds on the previous work that immediately update state caches in the VertexArray11 and Framebuffer11. It should improve performance in draw-call limited applications by a small margin. For reference, here are the conditions under which the shaders are refreshed: 1. Directly changing the program executable 2. The vertex attribute layout 3. The fragment shader's rendertargets 4. Enabling/disabling rasterizer discard 5. Enabling/disabling transform feedback 6. An internal shader was used 7. Drawing with/without point sprites Improves the score of the draw call stress test for the D3D11 back-end (with null driver) by about 40% on my test machine. The 9_3 back-end seems to have an issue where the getSRV call to a texture storage can change the "use level zero workaround" status of the storage, which in turn will invalidate the state. Since this is localized to 9_3 only, put in a hack to disable an assert check for now. BUG=angleproject:2151 Change-Id: Idbd0a31376691b33972e735d5833a9b02a8a4aa9 Reviewed-on: https://chromium-review.googlesource.com/666278Reviewed-by:
Geoff Lang <geofflang@chromium.org> Reviewed-by:
Frank Henigman <fjhenigman@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
-
Jamie Madill authored
The used flag was redundant with the index (which used MAXUINT). The name was redundant with the stored uniform. Removing these gives a very minor performance speed up when iterating and retrieving uniform locations. BUG=angleproject:1390 Change-Id: Ieeccdff7c131e1359e754e246d3648b73aad5baf Reviewed-on: https://chromium-review.googlesource.com/659224 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by:
Geoff Lang <geofflang@chromium.org>
-
Jamie Madill authored
For some reason we were using the second GLint value passed into the method, when the spec says we should have a single clear value. Noticed when adding tests for lazy robust resource init (tests will be added in a subsequent patch). BUG=angleproject:2107 Change-Id: Iadfc5072796255072bfb71ff1918253045e29576 Reviewed-on: https://chromium-review.googlesource.com/675049 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by:
Frank Henigman <fjhenigman@chromium.org>
-
Jamie Madill authored
This allows us to call StateManager11::invalidateRenderTarget from the Framebuffer11::signal function, which will then trigger state refresh on the next draw call. This requires passing Context through a few more Renderbuffer methods, and reorganizing the RenderTarget signalling so that it doesn't signal dirty in the destructor. Instead they are signaled as they are destroyed in the containing classes. BUG=angleproject:2151 Change-Id: I4cf575e4a01b48275ff78d75bc55b2d1fced591d Reviewed-on: https://chromium-review.googlesource.com/673139 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by:
Geoff Lang <geofflang@chromium.org> Reviewed-by:
Frank Henigman <fjhenigman@chromium.org>
-
Jamie Madill authored
This cleans up some of the iteration logic. BUG=angleproject:2151 Change-Id: I8d80a8d732ee808babbb4859290b648b4fa67b4d Reviewed-on: https://chromium-review.googlesource.com/673138 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by:
Geoff Lang <geofflang@chromium.org>
-
Jamie Madill authored
This ensures they are auto-freed when the Storage is destroyed. Also remove the 'delete this' design pattern. BUG=angleproject:2151 Change-Id: I784b94c7125a1bbc15f5d6ae90e55317e199faa6 Reviewed-on: https://chromium-review.googlesource.com/673137 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by:
Geoff Lang <geofflang@chromium.org> Reviewed-by:
Frank Henigman <fjhenigman@chromium.org>
-
Jamie Madill authored
This will allow us to pull out the Renderer from the Context in more places in Buffer11, for state update. Impacts a few method calls in a few places. BUG=angleproject:2151 Change-Id: I1360caea65a94d3de4cd9f52d1b74b10439b02b3 Reviewed-on: https://chromium-review.googlesource.com/673136Reviewed-by:
Geoff Lang <geofflang@chromium.org> Reviewed-by:
Frank Henigman <fjhenigman@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
-
Jiawei Shao authored
This patch enables 'location' layout qualifier for vertex outputs and fragment shader inputs when the shader version is 3.1 in ANGLE GLSL compiler and adds the check on location conflicts for these varyings. According to GLSL ES 3.1 SPEC (Chapter 4.4.1 and Chapter 4.4.2), 'location' layout qualifier is allowed on both inputs and outputs of vertex and fragment shaders. 'location' layout qualifier on shader interfaces is only valid on shaders whose version is 3.1 and above. According to GLSL ES 3.0 SPEC, vertex shader cannot have output layout qualifiers (Chapter 4.3.8.2) and fragment shader cannot have input layout qualifiers (Chapter 4.3.8.1). The 'location' qualifier on varyings is used in the shader interface matching defined in OpenGL ES 3.1. (OpenGL ES 3.1 SPEC Chapter 7.4.1). This new link rule will be added to Program.cpp in another patch. For the OpenGL ES 3.1 extension GL_OES_geometry_shader, according to GL_OES_shader_io_blocks SPEC (Chapter 4.4.1 and Chapter 4.4.2), 'location' layout qualifier is both valid on geometry shader inputs and outputs. This feature will be implemented together with other rules on geometry shader inputs and outputs. BUG=angleproject:2144 TEST=angle_unittests Change-Id: I62d85f7144c177448321c2db36ed7aaeaa1fb205 Reviewed-on: https://chromium-review.googlesource.com/645366 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by:
Geoff Lang <geofflang@chromium.org>
-
Jiajia Qin authored
BUG=angleproject:1951 TEST=angle_end2end_tests:ShaderStorageBuffer Change-Id: I1afc3cd005ad2e595c6ce937fc53e17423f8ec8b Reviewed-on: https://chromium-review.googlesource.com/618132 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by:
Geoff Lang <geofflang@chromium.org>
-
Jiajia Qin authored
This test is ported from webgl test element-index-uint.html. BUG=angleproject:1393, angleproject:1463 Change-Id: I165e3dd2913968c8cc035c570a7bcaf91aed095a Reviewed-on: https://chromium-review.googlesource.com/651239 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by:
Geoff Lang <geofflang@chromium.org>
-
- 19 Sep, 2017 8 commits
-
-
Martin Radev authored
The patch adds new built-ins and extends the semantic parser to add support for textureGather and textureGatherOffset. BUG=angleproject:1442 TEST=angle_unittests TEST=angle_deqp_gles31_tests.exe --deqp-case=dEQP-GLES31.functional.texture.gather* --deqp-egl-display-type=angle-gl Change-Id: Iaf98c3420fbd61193072fdec8f5a61ac4c574101 Reviewed-on: https://chromium-review.googlesource.com/660124 Commit-Queue: Martin Radev <mradev@nvidia.com> Reviewed-by:Geoff Lang <geofflang@chromium.org>
-
Brandon Jones authored
When using FRAGMENT_SHADER_DERIVATIVE_HINT_OES as a hint with OES_standard_derivatives disabled, we should return INVALID_ENUM, not INVALID_OPERATION. Bug: angleproject:2158 Change-Id: I5759f1e8bb19d2caed278506054aebc5d82d431c Reviewed-on: https://chromium-review.googlesource.com/673374Reviewed-by:
Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
-
Jamie Madill authored
This will ensure that new methods (placed at the end) don't collide with the context pointer when using a mismatched platform. BUG=angleproject:1892 Change-Id: Ice6a3ccaf3cc2a1e36a04bc217386cf096612176 Reviewed-on: https://chromium-review.googlesource.com/672147Reviewed-by:
Frank Henigman <fjhenigman@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
-
Jamie Madill authored
We could dereference a null pointer in a couple edge cases. BUG=angleproject:2151 Change-Id: I0d40b930c5008b80928bfe8c93588f80127fd166 Reviewed-on: https://chromium-review.googlesource.com/665995 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by:
Yuly Novikov <ynovikov@chromium.org>
-
Jamie Madill authored
Instead of using a compile-time define, use an OS call to override the environment variable the loader uses to look for layers. This should allow us to have a run-time override mechanism, so we can more easily use ANGLE with RenderDoc and other tools that hook into the layers for debugging and profiling purposes. This should also allow the developer to install and use their own layers with ANGLE if desired. This patch removes the angle_loader.h generation since it is no longer necessary. It also fixes an unrelated loader warning that occured when releasing the current pipeline object. BUG=angleproject:1898 Change-Id: Ic4a5120a6b73745397451ef9e3897e157da1feda Reviewed-on: https://chromium-review.googlesource.com/671490Reviewed-by:
Jamie Madill <jmadill@chromium.org> Reviewed-by:
Frank Henigman <fjhenigman@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
-
Jamie Madill authored
This warning was popping up with a new version of the layers when running the hello_triangle sample. Fix it by assigning the current Serial ID to the Context for the current pipeline. A more robust fix in the future would probably be to assign Serial IDs to the Pipelines themselves. BUG=angleproject:1898 Change-Id: Ib5e8ea7c4c26907d1987529d8127249f9b18e17f Reviewed-on: https://chromium-review.googlesource.com/672146Reviewed-by:
Jamie Madill <jmadill@chromium.org> Reviewed-by:
Frank Henigman <fjhenigman@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
-
Jamie Madill authored
We had a performance regression in the Textures benchmark. What the test was doing was iterating over all possible texture state, ensuring the active texture was dirty every frame. This is an attempt to improve on the speed by not doing as much resetting work in State::syncProgramTextures. It introduces an active textures mask to speed iteration over the active texture set. Also makes a refactoring change to Context to make it easier to limit caps to an implementation maxium. The number of active textures is limited to 64 so they easily fit in the bitset mask, with a limit of 32 per shader stage. No mask is currenly kept for compute shaders. With the fix the performance should be about the same as before (which is good, as the test always sets the textures dirty). Test: TexturesBenchmark.Run/gl_8_textures_5_rebind_3_state_8_mips BUG=chromium:765363 BUG=angleproject:1387 Change-Id: I8bcf95be3671195373573f89f406edaba40aa1be Reviewed-on: https://chromium-review.googlesource.com/670279Reviewed-by:
Geoff Lang <geofflang@chromium.org> Reviewed-by:
Frank Henigman <fjhenigman@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
-
Kai Ninomiya authored
To prevent collisions when linking with other copies of MurmurHash3. BUG=697758 Change-Id: Id8a5c709ba972812ffa3ca143e7553cbf05fc57a Reviewed-on: https://chromium-review.googlesource.com/671194 Commit-Queue: Kai Ninomiya <kainino@chromium.org> Reviewed-by:
Jamie Madill <jmadill@chromium.org>
-
- 18 Sep, 2017 9 commits
-
-
Jamie Madill authored
GetInteger64v wasn't introduced until GL 3.2, but some of the enums for caps that are 64-bit in 3.2 (eg, max uniform block size) were first introduced as 32-bit values in extensions. This comes up when trying to use RenderDoc's OpenGL simulator, since it exposes some relevant extensions and only uses core version 3.1. BUG=None Change-Id: Ie4be71b5c8656aae0fe08c270a53f5ef86c99710 Reviewed-on: https://chromium-review.googlesource.com/599030Reviewed-by:
Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
-
Kai Ninomiya authored
BUG=angleproject:2041 Change-Id: Id5a85c40358b018c17984ac26ee7f97f10584d4b Reviewed-on: https://chromium-review.googlesource.com/669642Reviewed-by:
Jamie Madill <jmadill@chromium.org> Reviewed-by:
Olli Etuaho <oetuaho@nvidia.com> Commit-Queue: Kai Ninomiya <kainino@chromium.org>
-
Corentin Wallez authored
These tests crash the OSX shader compiler. Skip them instead of expecting a failure. BUG=angleproject:2137 Change-Id: I4476ba93390ce8dfc1e609e4297d6ce1236d2686 Reviewed-on: https://chromium-review.googlesource.com/671285 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by:
Corentin Wallez <cwallez@chromium.org>
-
Corentin Wallez authored
Apple Clang 8.1 doesn't allow implicit conversion from gl::Error to egl::Error with the egl::Error::Error(gl::Error&&) constructor. Same thing for gl and egl reversed. This commits add conversion constructors taking errors by value. There should be not performance impact for non-error code paths. BUG= Change-Id: I91acf094af923080780b91850146d71016ec5ebc Reviewed-on: https://chromium-review.googlesource.com/671284Reviewed-by:
Corentin Wallez <cwallez@chromium.org> Reviewed-by:
Jamie Madill <jmadill@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
-
Yunchao He authored
The program pipeline object management entries are: GenProgramPipelines DeleteProgramPipelines BindProgramPipeline IsProgramPipeline BUG:angleproject:2123 Change-Id: I114d054b90caf2ee3f9befef7439552a1c309bc4 Reviewed-on: https://chromium-review.googlesource.com/629978 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by:
Jamie Madill <jmadill@chromium.org> Reviewed-by:
Geoff Lang <geofflang@chromium.org>
-
Jamie Madill authored
When switching VAOs, if we switch to a VAO which has disabled attributes, we could occasionally in some edge cases not have a buffer initialized to render with. Fix this by re-checking the current value (disabled) attributes every VAO switch. Probably a regression caused by d28758de: "D3D11: Re-enable updateVertexBuffer dirty bits." BUG=angleproject:2156 BUG=angleproject:1156 Change-Id: Ic1795f914b9b4fa846241b0b4f9a8fe9c1183320 Reviewed-on: https://chromium-review.googlesource.com/669963Reviewed-by:
Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
-
Olli Etuaho authored
This is better in many ways: 1. It doesn't confuse clang format 2. \n doesn't need to be included after preprocessor directives like the version directive. 3. It's using built-in functionality instead of something custom. Raw string literals should be the preferred way to include shader source in C++ files going forward. BUG=angleproject:2157 TEST=angle_end2end_tests Change-Id: I8b236a6e2d5c25d920297e5bc5b5b143eddeba1f Reviewed-on: https://chromium-review.googlesource.com/671046Reviewed-by:
Corentin Wallez <cwallez@chromium.org> Reviewed-by:
Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
-
Olli Etuaho authored
This is required to pass some dEQP GLES 3.1 tests for arrays of arrays, and WebGL conformance tests were also recently fixed to require this behavior. The intent of the GLSL ES spec was not to restrict usage of length(). In practice GL drivers don't implement array length() on expressions with side effects correctly in all cases. HLSL doesn't have an array length operator either. Because of this we always remove array length ops from the AST before output. BUG=angleproject:2142 TEST=angle_unittests, angle_end2end_tests, WebGL conformance tests Change-Id: I863a92e83ac5315b013af9a5626348482bad72b3 Reviewed-on: https://chromium-review.googlesource.com/643190 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by:
Jamie Madill <jmadill@chromium.org>
-
Martin Radev authored
The patch cleans up MultiviewDrawTest.cpp by removing some calls to glUseProgram as that would be done by drawQuad anyway. BUG=angleproject:2062 TEST=angle_end2end_tests Change-Id: If9aff686b0ea25e63467852845c46582fdf741c5 Reviewed-on: https://chromium-review.googlesource.com/657678Reviewed-by:
Olli Etuaho <oetuaho@nvidia.com> Reviewed-by:
Geoff Lang <geofflang@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
-
- 16 Sep, 2017 1 commit
-
-
Jamie Madill authored
We should upstream this fix to dEQP once we have the chance. BUG=chromium:759402 Change-Id: I64e5df9bc6552e6fabe2b4b60c877fa30fd4c1f2 Reviewed-on: https://chromium-review.googlesource.com/670101 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by:
Jamie Madill <jmadill@chromium.org>
-
- 15 Sep, 2017 4 commits
-
-
Corentin Wallez authored
BUG=angleproject:2137 TBR=geofflang@chromium.org Change-Id: I16e0ca6422deed0c225f3eca11189ec7c62fb5c2 Reviewed-on: https://chromium-review.googlesource.com/669361Reviewed-by:
Corentin Wallez <cwallez@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
-
Martin Radev authored
The patch updates the cubemap completeness check to use the base level instead of always level 0. Without this change the cubemap faces at level 0 would have to be created in order to specify another base level through TexParameteri. BUG=angleproject:2153 TEST=angle_end2end_tests Change-Id: Iee1fdc6adf0e69d797821a2ce2f2b2b85dfcdfc1 Reviewed-on: https://chromium-review.googlesource.com/668439 Commit-Queue: Martin Radev <mradev@nvidia.com> Reviewed-by:
Corentin Wallez <cwallez@chromium.org> Reviewed-by:
Geoff Lang <geofflang@chromium.org>
-
Jamie Madill authored
This forces all return values to be checked for gl::Error. Requires quite a bit of minor refactoring. I also added a macro to swallow an error without returning from a function. We could look at storing the errors in the Context at some point, since almost always when we're generating errors that we need to discard we have access to the Context as a parameter. BUG=angleproject:2150 Change-Id: I457e48a30c002eda0993acbcd3180ba87bf169fb Reviewed-on: https://chromium-review.googlesource.com/665173 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by:
Yuly Novikov <ynovikov@chromium.org>
-
Peter Collingbourne authored
The object owned by the BindingPointer does not necessarily derive from RefCountObject; it could also just derive from RefCountObjectNoID (e.g. Compiler). Found with Clang's CFI bad cast checker. BUG=chromium:507755 Change-Id: I7e431746b2783e2fc0f2d347a4a27bd60da18473 Reviewed-on: https://chromium-review.googlesource.com/667218Reviewed-by:
Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
-
- 14 Sep, 2017 6 commits
-
-
Jamie Madill authored
This will prioritize re-allocating smaller handles. It should not affect performance in most cases, but will prefer allocating handles that are in the "fast" portion of the resource map. BUG=angleproject:1458 Change-Id: Ib2853be936f09fc1e6b5bfb870c360ce8424ab5f Reviewed-on: https://chromium-review.googlesource.com/665993 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by:
Geoff Lang <geofflang@chromium.org>
-
Jamie Madill authored
This was already implemented, it simply hooks it up to the rest of the code. Could improve performance on some badly behaved benchmarks. BUG=angleproject:1390 Change-Id: I539df611d51ca085712fa8022bf8a7c1990afc65 Reviewed-on: https://chromium-review.googlesource.com/663896 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by:
Geoff Lang <geofflang@chromium.org> Reviewed-by:
Yuly Novikov <ynovikov@chromium.org>
-
Jamie Madill authored
Also use a single UpdateSubresource call to update the buffer. Should improve performance on some benchmarks. BUG=angleproject:1390 Change-Id: I70d54d86d3d3beb0e2caee86338ee03081070ac8 Reviewed-on: https://chromium-review.googlesource.com/663895Reviewed-by:
Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
-
Jamie Madill authored
Now that we have support for the Debug runtime on the Chromium bots, we can enable the feature in angle_end2end_tests that checks for any runtime messages after test execution. They should now show up in the Chromium CQ. BUG=angleproject:1878 Change-Id: Ie7502b031a49bcb6a68cf7e3f5e40760fa076ec1 Reviewed-on: https://chromium-review.googlesource.com/667724Reviewed-by:
Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
-
Corentin Wallez authored
BUG+angleproject:2137 Change-Id: Ib33210cc89c846db665887f0e59e4b1c91fe29b7 Reviewed-on: https://chromium-review.googlesource.com/665363Reviewed-by:
Geoff Lang <geofflang@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
-
Jamie Madill authored
This probably was left out accidentally. Also this fixes the return type of the prototype in the extension header (should be void, not boolean). BUG=angleproject:1523 Change-Id: I7bf0b36b05a4cba4cb6fb2411fc53103dda54bfe Reviewed-on: https://chromium-review.googlesource.com/657898Reviewed-by:
Jamie Madill <jmadill@chromium.org> Reviewed-by:
Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
-