|
ced5c86c
|
2017-08-17T16:05:29
|
|
D3D11: Handle multi-view 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.
The patch also applies the viewport offsets to the viewport and scissor
rectangle and propagates the computed viewports and scissors to the
D3D11 runtime.
BUG=angleproject:2062
TEST=angle_end2end_tests
Change-Id: I8b4295c95c2cc0c1046c67e1fb1a782a46703292
Reviewed-on: https://chromium-review.googlesource.com/618331
Commit-Queue: Martin Radev <mradev@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
0abb7a2a
|
2017-08-28T15:34:45
|
|
Update multiview state on program executable change
Relinking the active program can change its number of views and the
state has to be correspondingly adjusted.
BUG=angleproject:2062
TEST=angle_end2end_tests
Change-Id: I20102a428d7566a8cec5d81eeaa55980665812f4
Reviewed-on: https://chromium-review.googlesource.com/637994
Commit-Queue: Martin Radev <mradev@nvidia.com>
Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|