|
2bc94733
|
2017-09-20T21:57:29
|
|
D3D11: Minor optimizations to vertex attribute application.
Introduce a dirty bit for current value attribs, and try to speed up
the check for dirty vertex attribs.
This series of small optimizations gives about a 15% improvement on
the draw call benchmark for the D3D11 backend with the null driver.
BUG=angleproject:1155
Change-Id: Idf560efa3af62776e8bdbdf693f8b06db8792c21
Reviewed-on: https://chromium-review.googlesource.com/666048
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
f1581583
|
2017-09-20T21:57:28
|
|
Minor cleanup to setIndexBuffer.
This cleans up the point sprites dirtying logic into applyIndexBuffer.
This series of small optimizations gives about a 15% improvement on
the draw call benchmark for the D3D11 backend with the null driver.
BUG=angleproject:1155
Change-Id: I210dd408d11ef5a0b58b0ad32d1255c787a55fba
Reviewed-on: https://chromium-review.googlesource.com/666047
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
74b30e46
|
2017-09-20T21:57:27
|
|
Improve the speed of MarkAttachmentsDirty.
Only iterate the enabled draw buffers, and the depth/stencil buffer.
This series of small optimizations gives about a 15% improvement on
the draw call benchmark for the D3D11 backend with the null driver.
BUG=angleproject:1155
Change-Id: I5b29362f93c016c146d2a6527b378853bc070239
Reviewed-on: https://chromium-review.googlesource.com/666046
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
1b7ed0ef
|
2017-09-20T21:57:26
|
|
D3D11: Minor optimizations to Renderer11.
This moves the skipDraw logic into applyPrimitiveType, since it's
more efficient to only check the primitive type once. Also merges
the draw*Impl and genericDraw* methods, since the generic* methods
weren't really doing anything anymore, and all the state logic lives
in StateManager::updateState.
This series of small optimizations gives about a 15% improvement on
the draw call benchmark for the D3D11 backend with the null driver.
BUG=angleproject:1155
Change-Id: I299213da6d1bbcb08691d5b50162e6cae16cb4bb
Reviewed-on: https://chromium-review.googlesource.com/666044
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
61491505
|
2017-09-15T22:32:21
|
|
Tighten clear-twice workaround on Windows Skylake Intel GPU
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>
|
|
a5dc625c
|
2017-09-20T21:08:14
|
|
Suppress two failing angle_end2end_tests.
"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/676473
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
c8bee335
|
2017-09-20T15:42:09
|
|
D3D11: Implement a dirty bit for Shaders.
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/666278
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
fb997ec1
|
2017-09-20T15:44:27
|
|
Removed "name" and "used" from variable location.
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>
|
|
805d281a
|
2017-09-20T13:21:42
|
|
D3D11: Fix ClearBufferiv with STENCIL.
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>
|
|
ea84f6ff
|
2017-09-20T13:20:30
|
|
Pass Context to Framebuffer11 dirty callback.
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>
|
|
8ec383e6
|
2017-09-20T13:20:29
|
|
Use array template aliases in TextureStorage11.
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>
|
|
136a2742
|
2017-09-20T12:29:44
|
|
TextureStorage11: Use unique_ptr for RenderTargets.
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>
|
|
33510107
|
2017-09-20T10:39:18
|
|
Pass gl::Context to more Buffer methods.
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/673136
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
4cc89e2b
|
2017-08-31T14:25:54
|
|
ES31: Enable 'location' layout qualifier on shader interfaces in compiler
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>
|
|
729b2c6e
|
2017-08-14T09:36:11
|
|
ES31: Enable shader storage buffer support for OpenGL backend
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>
|
|
47bf2dc5
|
2017-09-05T15:00:25
|
|
Add test for GL_KHR_robust_buffer_access_behavior
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>
|
|
84aa2dcf
|
2017-09-11T15:51:02
|
|
Add textureGather and textureGatherOffset
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>
|
|
72f58fa3
|
2017-09-19T10:47:41
|
|
Change Returned Error For Invalid Hint
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/673374
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
7aa786c8
|
2017-09-19T13:57:15
|
|
Fix warnings produced from MSVS code analysis.
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>
|
|
b8bbbf9e
|
2017-09-19T00:24:59
|
|
Vulkan: Use environment override to load layers.
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/671490
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
abd31359
|
2017-09-19T00:24:58
|
|
Vulkan: Fix deleting in-use Pipeline.
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/672146
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
0f80ed86
|
2017-09-19T00:24:56
|
|
Improve speed of iterating dirty textures.
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/670279
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
8b2142e3
|
2017-09-18T13:17:13
|
|
Put MurmurHash3 functions in the angle namespace
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>
|
|
10ce2d28
|
2017-09-16T09:47:19
|
|
GL: Fix 64-bit caps query on older GL drivers.
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/599030
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
f3d57454
|
2017-09-15T14:28:50
|
|
Enable SH_INITIALIZE_UNINITIALIZED_LOCALS on Mac
BUG=angleproject:2041
Change-Id: Id5a85c40358b018c17984ac26ee7f97f10584d4b
Reviewed-on: https://chromium-review.googlesource.com/669642
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
Commit-Queue: Kai Ninomiya <kainino@chromium.org>
|
|
704e862f
|
2017-09-18T11:06:00
|
|
dEQP GLES2: skip some tests on Mac Intel
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>
|
|
afe8824b
|
2017-09-18T11:03:24
|
|
Fix standalone compilation on Mac
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/671284
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
|
|
a336b90f
|
2017-08-02T16:05:21
|
|
ES31: Impl program pipeline object management entries for GL backend.
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>
|
|
5307e15d
|
2017-09-17T16:43:07
|
|
D3D11: Re-check disabled attribs on VAO switch.
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 d28758d:
"D3D11: Re-enable updateVertexBuffer dirty bits."
BUG=angleproject:2156
BUG=angleproject:1156
Change-Id: Ic1795f914b9b4fa846241b0b4f9a8fe9c1183320
Reviewed-on: https://chromium-review.googlesource.com/669963
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
a20af6d7
|
2017-09-18T13:32:29
|
|
Use C++11 raw string literals instead of SHADER_SOURCE macro
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/671046
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
bb5a7e29
|
2017-08-30T13:03:12
|
|
Allow length() on arbitrary array expressions
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>
|
|
67a8a014
|
2017-09-08T13:03:52
|
|
Clean up MultiviewDrawTest.cpp
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/657678
Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
63490943
|
2017-09-15T23:03:14
|
|
Work around VS 2017 compiler bug in dEQP.
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>
|
|
806cda93
|
2017-09-15T15:57:26
|
|
Fix newly added Mac dEQP expectations
BUG=angleproject:2137
TBR=geofflang@chromium.org
Change-Id: I16e0ca6422deed0c225f3eca11189ec7c62fb5c2
Reviewed-on: https://chromium-review.googlesource.com/669361
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
|
|
7e2c0d37
|
2017-09-15T14:25:42
|
|
Fix cubemap completeness check
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>
|
|
71c88b31
|
2017-09-14T22:20:29
|
|
Enable [[nodiscard]] for gl::Error.
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>
|
|
32b7e237
|
2017-09-14T15:44:17
|
|
Fix bad casts in BindingPointer::set.
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/667218
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
eccd7ece
|
2017-09-14T15:46:22
|
|
Use a heap for the released handle list.
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>
|
|
80823cc8
|
2017-09-14T15:46:21
|
|
D3D: Add memcmp filtering for matrix uniforms.
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>
|
|
4148fd74
|
2017-09-14T15:46:20
|
|
Add separate dirty bits for Pixel and Fragment uniforms.
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/663895
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
371ed53a
|
2017-09-14T13:38:26
|
|
Enable D3D11 warnings in Release end2end_tests.
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/667724
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
9c6cfffe
|
2017-09-13T14:27:05
|
|
dEQP GLES2: Add suppressions for Mac
BUG+angleproject:2137
Change-Id: Ib33210cc89c846db665887f0e59e4b1c91fe29b7
Reviewed-on: https://chromium-review.googlesource.com/665363
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
|
|
9dfa628d
|
2017-09-08T11:06:03
|
|
Add RequestExtension to static link.
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/657898
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
da8e257c
|
2017-09-12T17:21:16
|
|
Number of views should match when Draw* is called
The ANGLE_multiview specification is modified so that Draw* generates
an error if the number of views in the active program does not match
with the number of views in the active draw framebuffer object.
The tests and validation are modified accordingly.
The patch also sets a contact person, updates the contributor list and
sets the correct enum values in the ANGLE_multiview specification.
BUG=angleproject:2062
TEST=angle_end2end_tests
Change-Id: I15fee4c5e729605bb1d6292f7ad1155637578dea
Reviewed-on: https://chromium-review.googlesource.com/663160
Commit-Queue: Martin Radev <mradev@nvidia.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
7d4602fc
|
2017-09-13T10:45:09
|
|
Allow ReadPixels with GL_FLOAT type and EXT_color_buffer_half_float.
BUG=angleproject:2148
Change-Id: If3fa4a42a7343ed133f85be1a4d9d0fa48b427cd
Reviewed-on: https://chromium-review.googlesource.com/665158
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
715e7f1a
|
2017-09-12T16:50:25
|
|
Add GL_DEPTH_COMPONENT_24 as a depth format for surfaces.
BUG=angleproject:2075
Change-Id: Ic5e061d4908c072f92f80f70fa6da27b1346cd83
Reviewed-on: https://chromium-review.googlesource.com/663944
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
ace6822c
|
2017-09-12T21:56:20
|
|
Remove Renderer11::markAllStateDirty.
Also remove StateManager11::invalidateEverything. With all state
application consolidated in the StateManager, it should be aware of
all state changes, and shouldn't need outside notifications.
BUG=angleproject:2052
Change-Id: I6748b3944b25f958fa093052bcb7336e66255dd4
Reviewed-on: https://chromium-review.googlesource.com/659400
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
4dac6798
|
2017-09-12T22:22:35
|
|
Lift AMD blit suppressions.
BUG=angleproject:1474
Change-Id: Ie80385a9c89453694f1411e49dba7b298c3a1a6c
Reviewed-on: https://chromium-review.googlesource.com/664478
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
5c307292
|
2017-09-12T18:59:45
|
|
Consolidate Index buffer application.
Was used in a couple other places.
BUG=angleproject:2052
Change-Id: Ib335271a42c9569bbb452b6de8b683023cfc5900
Reviewed-on: https://chromium-review.googlesource.com/659399
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
2cedb58c
|
2017-09-12T15:23:08
|
|
D3D11: Consolidate Scissor state application.
BUG=angleproject:2052
Change-Id: Ib6f55be3d71d083a87e845447f174a55413c8a2f
Reviewed-on: https://chromium-review.googlesource.com/659398
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
da7185fb
|
2017-09-12T15:23:07
|
|
D3D11: Consolidate SRV and Sampler application.
This adds an internal and external version of the setShaderResource
method. The external version sets the state as dirty.
BUG=angleproject:2052
Change-Id: I6d2d47490c0af89ff5592d4e9c53eb69f8a3264d
Reviewed-on: https://chromium-review.googlesource.com/659397
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
7ef2ddab
|
2017-09-12T15:23:06
|
|
D3D11: Consolidate Viewport state application.
BUG=angleproject:2052
Change-Id: I1cbf2adc09c82b9de68785265def9361eff418b3
Reviewed-on: https://chromium-review.googlesource.com/659236
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
7f4fed80
|
2017-09-12T15:23:05
|
|
D3D11: Consolidate Rasterizer State application.
BUG=angleproject:2052
Change-Id: I11094744bab4570712632a424f29dff8b19a8dea
Reviewed-on: https://chromium-review.googlesource.com/659235
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
b05f3659
|
2017-09-12T15:23:05
|
|
D3D11: Consolidate Blend State application.
This will make it easier to implement fast state switching on Context
change.
BUG=angleproject:2052
Change-Id: I045cc2164200a93215629a2746068e686d7c99ff
Reviewed-on: https://chromium-review.googlesource.com/659234
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
518f5d55
|
2017-09-12T15:23:04
|
|
D3D11: Consolidate Depth Stencil State application.
This will make it easier to do state update on context switch.
BUG=angleproject:2052
Change-Id: Ia73cfd07ced40a9e22d6b34a5619250ede9e8844
Reviewed-on: https://chromium-review.googlesource.com/659233
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
85b63c8e
|
2017-09-12T15:23:03
|
|
D3D11: Consolidate OMSetRenderTargets calls.
There were a few calls that were using the context directly.
Consolidating them in the StateManager11 class should make efficient
state update after a Context switch possible. Also remove the Context
parameter from the setRenderTargets methods, since these are only
used internally and should be dirtying other states themselves.
BUG=angleproject:2052
Change-Id: I878c99fbde7a467f30cc89f2ee5aca476b8cf506
Reviewed-on: https://chromium-review.googlesource.com/659232
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
2617eada
|
2017-09-12T15:23:02
|
|
Cleanup to Resource11's reset method.
Only reset when the resource is valid. This will prevent a memory
allocation that could happen when triggering suprious reset() calls.
BUG=angleproject:1155
Change-Id: I3b9bc1f9e0542c14ed5fd4a03f82ad23c94b734b
Reviewed-on: https://chromium-review.googlesource.com/659231
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
14bbb3f9
|
2017-09-12T15:23:01
|
|
Context: Remove recompilation trigger impl method.
Move this down into the D3D11 renderer. Achieve this by passing a
mutable pointer to the memory program cache to the ContextImpl.
This will allow the D3D11 back-end to more easily sync state then
apply state changes. It also cleans up the gl-side Context a bit.
BUG=angleproject:1155
Change-Id: Ia2c63c05cf414e0d0b22b69c3ed7128f0e405933
Reviewed-on: https://chromium-review.googlesource.com/659230
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
096fd623
|
2017-09-12T15:29:06
|
|
Fix out-of-bounds reads in BlitFramebuffer.
This was a missing part of the validation. Makes us pass the WebGL
test conformance2/rendering/blitframebuffer-outside-readbuffer.
Was necessary for lazy robust resource init.
BUG=angleproject:2107
BUG=chromium:644740
Change-Id: I54c50012fc09ec80a65a2e75f5bde05101c8a1a7
Reviewed-on: https://chromium-review.googlesource.com/663212
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
c9fed8dd
|
2017-09-12T15:23:00
|
|
D3D11: Move TF state management to StateManager11.
This also changes the dirty TF object to use a Serial, which is more
secure for very edge-care reallocation issues. It also moves the
StateManager11::updateState call to be the very first thing that
happens in a draw call. This prepares the back-end for making the
state sync actually happen in Context11::syncState, instead of
inside the draw call.
Also moves a bit more TF management code out of RendererD3D and
Renderer9.
BUG=angleproject:2052
Change-Id: I93d033a07be2049023111975a31637c53893e8c8
Reviewed-on: https://chromium-review.googlesource.com/659229
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
cd8e9729
|
2017-09-12T15:22:59
|
|
StateManager11: Add internal dirty bits for uniforms.
This eliminates some of the redundant work we do in uniform state
updates. Driver uniforms and constant buffers are no longer synched
with every draw call, but only when the StateManager11 thinks they
might be dirty. Should improve overall draw call throughput.
BUG=angleproject:1155
BUG=angleproject:1390
Change-Id: I351c23fb18dcb3ef2f79e3b4f411e1e09c6300dc
Reviewed-on: https://chromium-review.googlesource.com/659228
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
2dc027da
|
2017-09-12T15:22:58
|
|
D3D11: Consolidate constant buffer application.
This will let the StateManager11 work more easily with dirty bits.
BUG=angleproject:1390
BUG=angleproject:2052
Change-Id: I9738d02e69e2062feeba4237487ad8e9ae86e78b
Reviewed-on: https://chromium-review.googlesource.com/659227
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
d63961d0
|
2017-09-12T15:22:57
|
|
D3D11: Move Constant Buffer state to StateManager11.
Also moves the logic of the constant buffer sync to
StateManager11. Removes a few of the remaining virtual methods in
RendererD3D.
BUG=angleproject:1390
BUG=angleproject:2052
Change-Id: Ia6c1c3949fff84323331510d80bbfb6e1665d294
Reviewed-on: https://chromium-review.googlesource.com/659226
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
9df395c8
|
2017-09-12T15:19:44
|
|
Include string.h for strncmp in ExtensionBehavior.cpp
BUG=angleproject:2147
Change-Id: I53062a84d48e1c106901a8c32fa49b0148baa344
Reviewed-on: https://chromium-review.googlesource.com/664059
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
9959f544
|
2017-09-12T15:22:56
|
|
Cleanups to ResourceSerial.
Allow for "empty" bindings, which are valid but represent when no
object is bound.
BUG=angleproject:2052
Change-Id: I0a41d1f0db3f5736e9e8f8ca3a74f41b748fd2d2
Reviewed-on: https://chromium-review.googlesource.com/659225
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
af01602e
|
2017-09-11T17:22:51
|
|
Allow compiling dEQP on Mac in Chromium checkout.
BUG=angleproject:2137
Change-Id: I5d840fcd7fda85d7c33a2f261586e8c3733b9781
Reviewed-on: https://chromium-review.googlesource.com/661419
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
|
|
d68248be
|
2017-09-11T14:34:14
|
|
Update Texture dirty bits documentation.
BUG=angleproject:1387
Change-Id: Ie2277874acb9e7a3eed4bce327f2c08750213967
Reviewed-on: https://chromium-review.googlesource.com/660419
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
265a6d43
|
2017-09-12T16:51:37
|
|
Fix viewport and scissor multiview updates in StatemanagerGL
The patch fixes a bug with the viewport and scissor state not being
correctly updated for side-by-side framebuffers.
BUG=angleproject:2062
TEST=angle_end2end_tests
Change-Id: I5f85b8146174d78a363316a66e2761e37305cffe
Reviewed-on: https://chromium-review.googlesource.com/663260
Commit-Queue: Martin Radev <mradev@nvidia.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
a16a84f3
|
2017-09-12T13:49:18
|
|
GLSL: Fix initializing globals declared after main()
Initialize globals in a separate function instead of a block in the
beginning of main(). This way it works also for globals declared after
main().
BUG=chromium:764036
TEST=angle_end2end_tests
Change-Id: I2fcbb97d046589301287757dc3dde5471172a3f6
Reviewed-on: https://chromium-review.googlesource.com/663158
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
5b03f475
|
2017-01-09T10:22:53
|
|
ES31: Implement getMultisamplefv for D3D part.
Implement getMultisamplefv for d3d part.Because standard D3D sample
positions from https://msdn.microsoft.com/en-us/library/windows/
desktop/ff476218.aspx are fixed sample pattern,we put the sample
positions into a constant array in renderer11_utils.cpp with a
function to query it.
BUG=angleproject:1590
TEST=dEQP-GLES31.functional.texture.multisample.samples_*.sample_position
Change-Id: I6e6006ed1c4e22fe006522e9ffd3297247bee75e
Reviewed-on: https://chromium-review.googlesource.com/594970
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
d9cd7b7f
|
2017-08-30T15:04:25
|
|
ES31: Add glGetProgramInterfaceiv API
Add API entry and validation checks(GLES 3.1 section 7.3).
Add the first 4 interfaces(PROGRAM_INPUT, PROGRAM_OUTPUT,
UNIFORM and UNIFORM_BLOCK) implementation.
BUG=angleproject:1920
TEST=angle_end2end_tests:ProgramInterfaceTestES31.*
Change-Id: Iab80ba332e2a5e2b3e677039359e60a420e3d6b0
Reviewed-on: https://chromium-review.googlesource.com/642729
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
2a1e8f95
|
2017-07-14T11:49:36
|
|
Refer to GLSL extensions through TExtension enum
Extensions are now referred to by enum values instead of strings most
of the time. This gets rid of unnecessary copying of strings. The code
is easier to work with than before as typoing the extension enum names
will be caught by the compiler.
BUG=angleproject:2147
TEST=angle_unittests
Change-Id: Ifa61b9f86ef03211188fc23bc23a5ce4e4d8c390
Reviewed-on: https://chromium-review.googlesource.com/571002
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
9d815378
|
2017-09-09T23:32:54
|
|
D3D: Refactor driver uniform application.
This is a preparation for more dirty bits. It moves the driver
constant buffer application into the state manager, redesigns
how the dirtiness is tracked (no more memcmp) and also removes
a couple of virtual calls.
BUG=angleproject:1390
BUG=angleproject:2052
Change-Id: I41a75c280600ad8ba1f23c721d436214a116422a
Reviewed-on: https://chromium-review.googlesource.com/659223
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
33bb7c42
|
2017-09-09T23:32:51
|
|
ProgramD3D: Use more UniformTypeInfo.
Instead of storing a type GLenum, store a pointer into the type info
table. This makes looking up some values a bit easier.
Also includes some micro-optimizations.
Improves the score of the uniforms micro-benchmark by about 12.4% on
a local Windows 10 machine.
BUG=angleproject:1390
Change-Id: I35f7f1c7bb3cf2c62d737b494dc56ff61ea2d1fb
Reviewed-on: https://chromium-review.googlesource.com/659221
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
a9459dbc
|
2017-09-09T23:32:52
|
|
Fix EXTERNAL and 2D_ARRAY sampler type info.
The type info tables were incorrectly using some information.
This bug was uncovered after trying to use the tables more.
BUG=angleproject:1390
Change-Id: I5eae01f51269bab05746a14bd3caabb614be210a
Reviewed-on: https://chromium-review.googlesource.com/659220
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
0e7f1736
|
2017-09-09T23:32:50
|
|
D3D: Only scan cached shader executable lists once.
Any time we would query ProgramD3D for a particular vertex or pixel
shader, we would iterate over all the cached shaders of the program
looking for the matching input or output layout signature. This change
makes it so we only compute the index of the matching shader once,
and subsequent calls will re-use the shader index. This should speed
up the draw call benchmarks.
Also include a fix to the Serial class that initializes a Serial value
to an invalid sentinel value. This ensures that comparing any other
Serial (including another invalid serial) to the invalid serial will
return not-equals.
BUG=angleproject:1155
Change-Id: I7d913bf08d0bedf6155eae0661b2a5fa94565cc9
Reviewed-on: https://chromium-review.googlesource.com/648730
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
eb335950
|
2017-09-09T23:32:49
|
|
D3D11: Only update swizzles after a state change.
Triggers the swizzle update whenever a new texture is bound, or when
a subImage call triggers a swizzle cache update.
BUG=angleproject:1387
Change-Id: Ia2a82126a621d8a643f715ea7e4a9c35b97e0a18
Reviewed-on: https://chromium-review.googlesource.com/648729
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
af4ffe0a
|
2017-09-09T23:32:48
|
|
D3D11: Implement dirty bits for texture updates.
BUG=angleproject:1387
Change-Id: I5f759c3dc60b53a5d4f8a1dd1f4a1d3d5330bfda
Reviewed-on: https://chromium-review.googlesource.com/648487
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
92515f44
|
2017-09-09T23:32:48
|
|
Move swizzling and program update to StateManager11.
This makes it in a centralized location where it can work with dirty
bits.
BUG=angleproject:1387
Change-Id: I3bfeb53c265d1679f6b8556941c1d9d77747aa24
Reviewed-on: https://chromium-review.googlesource.com/648486
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
39967e4e
|
2017-09-09T23:32:47
|
|
GL: Use dirty bits for texture and sampler bindings.
In StateManagerGL, use the texture, sampler and program binding dirty
bits to set a dirty bool that is checked once per draw call.
This completes the GL back-end texture dirty bits.
BUG=angleproject:1387
Change-Id: I619a89bf98ded5e55353f6ca44e814605f7ce492
Reviewed-on: https://chromium-review.googlesource.com/648055
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
06ef36b9
|
2017-09-09T23:32:46
|
|
Add top-level state sync for Samplers.
This also reformats the Sampler class to use a shared state struct
with the implementation. It removes the call to sync the sampler
state from the StateManagerGL::setGenericShaderState method, since
it should all be handled at the front-end now.
Also rename 'syncImplState' to 'syncState' methods.
BUG=angleproject:1387
Change-Id: I5f0219b719aee99aaaa486ec188b2af0c9128e6a
Reviewed-on: https://chromium-review.googlesource.com/648054
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
81c2e253
|
2017-09-09T23:32:46
|
|
Add top-level dirty bits for texture and samplers.
These will have to be fleshed out in the back-ends.
Also currently uses a single bit for all the bindings, and we can
extend this to more fine-grained updates in the future.
This patch implements top-level updates for texture completeness.
Sampler completeness caches are removed from the Texture class, and
replaced by a cache in the gl::State class. The State class also
keeps a channel binding to the bound textures so it can be notified
when textures might change from complete <-> incomplete.
In future CLs we skip updating back-ends if texture state doesn't
change.
BUG=angleproject:1387
Change-Id: If580b4851303c86f3240e62891f5f6047eefb6a2
Reviewed-on: https://chromium-review.googlesource.com/648053
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
ef97c613
|
2017-09-09T23:34:18
|
|
Roll GYP for VS2017 project support.
Also includes a ToLower string helper for a VS2017 warning fix.
https://chromium.googlesource.com/external/gyp.git/+log/aae1e3efb50786df2..c6f471687407bf28d
BUG=angleproject:1569
Change-Id: Iaf8a091a24d937db3adb242f05c8a5c9d2b03b0f
Reviewed-on: https://chromium-review.googlesource.com/659219
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
ec3a9cbb
|
2017-09-07T12:18:01
|
|
Only support GL_OVR_multiview extension variant
The WebGL spec proposal was changed so that only GL_OVR_multiview
extension name is supported, instead of having two variants
OVR_multiview and OVR_multiview2. We're only supporting the WebGL
version of the shader extension, so we drop compiler support for
GL_OVR_multiview2. Shader restrictions were also removed from the
WebGL spec, so no special validation for how ViewID_OVR gets used is
needed.
Tests that were testing for the shader restrictions are either removed
or changed from negative tests to positive tests.
BUG=angleproject:1669
TEST=angle_unittests
Change-Id: I83f92b879376d41b727b5aca419fd75fb6f53477
Reviewed-on: https://chromium-review.googlesource.com/654608
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
15c3406a
|
2017-09-07T17:10:09
|
|
Restructure InstanceID initialization to fix HLSL warning
This patch casts gl_InstanceID to uint before doing division by the
number of views to circumvent the HLSL compiler's warning on performance
degradation.
BUG=angleproject:2062
TEST=angle_end2end_tests
Change-Id: I326530ee112f34f82becdec5239edd5054c4104f
Reviewed-on: https://chromium-review.googlesource.com/655298
Commit-Queue: Martin Radev <mradev@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
95644f92
|
2017-09-07T20:58:49
|
|
Make ScopedIgnorePlatformMessages work
Maybe not the most elegant way, but I'd like to get the bot green.
BUG=angleproject:2122
Change-Id: Ib8f92034a8f42a42efd18c94a3623948490b7911
Reviewed-on: https://chromium-review.googlesource.com/656717
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
1de29aba
|
2017-09-07T18:07:23
|
|
Skip MultiviewRenderTest.FlatInterpolation on Win Intel D3D11
MultiviewRenderTest.FlatInterpolation/ES3_D3D11_force_geom_shader_layered
MultiviewRenderTest.FlatInterpolation/ES3_D3D11_force_geom_shader_side_by_side
fail on Win10 Intel HD 630.
BUG=angleproject:2062
Change-Id: I1a0c19b89f0813efe7eef5c64dc510ad750916f9
Reviewed-on: https://chromium-review.googlesource.com/656047
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
fe8b5989
|
2017-09-07T17:00:18
|
|
Program: Fixed unreferenced Samplers.
The calculation for unreferenced was incorrect - it checked the 'used'
flag of the uniform location, but if samplers started at index zero,
all the unused uniforms were to be considered valid samplers. Instead,
initialize the uniform index to INVALID_INDEX.
This bug was uncovered after doing work on the Texture dirty bits.
BUG=angleproject:1387
Change-Id: I5e404e367caed38368bcc0e581699ae2c911bcc9
Reviewed-on: https://chromium-review.googlesource.com/655930
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
e98e16ea
|
2017-08-25T14:55:20
|
|
Update gpu_test_expectations and use angle_gpu_info_util
This is to have the new "OS" for MacOS Sierra. Several types were
introduced in angle_config.h to minimize the angle-mods.patch to make
it easier to update in the future.
BUG=angleproject:2137
Change-Id: I7a98c5cb48d424f83eb39763eba0e51852a9b98f
Reviewed-on: https://chromium-review.googlesource.com/636202
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
218ffc49
|
2017-09-07T11:32:59
|
|
SwapChain11: Create SRV copy texture lazily.
We would allocate this texture for devices that don't need it. Instead
do this lazily. This was showing up in the profiles for the MotionMark
benchmark, possibly due to re-creating the surface.
BUG=angleproject:1155
Change-Id: I28b5eda29e21899fc8afef054e1b8063e3cc2e00
Reviewed-on: https://chromium-review.googlesource.com/655479
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
3667dbd6
|
2017-09-07T12:48:42
|
|
D3D11: Cache multisample resolve texture.
This was showing up in profiles of the MotionMark benchmark, possibly
due to re-creating the canvas many times.
BUG=angleproject:1155
Change-Id: Id857b89770b846881fb381f7c3ab70c07b924271
Reviewed-on: https://chromium-review.googlesource.com/655478
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
3ed60424
|
2017-09-07T11:32:52
|
|
Test using the same texture with multiple samplers.
This covers a regression introduced with texture dirty bits.
BUG=angleproject:1387
Change-Id: Ic8112718c185298ef54ec5a6f6ed2cd519e010d6
Reviewed-on: https://chromium-review.googlesource.com/653586
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
fca78130
|
2017-09-06T13:51:39
|
|
Extend multiview perf tests to cover all extension code paths
The ANGLE_multiview extension can be supported with three possible code
paths - through view being selected in the vertex shader on D3D and
OpenGL, and through the view being selected in the geometry shader on
D3D only. This patch extends the multi-view performance tests to
benchmark these three different code paths.
BUG=angleproject:2062
TEST=angle_end2end_tests
Change-Id: I443e4db64a95eede1142718a43a095ee5a03738c
Reviewed-on: https://chromium-review.googlesource.com/652466
Commit-Queue: Martin Radev <mradev@nvidia.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
|
|
a0d38875
|
2017-09-06T15:32:03
|
|
Don't create SRVs for multisampled depth stencil textures in FL10.0.
Renderer11::createRenderTarget already fixed this issue but it also is
exposed in SwapChain11::resetOffscreenDepthBuffer now that multisampled
surfaces are supported in ANGLE.
BUG=angleproject:2136
Change-Id: I978666ebc1bb3db14ddf69954d7eb750391bf7a8
Reviewed-on: https://chromium-review.googlesource.com/653779
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
61e710b6
|
2017-09-05T11:59:52
|
|
GL: Optimize multi-view layered Clear* commands
Until this patch multi-view layered framebuffers used to be cleared by
attaching a single layer of each attachment to a framebuffer and calling
the Clear* command for that internal framebuffer.
According to the GL 4.1+ specifications, Clear* commands clear all of
the layers of an attached 2D texture array. If all of the layers are
active for a multi-view layered framebuffer, then we can directly call
the corresponding Clear* command instead of iterating over each layer
and clearing it.
BUG=angleproject:2062
TEST=angle_end2end_tests
Change-Id: Ie4dfd9fff47715b502f358272bfc47c0373c4e91
Reviewed-on: https://chromium-review.googlesource.com/649209
Commit-Queue: Martin Radev <mradev@nvidia.com>
Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
|
|
c1d4e550
|
2017-08-21T12:01:10
|
|
D3D11: Select view in vertex shader
View selection can happen in the vertex shader through the optional
feature VPAndRTArrayIndexFromAnyShaderFeedingRasterizer.
BUG=angleproject:2062
TEST=angle_end2end_tests
Change-Id: Iaf65685e04f828b0936295fea867f6f6cbe69bee
Reviewed-on: https://chromium-review.googlesource.com/628419
Commit-Queue: Martin Radev <mradev@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
630d558f
|
2017-09-06T12:45:38
|
|
TextureRectangleTest: Fix RAII ignore lifetime
BUG=angleproject:2122
Change-Id: Ia51c139197e1b90e54505278d301ae8ac7dab53d
Reviewed-on: https://chromium-review.googlesource.com/653240
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
cecab592
|
2017-09-06T11:13:39
|
|
Don't use native D3D11.1 formats unless they support enough samples.
The MSDN documentation states that BGRA4, RGB5A1 and RGB565 should all
support 4 samples with DXGI 1.2 and D3D11.1 but some drivers appear to
not have full support. Fall back to RGBA8 render targets when the
driver cannot support at least 4 samples for ES3 feature levels.
BUG=761489
Change-Id: I6bcd417700f1188945e8032ca6a64c4fbb2bc8a8
Reviewed-on: https://chromium-review.googlesource.com/652828
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
74a0000f
|
2017-07-11T11:27:09
|
|
Request a D3D11.1 device and D3D11.3 context
The patch extends Renderer11 so that a D3D11.1 device and
D3D11.3 context can be created. This is necessary for using
the D3D11.3 feature called
VPAndRTArrayIndexFromAnyShaderFeedingRasterizer.
BUG=angleproject:2062
BUG=angleproject:2145
TEST=angle_end2end_tests
Change-Id: I84c761b2897d7d911686f5b6d79cb93e233015a0
Reviewed-on: https://chromium-review.googlesource.com/591448
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
1a1ae0f8
|
2017-09-05T15:11:06
|
|
SystemInfo: Find primary with EnumDisplayDevices
Without DXGI, EnumDisplayDevices is the only way to get the
primary device. Previously the code would work on most configs
with a combination of AMD, Intel and NVIDIA GPUs but would fail
on more esoteric system. Like our try bots that have Matrox GPUs.
BUG=angleproject:1874
BUG=angleproject:2137
Change-Id: Ie2dfbb559001ccad2fd5b8a8fd6436e0fba9d003
Reviewed-on: https://chromium-review.googlesource.com/651629
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|