|
f0dcb8b5
|
2017-08-26T19:05:13
|
|
Refactor transform feedback EPs.
BUG=angleproject:747
Change-Id: I4891966cd7b3d478980202e795742e15dd1dcb01
Reviewed-on: https://chromium-review.googlesource.com/637125
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
d7576737
|
2017-08-26T18:49:50
|
|
Refactor VAO entry points.
This also touches the extension EPs for ES2.
BUG=angleproject:747
Change-Id: Iaa04d97465e518f6b0496e64bc7a737914709b8f
Reviewed-on: https://chromium-review.googlesource.com/637124
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
c8c95817
|
2017-08-26T18:40:09
|
|
Refactor uniform matrix entry points.
This should also slightly speed up some of the validation.
BUG=angleproject:747
BUG=angleproject:1390
Change-Id: I60735e2773788aef3f535bf7d3d8cd27bc4df5b1
Reviewed-on: https://chromium-review.googlesource.com/637123
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
f0e0449e
|
2017-08-26T15:28:42
|
|
Format ES3 query entry points.
Also refactor some query extension entry points.
BUG=angleproject:747
Change-Id: I5a8a3b2616a3872b5645a655641ec9c12739f804
Reviewed-on: https://chromium-review.googlesource.com/636062
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
ff325f1b
|
2017-08-26T15:06:05
|
|
Refactor ES3 uniform entry points.
This should improve validation speed slightly because it allows us to
move the ES3-only check into the ES3-only code, and make it a bit
simpler.
BUG=angleproject:747
BUG=angleproject:1390
Change-Id: I41f9ffef1c6a552fde924e62e481831f07b1503a
Reviewed-on: https://chromium-review.googlesource.com/636061
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
511937d9
|
2017-08-03T15:41:29
|
|
ES3.1: Implement framebuffer default parameters for d3d part.
Set framebuffer default params with glFramebufferParameteri and
glGetFramebufferParameteriv, keep framebuffer default parameters
in cache for query.
The es 3.1 spec section 9.2 states that, "If there are no attachments
, rendering will be limited to a rectangle having a lower left of
(0, 0) and an upper right of (width, height), where width and height
are the framebuffer object's default width and height."
If the Framebuffer has no color attachment and the default width or
height is smaller than the current viewport, use the smaller of the
two sizes.
BUG=angleproject:1594
TEST=dEQP-GLES31.functional.state_query.framebuffer_default.framebuffer_default*
TEST=dEQP-GLES31.functional.fbo.completeness.no_attachments
TEST=dEQP-GLES31.functional.fbo.no_attachments.*
TEST=angle_end2end_tests --gtest_filter=FramebufferTest_ES31.*
Change-Id: I8041fd655161390acf115efa08ce0f04b10810a0
Reviewed-on: https://chromium-review.googlesource.com/609414
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
d27f5c8d
|
2017-08-23T09:38:08
|
|
ES31: Implement GL_OES_geometry_shader built-ins in GLSL compiler
This patch intends to implement all built-in constants, variables and
functions defined in OpenGL ES 3.1 extension GL_OES_geometry_shader
in ANGLE GLSL compiler.
1. Add all built-in constants defined in GL_OES_geometry_shader.
2. Add built-in functions EmitVertex() and EndPrimitive() required
in Geometry Shader.
3. Add built-in variables gl_PrimitiveIDIn and gl_InvocationID to
Geometry Shader.
4. Add built-in variables gl_PrimitiveID and gl_Layer to both
Geometry Shader and Fragment Shader when GL_OES_geometry_shader
is enabled.
BUG=angleproject:1941
TEST=angle_unittests
Change-Id: I92821553ed0efee2ccb77fead6e065e7799819d0
Reviewed-on: https://chromium-review.googlesource.com/627670
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
3c25ad07
|
2017-08-22T17:36:53
|
|
Enable all multiview rendering tests for layered framebuffers
The patch restructures the tests in MultiviewDrawTests.cpp, so that
all rendering tests can be instantiated for side-by-side and layered
framebuffers.
BUG=angleproject:2062
TEST=angle_end2end_tests
Change-Id: I2c32fd3bd57b6afd1eb8d6cedb2d1b88b9fd6525
Reviewed-on: https://chromium-review.googlesource.com/627918
Commit-Queue: Martin Radev <mradev@nvidia.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
335d67b8
|
2017-08-24T14:57:44
|
|
Fixes to the Uniforms Perf benchmark.
Fix the REPEAT test, and add a D3D11 and OpenGL null test.
BUG=angleproject:1390
Change-Id: I491cbc9f9201ef85aeb9f70138a276078220b26d
Reviewed-on: https://chromium-review.googlesource.com/623928
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
2c1183bb
|
2017-08-24T10:36:01
|
|
Fix compile on non C++14 configs.
The WrappedArray move constructor was not contexpr under c++11
rules. New code was introduced when fixing D3D11 runtime warnings.
BUG=angleproject:2025
Change-Id: Ie322d9fa3db36f320b7a9ef5048a23c31c153ad1
Reviewed-on: https://chromium-review.googlesource.com/633911
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
c1346fba
|
2017-08-24T16:11:26
|
|
Revert "Remove IndexRange retrieving in validation"
This reverts commit 59d9da089580afac175ff5f1a932b987c9d194d6.
Reason for revert: <INSERT REASONING HERE>
Original change's description:
> Remove IndexRange retrieving in validation
>
> This change can improve the performance of drawElements which uses
> the path without translation.
> Paste a set of mean data (repeated 30) for reference on Intel skylake
> Win10 desktop.
> DrawElementsPerfBenchmark.Run/d3d11:
> before after
> mean: 13644.4666667 -> mean: 13887.8333333
> DrawElementsPerfBenchmark.Run/d3d11_index_buffer_changed:
> before after
> mean: 45.8 -> mean: 46.3666666667
>
> BUG=755897, angleproject:1393
>
> Change-Id: I11f5db25445346958dfef52b1d23df5483cda32f
> Reviewed-on: https://chromium-review.googlesource.com/607413
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Commit-Queue: Jamie Madill <jmadill@chromium.org>
TBR=geofflang@chromium.org,jmadill@chromium.org,jiajia.qin@intel.com
Change-Id: I4b00af2c32af36aa978ac2fddcf7514134497cf3
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: 755897, angleproject:1393
Reviewed-on: https://chromium-review.googlesource.com/633296
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
|
|
e080387e
|
2017-08-23T15:30:23
|
|
Refactor array element type checks
Remove checks that would never fail, and refactor the functions into
more self-contained checks. For example, it doesn't make sense to
check the qualifier from the part of the type that doesn't contain the
qualifier.
This prepares for adding the parsing of arrays of arrays.
BUG=angleproject:2125
TEST=angle_unittests
Change-Id: I1144bee35d2b04c7cb22e2bb7e17307298e35f8c
Reviewed-on: https://chromium-review.googlesource.com/629016
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
59d9da08
|
2017-08-09T16:59:17
|
|
Remove IndexRange retrieving in validation
This change can improve the performance of drawElements which uses
the path without translation.
Paste a set of mean data (repeated 30) for reference on Intel skylake
Win10 desktop.
DrawElementsPerfBenchmark.Run/d3d11:
before after
mean: 13644.4666667 -> mean: 13887.8333333
DrawElementsPerfBenchmark.Run/d3d11_index_buffer_changed:
before after
mean: 45.8 -> mean: 46.3666666667
BUG=755897, angleproject:1393
Change-Id: I11f5db25445346958dfef52b1d23df5483cda32f
Reviewed-on: https://chromium-review.googlesource.com/607413
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
abf66fb3
|
2017-08-23T11:58:27
|
|
D3D11: Use dirty bits for applyVertexBuffers.
If the vertex array has any dirty or dynamic attribs, we must do an
update. Similarly, if a prior state change has left the vertex
state invalidated, we do an update. For instance, a program change
means we need a new input layout. If there was no such invalidation
or dirtyness we can skip the call to InputLayoutCache.
This improves the performance of the draw call benchmark (with no
state changes) by about 50% on the D3D11 null driver. Increases the
frames per second count of the aquarium demo with the passthrough
command buffer by about 25% on a test machine.
BUG=angleproject:1156
Change-Id: I8381999029f5b1912030a3342e96285a58f95e82
Reviewed-on: https://chromium-review.googlesource.com/616784
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
e3d8628d
|
2017-08-22T11:50:01
|
|
D3D11: Split input layout and VB application.
This will enable future optimizations that only update either the
applied vertex buffers or the input layout independenty. It also
makes debugging a bit easier since we can force an update of the
vertex buffer or input layout to diagnose potential state sync
bugs.
BUG=angleproject:1156
Change-Id: Ib375561528da539e136ff4fd02398b03c9caabb7
Reviewed-on: https://chromium-review.googlesource.com/627077
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
96f6adfa
|
2017-08-16T11:18:54
|
|
Add support for arrays of arrays in AST processing
Data concerning arrays of arrays is added in TType.
Parsing arrays of arrays and support for arrays of arrays in
TPublicType are still left to be implemented later.
ShaderVariable interface for arrays of arrays is also left to be
implemented later.
We rely on existing test coverage to make sure that arrays of arrays
are not accidentally exposed.
BUG=angleproject:2125
TEST=angle_unittests, angle_end2end_tests, angle_deqp_gles31_tests
Change-Id: Ie17d5ac9b8d33958e9126dc0fb40bf1c81ddeec9
Reviewed-on: https://chromium-review.googlesource.com/616146
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
5e424fae
|
2017-08-09T16:25:36
|
|
Handle Clear* commands for layered framebuffers
The patch adds support for clearing the layers of 2D array textures
attached to a multi-view framebuffer. According to the ANGLE_multiview
spec, the layers which are outside of the range
[baseViewIndex; baseViewIndex + numViews) should remain unmodified.
Because the native Clear* commands clear all of the layers, a workaround
is implemented which creates a FBO, attaches a single layer from all
multi-view attachments and clears the contents.
BUG=angleproject:2062
TEST=angle_end2end_tests
Change-Id: Ibf711d02046233eed16bdd3f9c96fc38f82ed0a8
Reviewed-on: https://chromium-review.googlesource.com/615242
Commit-Queue: Martin Radev <mradev@nvidia.com>
Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
61bd9994
|
2017-08-11T13:10:55
|
|
Test multi-view rendering of various primitives
The patch adds tests to verify that all primitive types are rendered
correctly in a multi-view context.
BUG=angleproject:2062
TEST=angle_end2end_tests
Change-Id: Ied4521264841d29ba3b39a612e2da285d0fd9fc6
Reviewed-on: https://chromium-review.googlesource.com/612243
Commit-Queue: Martin Radev <mradev@nvidia.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
d8105a03
|
2017-08-08T09:54:36
|
|
ES31: Implement gl_in in Geometry Shader
This patch intends to implement geometry shader built-in interface
block instance gl_in defined in GL_OES_geometry_shader.
1. Add the definition of gl_in and its interface block gl_PerVertex
into the symbol table.
2. Support gl_Position as a member of gl_in.
3. Set the array size of gl_in when a valid input primitive type is
known.
4. Add check that it should be a compile error to index gl_in or
call length() on gl_in without a valid input primitive declaration.
This patch also adds unit tests to cover all these new features.
BUG=angleproject:1941
TEST=angle_unittests
Change-Id: I8da20c943b29c9ce904834625b396aab6302e1e1
Reviewed-on: https://chromium-review.googlesource.com/605059
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
|
|
401345e4
|
2017-08-21T10:52:40
|
|
D3D11: Move more state into StateManager11.
This moves the input layout cache and vertex and index data managers
and related info into the state manager. This makes it easier to
manage the state application with regards to dirty bits.
Also updates the dirty current value handling in StateManager11.
BUG=angleproject:1156
BUG=angleproject:2052
Change-Id: I8de968a1f8416363aa1c49d9e9da129942d21275
Reviewed-on: https://chromium-review.googlesource.com/616783
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
3cb4894c
|
2017-08-18T10:03:01
|
|
Make TextureD3D::clearLevel work with depth/stencil.
Although we only used this method in one place that didn't need to
clear depth or stencil, the method itself doesn't seem like it should
be limited. It will become useful in later patches which initialize
depth and stencil textures robustly.
BUG=angleproject:2107
Change-Id: I7dc67608972f2b31c0cb4d309941be10f47d1d47
Reviewed-on: https://chromium-review.googlesource.com/585600
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
977ee7eb
|
2017-07-21T11:38:27
|
|
Add gl_ViewportIndex to the symbol table
gl_ViewportIndex is a GLSL built-in that's needed to implement
instanced multiview. It is a bit of a special case: it only exists in
desktop GLSL and not ESSL, and it shouldn't be exposed to the parser.
We add a new level to the symbol table that's hidden from the parser
to make adding this kind of builtins in AST transforms consistent with
the way ESSL builtins are supported.
BUG=angleproject:1490
TEST=angle_unittests
Change-Id: I51b2d983950b38c8e85e4b6ed00c6b39f9b3cb03
Reviewed-on: https://chromium-review.googlesource.com/580953
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
4e619f58
|
2017-08-09T11:50:06
|
|
Add branch for viewport or layer selection in VS
The patch extends the behavior of
SH_SELECT_VIEW_IN_NV_GLSL_VERTEX_SHADER so that either the viewport
or layer is selected based on the value of the internal uniform variable
MultiviewRenderPath.
BUG=angleproject:2062
TEST=angle_end2end_tests
TEST=angle_unittests
Change-Id: Ia311b12b1fed642dac78eba8732e2535242f34fd
Reviewed-on: https://chromium-review.googlesource.com/615260
Commit-Queue: Martin Radev <mradev@nvidia.com>
Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
3dfaf265
|
2017-08-18T12:32:14
|
|
Add a Linux/Intel suppression for CopyTextureTestES3.ES3UintFormats.
BUG=chromium:756087
Change-Id: If7d318d58ce46b52a810b1a96fcdbff57a787f86
Reviewed-on: https://chromium-review.googlesource.com/621408
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
0ce8ef33
|
2017-08-18T12:00:28
|
|
Add arrays of arrays negative test coverage
Arrays of arrays have not been implemented yet, but these tests can
already be enabled. This is useful to make sure that we don't
accidentally enable arrays of arrays where they shouldn't be enabled
and that the initial implementation generates errors correctly and
doesn't crash on malformed inputs.
BUG=angleproject:2125
TEST=angle_unittests, angle_deqp_gles31_tests
Change-Id: I538e5ae1f0903c42e06cfce352124130f160649d
Reviewed-on: https://chromium-review.googlesource.com/620706
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
92996b0d
|
2017-08-17T10:39:02
|
|
D3D11: Fix masked clear unused RTV warning.
This benign warning would show up in the Debug layer messages. It was
causing the test to fail in some standalone configurations.
This fix implemented here is to keep 8 different pixel shaders, one
for each total count of render targets, up to the implementation max.
BUG=angleproject:2025
Change-Id: I826ddae686ddb1cfad17879644152be2f6125c5b
Reviewed-on: https://chromium-review.googlesource.com/617512
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
46d6c2b6
|
2017-08-16T14:58:36
|
|
D3D: Make some helper methods static.
A couple index data manager and Renderer helper methods didn't need
to modify state or use any local member variables, so we can make
them static to be more accessible from other parts of the code.
BUG=angleproject:1156
Change-Id: I522d0dfd396f0fed7b5087e90dcb70a0f9502a75
Reviewed-on: https://chromium-review.googlesource.com/616782
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
a836b466
|
2017-08-16T14:58:35
|
|
D3D11: Allow no-op pixel shader output.
On HLSL 4+, the debug runtime issues a warning when we try to render
to a color output in the pixel shader that doesn't have a matching
render target bound. This happens when doing a depth or stencil-only
render pass. We only need to bind a dummy output in HLSL 3, so tighten
the workaround we had in place and fix the warning for D3D11.
BUG=angleproject:2025
Change-Id: I16ba9e907f3a6e59afff93fe4583d084cbdf42c5
Reviewed-on: https://chromium-review.googlesource.com/617268
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
b18c33e9
|
2017-08-16T12:37:51
|
|
Remove arraySize in TInterfaceBlock
This patch intends to remove the field 'arraySize' in TInterfaceBlock.
The field 'arraySize' in TInterfaceBlock is redundant because:
1. If the interface block has instance name, it is recorded as one
symbol as a whole, and its array size is recorded in the TType
of the symbol.
2. If the interface block doesn't have instance name, its members are
recorded separately, and it cannot be declared as an interface block
array.
This patch can make the implementation of Geometry Shader easier
when we set array size to the built-in interface block 'gl_in' and other
user-defined unsized input interface blocks during the compilation of a
Geometry Shader.
BUG=angleproject:1941
TEST=angle_end2end_test
Change-Id: I9a51aab9b8f9ea7e88af157505c092426cee7e6e
Reviewed-on: https://chromium-review.googlesource.com/615759
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
41ac68e7
|
2017-06-06T12:16:58
|
|
Select viewport index in GS for multi-view instanced rendering
The patch extends the OutputHLSL and DynamicHLSL translators to
select the viewport index in the geometry shader and propagate
the ViewID variable to the fragment shader.
BUG=angleproject:2062
TEST=angle_end2end_tests
Change-Id: I9e344a7521e2e1137e6eb38d0bfecea8bece778f
Reviewed-on: https://chromium-review.googlesource.com/608967
Commit-Queue: Martin Radev <mradev@nvidia.com>
Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
e86db0c1
|
2017-08-11T15:24:58
|
|
Remove unused vectorSize() from OutputHLSL
BUG=angleproject:2125
TEST=compile
Change-Id: Ideae29190bd9cd56ecdc0ea31a078d4460413540
Reviewed-on: https://chromium-review.googlesource.com/616145
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
9b8dfb80
|
2017-08-16T15:07:15
|
|
Support more display extensions in DisplayNULL.
BUG=602737
Change-Id: I05987f4806e179eb50f4b86533c88831e359b9e8
Reviewed-on: https://chromium-review.googlesource.com/617514
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
c0094eca
|
2017-08-16T14:16:24
|
|
Validate the combination of type and internal format for CopyTextureCHROMIUM.
Sized internal formats with invalid types would pass validation because
GetInternalFormatInfo does not validate that the type is a valid upload
type for the given internal format.
TEST=conformance2/textures/misc/tex-image-with-bad-args-from-dom-elements.html
BUG=angleproject:1932
Change-Id: I07fd542630a4508383263c1fe3d7a80c037d7ca0
Reviewed-on: https://chromium-review.googlesource.com/617508
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
200e2d23
|
2017-08-14T13:19:54
|
|
D3D11: Force level zero render target in FL 9.3.
Since 9.3 doesn't support non-zero level render targets, we should
always be getting the level zero render target. Previously the code
would never try creating a render target when level zero mode was
not enabled, but this can break if we refactor the code.
Fixes a bug in a future patch which creates the storage as a render
target instead of as a non-renderable texture first.
BUG=angleproject:2107
Change-Id: Ib2732a35e586bc4956d07783325429e8edeb0c66
Reviewed-on: https://chromium-review.googlesource.com/614120
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
e59000c3
|
2017-08-16T11:13:49
|
|
Skip CopyTextureTestES3.ES3FloatFormats in Win/Intel/OpenGL.
Possibly due to a driver bug.
BUG=angleproject:1932
Change-Id: I8b10457681c5635b89f898aab09fa244b3bf7d9c
Reviewed-on: https://chromium-review.googlesource.com/616817
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
5c00d0db
|
2017-08-07T10:06:59
|
|
D3D11: Handle Clear* commands for side-by-side framebuffers
The patch modifies Clear11 to add support for clearing the color, depth
and stencil attachments to a side-by-side framebuffer:
- Color attachments are cleared through the command ClearView.
- Depth and stencil attachments are cleared by drawing a quad on top of
each view.
BUG=angleproject:2062
TEST=angle_end2end_tests
Change-Id: I5753a72222216a48cd954eb1219bc58f968735fc
Reviewed-on: https://chromium-review.googlesource.com/603853
Commit-Queue: Martin Radev <mradev@nvidia.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
eef80e40
|
2017-08-11T14:44:57
|
|
Do not implicitly enable the scissor test for side-by-side FBOs
The patch modifies the ANGLE_multiview specification so that issuing a
Draw* command has undefined results for side-by-side FBOs if the scissor
test is disabled. Also, clearing a side-by-side framebuffer will result
in clearing the whole content of the specified buffers if the scissor
test is disabled.
StateManagerGL and FramebufferGL are modified to address this change in
the spec.
BUG=angleproject:2062
TEST=angle_end2end_tests
Change-Id: I39a87d297944f12769dee2ead17b508ac22053db
Reviewed-on: https://chromium-review.googlesource.com/612283
Commit-Queue: Martin Radev <mradev@nvidia.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
599555b5
|
2017-08-15T11:12:42
|
|
Clean up createSamplerSymbols
The arrayOfStructsSize parameter can always be determined from the
TType object, so there's no need to pass it to
TType::createSamplerSymbols. Furthermore, it's more natural to do
the processing for arrays of structs in TType::createSamplerSymbols,
rather than in the TStructure::createSamplerSymbols helper it is
using.
Also rename some parameter names, and move createSamplerSymbols
implementation to Types.cpp.
This refactoring change prepares for implementing arrays of arrays.
BUG=angleproject:2125
TEST=angle_end2end_tests
Change-Id: I3f8bec711c0434677ebcf3741abb4f910c36dba3
Reviewed-on: https://chromium-review.googlesource.com/614883
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
28839f03
|
2017-08-15T11:38:16
|
|
Fix handling sampler arrays in structs as function arguments on HLSL
Some of the code was written under the mistaken assumption that
createSamplerSymbols would be splitting sampler arrays in structs into
individual samplers. Fix it by adding array dimensions to sampler
parameters generated by createSamplerSymbols when necessary.
BUG=angleproject:2128
TEST=angle_end2end_tests
Change-Id: Ie622c777d78ae65b5629d12e0ae574800c1b78f5
Reviewed-on: https://chromium-review.googlesource.com/614882
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
afa75152
|
2017-07-21T13:11:29
|
|
Refactor More Validation Error Messages
Replace many error string literals with variables existing in
ErrorStrings.h
BUG=:angleproject:1644
Change-Id: If5665a6787a1fa8d789811d774711c3705dfb0ab
Reviewed-on: https://chromium-review.googlesource.com/598588
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
aadc8f37
|
2017-08-11T17:34:44
|
|
Implement the CPU fallback for CopyTextureCHROMIUM on OpenGL.
BUG=angleproject:1932
Change-Id: Iabc1a3e361d66313dc16bf19b392402b7836f8a5
Reviewed-on: https://chromium-review.googlesource.com/612562
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
79f7104a
|
2017-08-14T16:43:43
|
|
Validate that transform feedback buffers are not mapped.
Mapping a buffer that is bound for active transform feedback or starting
transform feedback on a mapped buffer is undefined behaviour under
section 2.10.3.2 of the ES 3.0 spec "Effects of Mapping Buffers on Other
GL Commands". The spec suggests that an error is generated in this
case.
TEST=ES3MapBufferRangeTest.TransformFeedback
BUG=754000
Change-Id: I613defd07cc1a4348682d992cda61cc898936720
Reviewed-on: https://chromium-review.googlesource.com/614483
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
78ed6cd9
|
2017-08-09T16:19:00
|
|
Rename VariableInfo files to CollectVariables
Files that only have a single function should be named consistently
with the function. Unnecessary include in CallDAG.h is removed.
BUG=angleproject:2068
TEST=angle_unittests
Change-Id: I27d55a766b9eb66fcfd1e0a2341a2843bb9dc5bb
Reviewed-on: https://chromium-review.googlesource.com/608368
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
d93cd6c2
|
2017-08-11T16:32:41
|
|
Refactor the CPU copy texture code into a function in renderer utils.
BUG=angleproject:1932
Change-Id: Iab79f2a09c2d8a85d2a9dde34acf4d2151072c2b
Reviewed-on: https://chromium-review.googlesource.com/612561
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
d7487b13
|
2017-08-09T15:45:13
|
|
Clean up checking variable packing limits
This encapsulates expanding struct variables inside the VariablePacker
class that packs variables according to the GLSL ES spec.
The variable expansion step is no longer run twice when checking
uniforms against the max uniforms limit.
BUG=angleproject:2068
TEST=angle_unittests
Change-Id: I012ddaa249f71c0a78d937c98007c61352e64888
Reviewed-on: https://chromium-review.googlesource.com/608367
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
9b11ea4f
|
2017-07-11T16:50:08
|
|
Gather UniformBlock and ShaderStorageBlock separately
Refactor InterfaceBlocks since it only stands for UniformBlock before
ES31. But for ES31, uniform block and shader storage block both belong
to interface block.
This CL will add GetUniformBlocks and GetShaderStorageBlocks in
ShaderLang.h. Meanwhile, keep GetInterfaceBlocks which can return all
the interface blocks together.
BUG=angleproject:1951
Change-Id: I3036e201aadfbd490575ed03538c81bcc3793ff3
Reviewed-on: https://chromium-review.googlesource.com/582546
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
0d671c9a
|
2017-08-10T16:41:52
|
|
Verify occlusion query correctness in a multi-view context
The patch adds tests to verify that an occlusion query correctly tracks
whether any fragments pass the depth test for any of the views as
according to the ANGLE_multiview extension.
BUG=angleproject:2062
TEST=angle_end2end_tests
Change-Id: Ia85bac4935192554a337c27fad110fbb7f56cf8a
Reviewed-on: https://chromium-review.googlesource.com/609961
Commit-Queue: Martin Radev <mradev@nvidia.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
82ef774b
|
2017-08-08T17:44:58
|
|
Save layered multiview end-point's arguments into attachment's state
Handle glFramebufferTextureMultiviewLayeredANGLE calls by saving the
arguments into the attachment's state.
BUG=angleproject:2062
TEST=angle_end2end_tests
Change-Id: I9d7c0e00fe9e917ad2f9d903a39f30b2546dc7a3
Reviewed-on: https://chromium-review.googlesource.com/609960
Commit-Queue: Martin Radev <mradev@nvidia.com>
Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
5116d687
|
2017-08-02T12:39:44
|
|
ES31: Add missing initialization of MAX_*_SAMPLES on D3D
This patch intends to add missing initialization of MAX_INTEGER_SAMPLES,
MAX_DEPTH_TEXTURE_SAMPLES and MAX_COLOR_TEXTURE_SAMPLES required for
multisampled textures on D3D backends.
Since MAX_*_SAMPLES cannot be queried directly from D3D APIs, these
values are initially assigned a large value in renderer11.cpp and
re-calculated in context::updateCaps().
This patch also adds tests to ensure these values are greater than 1
as required in OpenGL ES3.1 spec.
BUG=angleproject:1592
TEST=angle_end2end_tests
Change-Id: Iba586e311d40d2da4569816902f96e40bbd6935b
Reviewed-on: https://chromium-review.googlesource.com/597411
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
936ea325
|
2017-08-04T20:58:06
|
|
Clip to framebuffer when copying to cube map.
In D3D cube map textures use different code paths than regular 2D
textures. Add outside-the-framebuffer handling to those paths, same as
was added the other paths earlier.
Change-Id: I51896a07f73ae8d761cd9d7b18c68076f38d32a3
Reviewed-on: https://chromium-review.googlesource.com/603050
Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
c2157a09
|
2017-08-09T18:52:59
|
|
HLSL: Fix handling nested structs in interface blocks
Make sure that the type definitions for nested structs get added to
the HLSL header, and that the std140 padding information gets
recorded. Prior to this trying to use nested structs in interface
blocks crashed.
BUG=angleproject:2084
TEST=angle_end2end_tests
Change-Id: If57870285c6feaf0c2e462f98f50f20730dd6470
Reviewed-on: https://chromium-review.googlesource.com/608449
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
d23bcd8e
|
2017-08-01T23:40:17
|
|
Add cube map to read-outside-framebuffer tests.
Cube maps go through a separate path on D3D so we need to test them.
BUG=angleproject:1815
Change-Id: Ifb7a85d7e2750f25bce382fdd7a00062d23b3573
Reviewed-on: https://chromium-review.googlesource.com/597213
Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
ed049ab4
|
2017-06-30T17:38:33
|
|
HLSL: Fix handling arrays of structs in interface blocks
In HLSL output, structs in interface blocks are not accessed directly.
Rather they get copied from the D3D constant buffer to static structs
in the shader header. Fix generating the copy/init code in the header
to handle arrays of structs correctly.
BUG=angleproject:2084
TEST=angle_end2end_tests
Change-Id: If66bd5be3f3570ba591b8b62c5284c06fc83dd45
Reviewed-on: https://chromium-review.googlesource.com/608448
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
47bb4933
|
2017-08-03T11:52:13
|
|
Implement CopyTexture functions for uint texture formats.
BUG=angleproject:1932
Change-Id: I6474237cbb82b59a0bd40c1b9b9e2455952d3755
Reviewed-on: https://chromium-review.googlesource.com/600510
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
553590a5
|
2017-07-31T16:40:39
|
|
Modify attribute divisor for multiview instanced rendering
If the ANGLE_multiview extension is used in a program, the number
of geometry instances is the number of instances passed to
glDraw*Instanced times the number of views in the program. The attribute
divisor has to be multiplied by the number of views so that the correct
attributes are gathered in the input assembly stage.
BUG=angleproject:2062
TEST=angle_end2end_tests
Change-Id: I960d6313c02e3eb83f7a07e72b9bcac072c736f4
Reviewed-on: https://chromium-review.googlesource.com/593953
Commit-Queue: Martin Radev <mradev@nvidia.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
0f7714ec
|
2017-08-07T15:13:42
|
|
Refactor FramebufferMultiviewTest.cpp
The patch refactors the tests to use the GL RAII objects from
gl_raii.h. It also specifies a correct internal format for a texture 2D
array object in one of the tests so that the texture is
color-renderable.
BUG=angleproject:2062
TEST=angle_end2end_tests
Change-Id: Ie536ffeb5b2f2594f5273b795fe786a5042f63d4
Reviewed-on: https://chromium-review.googlesource.com/603610
Commit-Queue: Martin Radev <mradev@nvidia.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
|
|
85d624a5
|
2017-08-07T13:42:33
|
|
Fix null pointer dereference in redeclaration error message
When a function parameter name conflicts with another, the pointer
returned to ParseContext will be null.
BUG=chromium:745242
TEST=angle_unittests
Change-Id: Ie53bb06b0c6660e382d85aeda41f3a1b7df5a917
Reviewed-on: https://chromium-review.googlesource.com/603368
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
6a6199b4
|
2017-06-05T17:30:55
|
|
Add multiview performance tests
The patch adds two tests to measure the performance of the
ANGLE_multiview extension implementation:
1) The first test renders onto two views by issuing thousands of state
changes and draw calls. The aim of the test is to stress the CPU.
2) The second test renders onto two views by drawing with one draw call
half a million quads with multiple attributes per vertex. The attributes
are passed to the fragment shader where they are used for computing the
color. The aim of the test is to stress the GPU's memory system.
The patch also extends the ANGLEPerfTest's functionality to only run
the benchmark if the necessary extensions are available.
BUG=angleproject:2062
TEST=angle_end2end_tests
Change-Id: Ic63d54a69fdddb72439eeeb1951a500fb1247e95
Reviewed-on: https://chromium-review.googlesource.com/597630
Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
|
|
a438f4e7
|
2017-08-04T13:42:39
|
|
Fix some style issues
BUG=angleproject:2123
Change-Id: Ic3c70c7148297662d4fd9e08edcd208f5a1cc885
Reviewed-on: https://chromium-review.googlesource.com/601370
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
880683b1
|
2017-04-12T16:21:55
|
|
ES31: Add glGetProgramResourceiv 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: I50057f7b99f4dc7c23ca87fa9b797ca424f66e3d
Reviewed-on: https://chromium-review.googlesource.com/475075
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
ccb9fad3
|
2017-07-28T15:54:09
|
|
Initialize ANGLE_multiview in the D3D11 renderer
The patch enables the ANGLE_multiview extension in the D3D11 renderer
and determines the maximum number of available views.
BUG=angleproject:2062
TEST=angle_end2end_tests
Change-Id: I56e434a14c61df3d6ab66c2863ce783fcdcc5a93
Reviewed-on: https://chromium-review.googlesource.com/595507
Commit-Queue: Martin Radev <mradev@nvidia.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
|
|
3c76d59f
|
2017-08-03T08:47:56
|
|
Check GCC for __has_attribute
The __has_attribute macro was one of improvements in GCC 5 release.
See https://gcc.gnu.org/gcc-5/changes.html.
This checks to make it work with older GCC.
BUG=angleproject:2119
Change-Id: I751249b9d028d1322829bebc1ca8d423edf27057
Reviewed-on: https://chromium-review.googlesource.com/599152
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
188fd5f6
|
2017-08-04T20:44:08
|
|
Skip TimerQueriesTest.TimeElapsedMulticontextTest on all AMD
Was skipped on Windows and Mac before, now seen flaky also on Linux.
BUG=angleproject:1541
Change-Id: Ic993eeadb104989416607271ce100b02aea7cecc
Reviewed-on: https://chromium-review.googlesource.com/603087
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
90d874fc
|
2017-08-04T17:33:35
|
|
Skip couple TextureRectangleTest tests on Window NVIDIA OpenGL
TextureRectangleTest.TexStorage2D and TextureRectangleTest.TexImage2D
failed on NVIDIA Quadro P400, previously disabled on Linux.
BUG=angleproject:2122
TBR=cwallez@chromium.org
Change-Id: I471dc040ed51a0e4588cfaab7d1c4c46e69932d5
Reviewed-on: https://chromium-review.googlesource.com/602779
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
53440f39
|
2017-08-03T20:01:26
|
|
Skip couple TextureRectangleTest tests on Linux NVIDIA OpenGL
TextureRectangleTest.TexStorage2D and TextureRectangleTest.TexImage2D
failed on NVIDIA Quadro P400.
BUG=angleproject:2122
TBR=cwallez@chromium.org
Change-Id: I72d1755881cb06ef4363266b368ada5ca954f6dd
Reviewed-on: https://chromium-review.googlesource.com/601348
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
13c0dd46
|
2017-07-04T18:27:01
|
|
Add texture rectangle extension.
This is needed to support binding IOSurfaces to textures on OSX. This
commit adds support in the API and tests, but didn't need to implement
compiler changes as it already supported ARB_texture_rectangle.
Implementation of CHROMIUM_opy_texture for rectangle texture and the
spec are left for follow-up commits.
Change-Id: I45c66be763a9d3f6f619640f9f95f39b05c70867
Reviewed-on: https://chromium-review.googlesource.com/559106
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
acd20b1f
|
2017-08-02T16:39:27
|
|
Refactor BlitGL to potentially hold multiple blit shader types.
BUG=angleproject:1932
Change-Id: I4d19892852540797c765916131498c96511b4f55
Reviewed-on: https://chromium-review.googlesource.com/600509
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
d2d0b30e
|
2017-08-03T12:27:28
|
|
angle: Fix chrome/win-on-linux build after https://chromium-review.googlesource.com/466106.
Bug: 495204
Change-Id: I6d460a9e6d110be4697e3cc1685e16395276dd42
Reviewed-on: https://chromium-review.googlesource.com/600258
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
a0bcc50b
|
2017-08-02T14:45:58
|
|
TextureD3D: Mark images clean after binding a surface.
By marking the images as dirty after binding a surface, the surface would
be cleared when it was first read or written to.
BUG=750813
BUG=angleproject:1635
Change-Id: Ic0d1c985151d55a0f1a1af67bb1edc4b0e8f2063
Reviewed-on: https://chromium-review.googlesource.com/598731
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
38abd6c9
|
2017-08-02T13: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-01T13: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-20T17: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-30T12: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-31T09: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-25T17: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-01T12: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-10T11: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-31T14: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-28T09: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-31T10: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-28T14: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-28T14: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-18T16: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-27T18: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-27T16: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-27T14: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-26T17: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-21T16: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-26T14: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-26T15: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-26T13: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-26T14: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-06T10: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-24T11: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-25T12: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-24T15: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-25T13: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-26T07: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-26T11: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-21T16: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>
|