|
d8fa9215
|
2016-03-02T11:51:43
|
|
D3D: Refactor VertexBuffer::getSpaceRequired.
By making this a virtual call to BufferFactoryD3D (aka RendererD3D),
we can also stop having side-effects in the BufferD3D class of
creating a static buffer storage when we only want to know the space
required for some vertex elements.
This refactoring will aid implementation of VertexArray11 dirty bits.
BUG=angleproject:1327
Change-Id: I0e34c6e9f5da35edebc179d578ad9392dc0166db
Reviewed-on: https://chromium-review.googlesource.com/329741
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
|
|
7ec6549d
|
2016-03-02T16:57:32
|
|
Use static_cast instead of reinterpret_cast for nullptr
reinterpret_cast should not be used to cast nullptr_t. This should fix
clang and also stops IntelliSense from complaining.
TEST=build on Windows
Change-Id: I4ba342172e36941f6a234fa4ed1369010527a790
Reviewed-on: https://chromium-review.googlesource.com/329901
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
dbfc6c63
|
2016-02-29T01:08:57
|
|
D3D: Make directStoragePossible a local static method.
This method doesn't need to call through to the VertexBuffer class,
since in only really depends on vertex format caps. This makes the
code local to the VertexDataManager, the only place it is used.
Refactoring patch only, for VertexArray11 dirty bits.
BUG=angleproject:1327
Change-Id: I315313a72a00186930d7f9b1091ccb91f37f9f96
Reviewed-on: https://chromium-review.googlesource.com/329740
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
7649fcaa
|
2016-03-01T15:48:12
|
|
Add wildcard suppression for flaky dEQP GLES3 tests on Linux
BUG=angleproject:1323
Change-Id: Idcd49f9744db6ea282ccc2b4fbb932642b1c4c49
Reviewed-on: https://chromium-review.googlesource.com/329738
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
|
|
e6bcdd24
|
2016-03-02T11:26:02
|
|
Fix a bug in EGLPresentPathD3D11Test
This test was releasing a resource created with a queried device
after it released the D3D11 device. It is problematic because the
error was not caught by the swarming tests on the trybots, but did
show up on the Intel bot because it was not a swarming test.
BUG=589851
BUG=angleproject:1219
Change-Id: I7383640df9794aaf0e32e0a7c276ae3b22232050
Reviewed-on: https://chromium-review.googlesource.com/330001
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
518b9fab
|
2016-03-02T11:26:02
|
|
Suppress some failing end2end_tests on Intel.
BUG=589851
Change-Id: Ia580cee30e6842aaddb4683025f425166f0f6120
Reviewed-on: https://chromium-review.googlesource.com/329735
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
f09bf669
|
2016-03-02T11:26:01
|
|
Revert "Suppress some failing end2end_tests on Intel."
This reverts commit 7208f6994cf7d810c2226965362aad43d2a66f53.
Still some failures on Intel, requires a slightly different solution.
BUG=589851
Change-Id: I6ac6599249e9e0f6319c917e04734cd48ca9274d
Reviewed-on: https://chromium-review.googlesource.com/329734
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
bc21e18b
|
2016-02-23T16:04:57
|
|
D3D11 Texture refactoring: Store ANGLEFormat in TextureStorage11
This is needed to enable removing GetDXGIFormatInfo calls, which are
difficult to use correctly due to a texture format being associated
with multiple DXGI formats. This is done in preparation of changing
some of the DXGI formats associated with integer textures.
BUG=angleproject:1244
TEST=angle_end2end_tests,
dEQP-GLES3.functional.fbo.* (no regressions)
Change-Id: I992c4c06189887c1b9de02f9b63dd9a474fcffab
Reviewed-on: https://chromium-review.googlesource.com/329094
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
0011bb60
|
2016-02-29T22:28:06
|
|
fix texture size check in WindowSurfaceCGL::swap
BUG=angleproject:1233
Change-Id: I92fddf331fe0687b290606fe222863bd0fcbc2da
Reviewed-on: https://chromium-review.googlesource.com/329804
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
c4a96d67
|
2015-07-23T17:37:39
|
|
Names of built-in functions cannot be redeclared as functions
With ESSL 3.00, names of built-in functions cannot be redeclared as
functions, and therefore an error needs to be generated if a built-in
function is overloaded.
This is fixed by inserting unmangled built-ins into a special set in
the symbol table and checking if function declarations match any of
the built-ins in the set.
The regular symbol table structures can't be used for storing the
unmangled names because that interferes with name hashing in
OutputGLSL.
Credit goes to Arun Patole, apatole@nvidia.com for initially
investigating this issue and developing the first version of the
patch.
BUG=angleproject:1066
TEST=angle_unittests,
dEQP-GLES3.functional.shaders.functions.invalid.overload_builtin_function*
(2 tests started passing with this change)
Change-Id: I28c8325f5a3a8f4a97226b0dfdbb9762724fa609
Reviewed-on: https://chromium-review.googlesource.com/328994
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
eaef7c17
|
2016-02-15T13:52:28
|
|
floating point perf improvement in CopyNativeVertexData
In the CopyNativeVertexData template function, in the else clause
use memcpy/memset rather than for loops. This is a performance
improvment for floating point versions of CopyNativeVertexData,
particularly on 32-bit Firefox, where the -arch:IA32 compiler
option used cause the compiler to generate fld/fstp operations
inside the for loops.
Update AUTHORS & CONTRIBUTORS to include AMD.
BUG=angleproject:1317
Change-Id: I7133fc476028284f56783f4e2f9e2395f6227514
Reviewed-on: https://chromium-review.googlesource.com/327590
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shannon Woods <shannonwoods@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
d2f02c2a
|
2016-02-26T13:39:54
|
|
Fix a memory leak in the Query11 class.
The destructor did not release D3D objects that could be in the
mPendingQueries list when the destructor is called. This fix now iterates
through the list and releases them.
BUG=angleproject:1325
Change-Id: Ia3bd2a8a611f8dbf85051ab5bfea18ab72038af5
Reviewed-on: https://chromium-review.googlesource.com/329426
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Ian Ewell <ewell@google.com>
|
|
14ed667f
|
2016-02-24T15:22:11
|
|
Remove a few GetDXGIFormatInfo queries
It's needlessly complex to query texture info when determining whether
a format is a depth/stencil format. It can be tested simply by
checking if the dsvFormat field of the format set is set.
BUG=angleproject:1244
TEST=angle_end2end_tests,
dEQP-GLES3.functional.texture.specification.*depth* (no regressions)
Change-Id: I76d008462564657328dae35d664be5f5e22238fa
Reviewed-on: https://chromium-review.googlesource.com/329104
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
7208f699
|
2016-02-29T10:47:35
|
|
Suppress some failing end2end_tests on Intel.
BUG=589851
Change-Id: I91588014784a8a9b75389aeb596923458c30d80a
Reviewed-on: https://chromium-review.googlesource.com/329427
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
eae0c7d4
|
2016-02-26T14:41:55
|
|
Add EGL tests to help troubleshoot environment problems
BUG=585132
Change-Id: I9d04ad1705f45280cc608f419dbbd56db44d4d80
Reviewed-on: https://chromium-review.googlesource.com/329324
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
|
|
7d32aa5f
|
2016-02-29T14:45:32
|
|
Revert "D3D11 Texture refactoring: Store ANGLEFormat in TextureStorage11"
Failing Windows Debug WebGL tests:
https://build.chromium.org/p/chromium.gpu.fyi/builders/Win7%20Debug%20%28NVIDIA%29/builds/13587
Seems to fail in and around:
[ FAILED ] WebglConformance.conformance_renderbuffers_framebuffer_object_attachment (320392 ms)
[ RUN ] WebglConformance.conformance_renderbuffers_framebuffer_state_restoration
BUG=angleproject:1244
This reverts commit d72c61c66e75536681c5fb529a92a2ee2134f0f1.
Change-Id: Id84d6988bc1a3530d8dde4c36d18b735f3de06fc
Reviewed-on: https://chromium-review.googlesource.com/329621
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
d72c61c6
|
2016-02-23T16:04:57
|
|
D3D11 Texture refactoring: Store ANGLEFormat in TextureStorage11
This is needed to enable removing GetDXGIFormatInfo calls, which are
difficult to use correctly due to a texture format being associated
with multiple DXGI formats. This is done in preparation of changing
some of the DXGI formats associated with integer textures.
BUG=angleproject:1244
TEST=angle_end2end_tests,
dEQP-GLES3.functional.fbo.* (no regressions)
Change-Id: I820b8331e6f9aacfe9979b13118371687c5fca51
Reviewed-on: https://chromium-review.googlesource.com/329075
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
ff92e1f5
|
2016-02-24T15:45:20
|
|
Add suppressions for dEQP-GLES3 on Linux
BUG=angleproject:1323
Change-Id: Id437ecd8c05e151558b66294f4c0946e0fee2df9
Reviewed-on: https://chromium-review.googlesource.com/329049
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
|
|
bc49758c
|
2016-02-23T14:43:19
|
|
Choose D3D11 swizzle formats in gen_texture_format_table.py
Making swizzle format data come from the ANGLE format table will make
it easier to make changes that affect both swizzle formats and regular
texture formats. Swizzle format is now specified manually for some
tricky formats, but for most it can be determined automatically from
the ANGLE texture format info.
The ANGLE texture format info in texture_format_table.json is changed
to facilitate this. The componentType field now captures only whether
the data is normalized, int or float and its signedness, but not the
width of the data type. Bit widths of the individual channels are
recorded in a separate "bits" object for each ANGLE format entry.
Also, a new 16-bit RGBA UNORM ANGLE format is added to support
swizzling 16-bit normalized depth formats.
This change is mostly just refactoring, but it fixes swizzling for
formats which have less bits for alpha than other channels:
- RGB10_A2
- RGB10_A2UI
- RGB5_A1
BUG=angleproject:1322
BUG=angleproject:1244
TEST=angle_end2end_tests,
dEQP-GLES3.functional.texture.swizzle.* (all pass)
Change-Id: I87d8a9cc0b6569191f50c41754d77b20ca6afef9
Reviewed-on: https://chromium-review.googlesource.com/329074
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
9062b3b7
|
2016-02-25T13:30:50
|
|
dEQP: Mark while 'continue' tests as failing on Linux.
These tests seem to be flaky, and now they are showing up in
a bunch of CLs as failures.
BUG=angleproject:1324
Change-Id: I47c0e0895f8d87fba52084cf571fb453e5d996e0
Reviewed-on: https://chromium-review.googlesource.com/329279
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
cca8bc91
|
2016-02-25T20:00:09
|
|
Revert "dEQP: Mark while 'continue' tests as failing on Linux."
Accidentally committed GLES3 suppressions to a GLES2 file.
BUG=angleproject:1324
This reverts commit ea9b92f6ad24b8643322e0b5cf03eaccfe9b0e27.
Change-Id: I510f05350d397ced8c68c3ea74c8549062835641
Reviewed-on: https://chromium-review.googlesource.com/329335
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
ea9b92f6
|
2016-02-25T13:30:50
|
|
dEQP: Mark while 'continue' tests as failing on Linux.
These tests seem to be flaky, and now they are showing up in
a bunch of CLs as failures.
BUG=angleproject:1324
Change-Id: Ie7dd70bde1490c8623910c6d319128ca1225990a
Reviewed-on: https://chromium-review.googlesource.com/329156
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
11505601
|
2016-02-17T16:41:50
|
|
D3D11 Texture refactoring: Add ANGLEFormat enumeration to C++ code
Texture formats that are internal to ANGLE can now be uniquely identified
using the ANGLEFormat enum.
GetANGLEFormatInfo returns a structure with the DXGI texture formats
associated with the ANGLE format.
For starters, the ANGLEFormat enum is used when building texture info
structures queried from GetTextureFormatInfo.
BUG=angleproject:1244
TEST=angle_end2end_tests
Change-Id: I58a2027a1d9b7a5621f943cc5ceeb88a858009e3
Reviewed-on: https://chromium-review.googlesource.com/328254
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
1fbc59fe
|
2016-02-24T15:25:51
|
|
D3D11: Enable dirty bits for Framebuffer11.
This patch works using a notification scheme - whenever a Texture or
Renderbuffer changes in such a way as to recreate its RenderTarget, we
pass a signal to the Framebuffer to invalidate some internal state.
Everything is entirely tracked in the Renderer11 layer, and the GL
layer is left untouched.
A RenderTarget11 now tracks points to which it is bound, and the
Framebuffer11 is mostly responsible for managing those links.
The three locations where we notify a Framebuffer when its bound
RenderTargets might be dirty are:
1) RenderTarget11::~RenderTarget
2) EGLImageD3D::copyToLocalRendertarget
3) TextureStorage11_2D::useLevelZeroWorkaroundTexture
This patch gives about a 10% score increase in the D3D11 draw call
benchmark on my system.
BUG=angleproject:1260
Change-Id: Ide38aeadff4a2681bf5bd685e8ca3c9e2612a380
Reviewed-on: https://chromium-review.googlesource.com/327255
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
d834e3dc
|
2016-02-24T13:44:43
|
|
D3D11: Fix Array texture depth-stencil attachments.
We were missing support for these layer depth-stencil attachments.
This fixes running a WebGL test for this feature.
BUG=angleproject:1260
BUG=angleproject:1315
Change-Id: Ida7d44ba1fe65d5da95d2db721e497bfa685db77
Reviewed-on: https://chromium-review.googlesource.com/327402
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
f434906c
|
2016-02-22T14:53:26
|
|
Group D3D11 DXGI format info under a struct
This patch refactors how DXGI format info is stored. The goal is to
make it easier to make changes that affect both swizzle formats and
regular texture formats, and make it easier to pass the format sets
around.
BUG=angleproject:1244
TEST=angle_end2end_tests
Change-Id: I1cc220bccbbdde9200a41829fdc37c8ec123c6a1
Reviewed-on: https://chromium-review.googlesource.com/329072
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
6151af8c
|
2016-02-19T15:22:07
|
|
Remove renderFormat from TextureFormat structure
The renderFormat is only ever needed in renderer11_utils when
determining which multisample sample counts a format supports.
Determine the renderFormat in the context where it is needed instead
of storing it in the TextureFormat structure. Extra fallbacks can
also be removed from the code.
The D3D11FormatTablesTest is restructured so that it doesn't need to
use the renderFormat field.
This refactoring is done to make it simpler to expand usage of the
ANGLE format enumeration in the C++ code.
BUG=angleproject:1244
TEST=angle_end2end_tests,
dEQP-GLES3.functional.fbo.* (no regressions)
Change-Id: I980152eb2f3fdaaa1cc5b08e3c9b695c1625e9e5
Reviewed-on: https://chromium-review.googlesource.com/328680
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
8fd2ca41
|
2016-02-23T11:14:39
|
|
Fix MSVS 2013 build
Implicit conversion from int to boolean was generating a warning on
MSVS 2013.
Still useful to keep support around at least while build instructions
recommend using MSVS 2013.
Change-Id: I6975198f4bc6740a745454375f422d9c67ffaea5
Reviewed-on: https://chromium-review.googlesource.com/329070
Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
|
|
ad9f24e1
|
2016-02-12T09:27:24
|
|
Don't always sync all dirty object state on update.
This leads to a problem where we're synching objects out of order. For
instance, when we call SetImage, we need to sync the pack state. But
SetImage can affect the FBO state, so we need to sync the FBO only
after we've finished with SetImage.
Fix this by using a mask of dirty objects to sync instead of all of
them, always. This also has the side effect of deferring some syncs
that don't have to be processed immediately.
BUG=angleproject:1260
Change-Id: I5678d8f967930d11b42a4309d209215be2bae963
Reviewed-on: https://chromium-review.googlesource.com/327259
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
662986f2
|
2016-02-18T18:06:13
|
|
Implement dynamic cast to TIntermBranch * on TIntermNode
On the TIntermNode class there is no Derived *getAsDerived() for
TIntermBranch. This is needed for the shader debugger to determine
the node type.
BUG=angleproject:1320
Change-Id: I9ce07017ccdb206c06c296b003b31eab6c65653c
Reviewed-on: https://chromium-review.googlesource.com/328281
Tryjob-Request: Tibor Ouden, den <tibordenouden@gmail.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
24a504ec
|
2016-02-18T13:53:00
|
|
Clear SRV cache on keyed mutex texture unbind from TextureStorage11
If the calling code releases the keyed mutex after the unbind then D3D will
unbind the SRV or RTV from the pipeline without notifying the cache. This
allows the SRV to be destroyed, which means that a subsequently-created SRV
could have the same address. This would cause the new SRV to not be correctly
bound to the pipeline if its slot is the same as the unbound SRV.
BUG=588000
Change-Id: I0ad1ba3706a6bcc1fee50745e6148c9b23e578f6
Reviewed-on: https://chromium-review.googlesource.com/328400
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: John Bauman <jbauman@chromium.org>
|
|
73a84969
|
2016-02-12T09:27:23
|
|
Refactor more Texture entry points to a consistent style.
TexImage, SubImage and the Compressed variants were all taking a GL
Context as the first parameter, which is a layering violation and
also caused problems with reworking how the sync works. Fix this
by refactoring them in the same style as the CopyTex* entry points.
BUG=angleproject:1260
BUG=angleproject:747
Change-Id: Ibe5e87d0ebc790e2dcadb8ba153cf40fec73d1f6
Reviewed-on: https://chromium-review.googlesource.com/327258
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
6ad306cb
|
2016-02-11T17:06:41
|
|
dEQP: search for the data directory relative to the exe path.
BUG=580045
Change-Id: I58bfa9ab6766eaae756b3c0f4d28f545e86d543b
Reviewed-on: https://chromium-review.googlesource.com/327306
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
|
|
8a854d68
|
2016-02-17T11:54:04
|
|
Replace GetDXGIFormatInfo with a GetDXGIFormatSizeInfo where possible
It's not always clear which format should be passed to GetDXGIFormatInfo,
since a resource is associated with multiple formats. In some cases, one
of the formats is typeless and one of them is typed, which would return
different type information depending on which one is used. In some cases,
one of the formats may even be a depth format while another is not.
GetDXGIFormatSizeInfo will return correct data no matter which format
associated with a certain resource is passed to it.
Remaining uses of GetDXGIFormatInfo will need to be addressed separately,
either making sure that they always use the format that makes sense in a
given context, or plumbing in the required information in some other way.
BUG=angleproject:1244
TEST=angle_end2end_tests
Change-Id: If3cb03ab68d27743b1fdeb539234ec621dfa3c04
Reviewed-on: https://chromium-review.googlesource.com/328230
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
8322cb91
|
2016-01-27T00:02:13
|
|
Corrections to GLES sRGB formats.
This stops Mesa from complaining when using GLES 3.0 in the back end.
BUG=angleproject:1301
Change-Id: Ib9c0397586a11c407c6aa9ad1544e12b43dd08a7
Reviewed-on: https://chromium-review.googlesource.com/324031
Tryjob-Request: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
6253415f
|
2016-02-22T12:20:00
|
|
Mark sampler metadata clean when it is updated
This was accidentally left out of the patch:
"Pass texture base level to shaders on D3D11"
TEST=angle_end2end_tests
angle_perftests on d3d11
BUG=587846
Change-Id: I5d801288303cf0e0a3d52c1314aca95c47f02e25
Reviewed-on: https://chromium-review.googlesource.com/328960
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
6ee394a1
|
2016-02-18T13:30:09
|
|
Add initializer function to more texture formats
All GL RGB formats that ANGLE stores as RGBA formats under the covers
need to have their alpha channel set to 1. See GLES 3.0.4 table 3.24
for the relevant spec. In some cases, this is handled by the
dataInitializerFunction associated with the format. Previously, some
texture formats had the function set correctly, but not all.
Associating formats with the datainitializerFormat is now a
responsibility of the gen_texture_format_table.py script. The new
automation there makes sure that all GL RGB formats emulated with
RGBA formats get a data initializer function.
Tests are added in end2end_tests for most of the RGB formats.
BUG=angleproject:1318
TEST=angle_end2end_tests
Change-Id: Iad860357f33d87c625445ea6c58a53af47e0b547
Reviewed-on: https://chromium-review.googlesource.com/328253
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
7a533f74
|
2016-01-07T14:12:19
|
|
Add a few missing newlines at eof.
Change-Id: Ie4b0811be8fe2d075a8854f1b9d318f7cb747cd1
Reviewed-on: https://chromium-review.googlesource.com/320930
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
ea6b6376
|
2016-02-17T17:29:52
|
|
Remove AnyDevice from gen_texture_format_table
This makes the generated code easier to read.
BUG=angleproject:1318
BUG=angleproject:1244
TEST=angle_end2end_tests
Change-Id: I6f232f3b8959cf8c72efb1e68b3fae6358b7b698
Reviewed-on: https://chromium-review.googlesource.com/328252
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
a615852d
|
2016-02-17T15:39:34
|
|
Split texture_format_data.json into two files
After this change, texture_format_map.json maps the GL internal formats
to an enumeration of formats that is internal to ANGLE.
Each ANGLE format specifies a unique combination of DXGI formats and
what type of data the format contains. In the future, the ANGLE format
could be used instead of DXGI format inside C++ code to identify which
type of data a resource contains. This becomes useful when a GL format is
associated with multiple DXGI formats, which may have different type
information (for example depth vs. red, integer vs. float).
texture_format_data.json is changed to only store data on these ANGLE
formats.
BUG=angleproject:1318
BUG=angleproject:1244
TEST=gen_texture_format_table.py (no changes in autogenerated file)
Change-Id: I729c4a4d6fc66ee61598ef2d879e6785c85d40ab
Reviewed-on: https://chromium-review.googlesource.com/328251
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
cbed3f5b
|
2016-02-17T15:46:32
|
|
Sort texture formats in gen_texture_format_table.py better
Sort the formats in a meaningful way, so that even if the structure of
the source files change, the order can be maintained. This makes it
easier to review further changes that affect the autogenerated texture
format table.
BUG=angleproject:1318
BUG=angleproject:1244
TEST=angle_end2end_tests
Change-Id: Id3602a809137da43431144a31e36d4a0ed2e596e
Reviewed-on: https://chromium-review.googlesource.com/328250
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
f8bf583b
|
2016-02-11T16:21:49
|
|
Pass integer texture format bit count to shaders on D3D11
This will be needed in the future when integer texture wrap mode support
will be added by sampling integer textures through FLOAT/UNORM/SNORM
SRVs.
The bit count needs to be passed for 8-, 10- and 16-bit textures. 32-bit
integer textures are the ones left over. Only passing the bit counts for
the absolute minimum number of formats avoids unnecessary driver constant
buffer updates.
BUG=angleproject:1244
BUG=angleproject:1095
TEST=angle_end2end_tests
Change-Id: I28a84588842b2eb9a1661454437d21c22ce794b7
Reviewed-on: https://chromium-review.googlesource.com/326944
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
72e6606d
|
2016-02-15T11:52:54
|
|
Add more const qualifiers in TextureStorage11
This makes the code easier to follow.
BUG=angleproject:1244
TEST=angle_end2end_tests
Change-Id: I7787b04217a6771629e69f6f67586f62ce5cfccf
Reviewed-on: https://chromium-review.googlesource.com/327053
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
b9ada71d
|
2016-02-17T11:45:58
|
|
Sync the D3D11 rasterizer state if pointDrawMode or multisample changes.
When drawing points, culling is disabled to make sure the generated point
sprites are not culled. Since there are no dirty bits for pointDrawMode or
multiSample, they were not being checked to ensure the rasterizer state was
correct.
BUG=586531
Change-Id: I8fe60dd8d5bbc79b1bce2c0aa62c40cee560fe24
Reviewed-on: https://chromium-review.googlesource.com/327862
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
bce743ab
|
2016-01-15T17:18:28
|
|
Use texture base level to implement textureSize on D3D11 HLSL
HLSL GetDimensions call doesn't take the texture base level into account,
so ANGLE needs to use the texture base level passed in uniforms to
emulate ESSL textureSize() which does take it into account.
After this change the relevant dEQP tests pass on NVIDIA, Intel is still
suffering from an issue where a wrong value is returned when the lod
is > 0 (tested on Intel HD Graphics 4600). AMD is also suffering from an
unknown issue.
BUG=angleproject:596
TEST=dEQP-GLES3.functional.shaders.texture_functions.texturesize.*
(all pass on NVIDIA now), angle_end2end_tests
Change-Id: I13e33d126008ecdf2b89461a3fb5040949cf19e2
Reviewed-on: https://chromium-review.googlesource.com/322123
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
618bebcd
|
2016-01-15T16:40:00
|
|
Pass texture base level to shaders on D3D11
The base level is passed to shaders in an array included in the driver
uniform block. This is done on feature levels above 9_3, which treat
samplers as indices to sampler arrays in shaders.
A separate uniform block couldn't be used for the sampler metadata,
since that would bring the number of available uniform blocks down to
below minimum level defined by GLES 3.0.
BUG=angleproject:596
TEST=angle_end2end_tests
Change-Id: Ie040521402f9996d51a978aeeba9222e9dd761ce
Reviewed-on: https://chromium-review.googlesource.com/326290
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
d14e3c45
|
2016-02-12T10:08:19
|
|
Initialize TextureState::usage.
This was probably omittted some time ago, and was showing up as
garbage in the debugger in some cases.
BUG=angleproject:1260
Change-Id: Ifca5243d0c94e7659a2245e327a72eed9dd918ab
Reviewed-on: https://chromium-review.googlesource.com/327401
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
89f2845c
|
2016-02-10T11:33:07
|
|
Context virtualization for D3D11 queries
Queries in D3D11 are now virtualized such that they work as expected with
multiple contexts. Timer queries now only time the operations that their
context is responsible for and the operations of other contexts are
ignored.
BUG=angleproject:657
Change-Id: I667de594bdb5831d126d5801c0e692ded4c88bf4
Reviewed-on: https://chromium-review.googlesource.com/327150
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Ian Ewell <ewell@google.com>
|
|
dc107978
|
2016-02-12T09:27:23
|
|
Clean up the style in TextureStorage11.
This is a pure refactoring change, and should behave identically.
BUG=angleproject:1260
Change-Id: I44f5ef2f1444ffd8f8dd6ce55c266ec95781a6d8
Reviewed-on: https://chromium-review.googlesource.com/327266
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
8613f494
|
2016-02-11T10:28:05
|
|
Fixed clang build for InputLayoutCache.
Change-Id: I0757874fad5f665cf4629092ad2d0d5982ca4856
Reviewed-on: https://chromium-review.googlesource.com/327301
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
534bf87b
|
2016-02-09T11:33:29
|
|
Implemented instanced rendering for emulated point sprites
Non-instanced PointSprite emulation for lower feature levels is
implemented using D3D DrawIndexedInstanced and an instanced vertex
buffer containing a pointsprite quad.
GL instanced rendering using glDrawArraysInstanced and
glDrawElementsInstanced with pointsprite emulation is performed using
a for-loop. The loop iterates over each instance to render and adjusts
the buffer offsets accordingly. This is not performant and is only used
and required by this chosen pointsprite emulation method.
Indexed instanced (glDrawElementsInstanced), uses the same offset loop
because the vertex buffer containing the data to be rendered has already
been expanded using getEmulatedIndexedBuffer(). Expanding the buffer
makes the two rendering operations similar enough to share code.
BUG=angleproject:1279
TEST=angle_end2end_tests
Change-Id: If46cc9f158e29f5518c70ad630b3228f474a9f8b
Reviewed-on: https://chromium-review.googlesource.com/321407
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
cfd6b2b6
|
2016-02-08T12:50:38
|
|
D3D11: Add a test to cover a clear RTV driver bug.
See dEQP-GLES3.functional.fbo.color.repeated_clear.sample.tex2d.rgba8
This test uses ClearRenderTargetView to clear various FBO textures,
but it does not seem to work correctly on my Nvidia configuration.
It has been reported to Nvidia. It also seems to fail on Intel.
Current GPU: NVIDIA GeForce GTX 660
Current Driver: 10.18.13.5598 (9-13-2015)
Works on Desktop OpenGL back-end, also on AMD R5230
BUG=angleproject:1305
Change-Id: I4b53b7376faf71f234d05c90f4fb55462de23e36
Reviewed-on: https://chromium-review.googlesource.com/314304
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
ee991799
|
2016-02-10T18:25:40
|
|
Fix texture swizzle cache initialization
Texture swizzle cache needs to be initialized so that the keys do not
represent a valid swizzle state before any swizzled textures have been
cached.
BUG=angleproject:1095
TEST=dEQP-GLES3.functional.texture.swizzle.* (all pass)
Change-Id: I66c10ed49134875d29b07852488a41a776e8fb67
Reviewed-on: https://chromium-review.googlesource.com/326971
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
0ecb18b9
|
2016-02-03T13:40:37
|
|
Avoid a copy in TextureStorage11::setData
This is essentially a reland of 9cf9bcbecaa1e54a47a92eb784e7f591f7b65c57
This code always allocates a new memory buffer for the texture memory,
picks a load function to copy/convert the input data into it, and the
uploads.
In the case where the input format matches the upload format we should
be able to skip the allocation and copy and be much happier.
Change-Id: If4281aeb4cd7bbbebba60122a10610a916833052
Reviewed-on: https://chromium-review.googlesource.com/326852
Tryjob-Request: John Bauman <jbauman@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: John Bauman <jbauman@chromium.org>
|
|
536ebf4d
|
2016-02-09T13:20:12
|
|
Increase the timeout on Timer queries tests.
On Mac, the timer queries tests have flakiness as the tests may timeout
before the query result is available. The time to wait before throwing a
timeout error in the tests was therefore increased by a factor of 20.
BUG=585498
Change-Id: I55047ee7759e6d2dde69294df451202dfb498034
Reviewed-on: https://chromium-review.googlesource.com/327031
Commit-Queue: Ian Ewell <ewell@google.com>
Reviewed-by: Ian Ewell <ewell@google.com>
|
|
292f005f
|
2016-02-04T10:37:32
|
|
Fix context virtualization for timer queries
In the current implementation of query virtualization, queries are
paused/resumed during draw calls. Timer queries however are affected by
every OpenGL call, so virtualization and context switches for timer
queries must happen every time there is a context switch. Thus the logic
for context-switching queries was moved to a new function in the GL state
manager that is called everytime a makeCurrent call on the context is
made. Since queries may be made after a context is made current, the state
manager needs to keep track of any new queries that are started in a
context, so an additional delegate function was added to the state manager
that is called every time a glBeginQuery() call is made that adds the
query object to a set. All the queries in that set are paused when a
context switch is made and the queries in the new context are then loaded
and resumed.
BUG=angleproject:1307
Change-Id: I4e596d83739274cb2e14152a39e86e0e51b0f95c
Reviewed-on: https://chromium-review.googlesource.com/325811
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Ian Ewell <ewell@google.com>
|
|
a78d12c5
|
2016-02-08T14:02:52
|
|
Make the dEQP GTEST initialization failures red on swarming.
On swarming the dEQP GTEST initialization failures would show as green
because the FAIL GTEST macro was called outside of a test. Use exit(-1)
instead that shows up as red on the bots.
BUG=580045
Change-Id: Icf82a8593a11fe7e992778ffd8c682f6738c39a6
Reviewed-on: https://chromium-review.googlesource.com/326690
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
3f16afd3
|
2016-02-05T10:20:59
|
|
Add in GN the data dependencies required by the dEQP tests.
BUG=580045
Change-Id: I3424568c6b200d6b6eb9921c6c09a3b3c974d710
Reviewed-on: https://chromium-review.googlesource.com/326320
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
|
|
39046169
|
2016-02-08T15:05:17
|
|
CollectVariables: Don't include block name in field name.
The spec mandates that the instance name of a block determines how the
active uniform name for this field is reported. However, our handling
of this was a bit bugged. We would include the proper prefix on the
compiler-side, but this mangled the hashing, and was also not strictly
needed. We now also expose the instance name, so we can determine the
proper prefix for variable linking on the GL-side of things. This also
is consistent with how we handle other spec issues, where the GL-side
handles the GL-API specific functionality.
This also allows us to fix name hashing of instanced uniform blocks,
which was previously broken because we would hash the full name of the
active uniform, instead of just the field.
BUG=angleproject:1306
Change-Id: I06ace6dbc3f75fdd8129677360dcc142aa89136e
Reviewed-on: https://chromium-review.googlesource.com/326681
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
15e890e6
|
2016-02-08T16:06:11
|
|
Remove unused texture format source files
These files are not included in the build, they have been replaced by
autogenerated files.
TEST=build on Windows
Change-Id: I6b8448d6f2426bc05c01b7ec6db605e6047ee207
Reviewed-on: https://chromium-review.googlesource.com/326660
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
ded2e2ee
|
2016-02-08T19:32:19
|
|
Remove unreferenced member of Renderer11, mDepthStencilInitialized.
BUG=angleproject:1260
Change-Id: I3773297a4e517e2fca7072f56f3bdbec0a561d9a
Reviewed-on: https://chromium-review.googlesource.com/326851
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
1eabcf41
|
2016-02-02T13:54:00
|
|
Replace '> >' with '>>'
BUG=angleproject:1308
Change-Id: I00bd2ea939b633817662205eb7879efb7f99965f
Reviewed-on: https://chromium-review.googlesource.com/326400
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
2a63b3f8
|
2016-02-08T12:29:08
|
|
Re-land "Implement EGL_experimental_present_path_angle"
- Re-land with clang fix.
This allows ANGLE to render directly onto a D3D swapchain in the correct
orientation when using the D3D11 renderer.
The trick is to add an extra uniform to each shader which takes either
the value +1.0 or -1.0. When rendering to a texture, ANGLE sets this
value to -1.0. When rendering to the default framebuffer, ANGLE sets
this value to +1.0. ANGLE multiplies vertex positions by this value in
the VS to invert rendering when appropriate. It also corrects other
state (e.g. viewport/scissor rect) and shader built-in values
(e.g. gl_FragCoord).
This saves a substantial amount of GPU time and lowers power
consumption. For example, the old method (where ANGLE renders all
content onto an offscreen texture, and then copies/inverts this onto the
swapchain at eglSwapBuffers() time) uses about 20% of the GPU each frame
on a Lumia 630.
Verification:
+ dEQP GL ES2 tests pass when "present path fast" is enabled
+ all ANGLE_end2end_tests pass when "present path fast" is enabled
BUG=angleproject:1219
Change-Id: I56b339897828753a616d7bae837a2f354dba9c63
Reviewed-on: https://chromium-review.googlesource.com/326730
Tryjob-Request: Austin Kinross <aukinros@microsoft.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
c9bdeff4
|
2016-02-08T12:36:55
|
|
D3D11: Refactor RenderTarget apply into StateManager11.
This is a refactoring patch only, and doesn't change the behaviour.
The intent is to make it easy to turn on the Framebuffer dirty bits
in a subsequent patch, once we can cleanly handle textures and
renderbuffers getting recreated.
BUG=angleproject:1260
Change-Id: Iaa5cfe222b020724e088eee5f1ae909b6f981a08
Reviewed-on: https://chromium-review.googlesource.com/325423
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
d1c46228
|
2016-02-08T14:51:18
|
|
Revert "Implement EGL_experimental_present_path_angle"
Compile failure on Clang/Win:
The reason for reverting is: FAILED: ninja -t msvc -e environment.x86 --
"..\..\third_party/llvm-build/Release+Asserts/bin/clang-cl" -m32 /nologo
/showIncludes /FC
@obj\third_party\angle\src\tests\egl_tests\angle_end2end_tests.EGLPresentPathD3D11Test.obj.rsp
/c ..\..\third_party\angle\src\tests\egl_tests\EGLPresentPathD3D11Test.cpp
/Foobj\third_party\angle\src\tests\egl_tests\angle_end2end_tests.EGLPresentPathD3D11Test.obj
/Fdobj\gpu\angle_end2end_tests.cc.pdb
In file included from
..\..\third_party\angle\src\tests\egl_tests\EGLPresentPathD3D11Test.cpp:7:
In file included from
..\..\third_party\angle\src\tests\test_utils/ANGLETest.h:13:
..\..\testing\gtest\include\gtest/gtest.h(1392,16) : error: comparison of
integers of different signs: 'const int' and 'const unsigned int'
[-Werror,-Wsign-compare]
if (expected == actual) {
~~~~~~~~ ^ ~~~~~~
..\..\testing\gtest\include\gtest/gtest.h(1422,12) : note: in instantiation of
function template specialization 'testing::internal::CmpHelperEQ<int, unsigned
int>' requested here
return CmpHelperEQ(expected_expression, actual_expression, expected,
^
..\..\third_party\angle\src\tests\egl_tests\EGLPresentPathD3D11Test.cpp(281,9) :
note: in instantiation of function template specialization
'testing::internal::EqHelper<false>::Compare<int, unsigned int>' requested here
ASSERT_EQ(mWindowWidth * 4, mappedSubresource.RowPitch);
^
..\..\testing\gtest\include\gtest/gtest.h(1960,32) : note: expanded from macro
'ASSERT_EQ'
# define ASSERT_EQ(val1, val2) GTEST_ASSERT_EQ(val1, val2)
^
..\..\testing\gtest\include\gtest/gtest.h(1943,67) : note: expanded from macro
'GTEST_ASSERT_EQ'
EqHelper<GTEST_IS_NULL_LITERAL_(expected)>::Compare, \
^
BUG=angleproject:1219
This reverts commit 6b3c1db5170450bbc4946d8f18ba0d8619da43a0.
Change-Id: Ia67ab82dd13295dc03235d57fa417c73f20a49e6
Reviewed-on: https://chromium-review.googlesource.com/326680
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
c674abeb
|
2016-02-05T17:24:20
|
|
Refactor InputLayoutCache::applyVertexBuffers.
The redesigned code places the internal buffers and input elements for
instance point sprite emulation (FL9_3) at the start of the arrays,
instead of swapping with the first non-instanced element. This makes
the tracking logic of the caching somewhat cleaner.
This facilitates the work of implementing instancing-on-instancing for
FL9_3 conformance.
BUG=angleproject:1279
Change-Id: Ifb030816a313b1e8b916c57ef05915914443312a
Reviewed-on: https://chromium-review.googlesource.com/325090
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
3a913264
|
2016-02-06T01:34:25
|
|
Revert "Avoid a copy in TextureStorage11::setData"
Fails on the Windows builders:
https://build.chromium.org/p/chromium.gpu.fyi/builders/GPU%20Win%20Builder/builds/42201
e:\b\build\slave\gpu_win_builder\build\src\third_party\angle\src\libangle\renderer\d3d\d3d11\load_functions_table_autogen.cpp(787) : error C2440: 'return' : cannot convert from 'const std::map<GLenum,rx::LoadImageFunction,std::less<_Kty>,std::allocator<std::pair<const _Kty,_Ty>>>' to 'const std::map<GLenum,rx::d3d11::LoadImageFunctionInfo,std::less<_Kty>,std::allocator<std::pair<const _Kty,_Ty>>> &'
with
[
_Kty=GLuint
, _Ty=rx::LoadImageFunction
]
and
[
_Kty=GLuint
, _Ty=rx::d3d11::LoadImageFunctionInfo
]
Reason: cannot convert from 'const std::map<GLenum,rx::LoadImageFunction,std::less<_Kty>,std::allocator<std::pair<const _Kty,_Ty>>>' to 'const std::map<GLenum,rx::d3d11::LoadImageFunctionInfo,std::less<_Kty>,std::allocator<std::pair<const _Kty,_Ty>>>'
with
[
_Kty=GLuint
, _Ty=rx::LoadImageFunction
]
and
[
_Kty=GLuint
, _Ty=rx::d3d11::LoadImageFunctionInfo
]
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
This reverts commit 52d3e43b66478b07d26c95a5511d4132cec26000.
Change-Id: I83774ea09ccbb2b92ff609714e1c7201beb775bc
Reviewed-on: https://chromium-review.googlesource.com/326540
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
b0c14b79
|
2016-02-05T16:49:10
|
|
D3D11: Fix 3D ReadPixels with PBOs.
Pass the FBO attachment to the Buffer packing method so we can
retrieve the layer of the attachment when doing an asynchronous
readback. Also take advantage of the TextureHelper11 class to
remove some redundant code.
BUG=angleproject:1290
Change-Id: I26bb21a03e0ff7a42aab4eee75f3c3d12915f398
Reviewed-on: https://chromium-review.googlesource.com/324021
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
52d3e43b
|
2016-02-03T13:40:37
|
|
Avoid a copy in TextureStorage11::setData
This is essentially a reland of 9cf9bcbecaa1e54a47a92eb784e7f591f7b65c57
This code always allocates a new memory buffer for the texture memory,
picks a load function to copy/convert the input data into it, and the
uploads.
In the case where the input format matches the upload format we should
be able to skip the allocation and copy and be much happier.
Change-Id: I3c1a0ab34be91c7d39eb2d0866029d01352b6056
Reviewed-on: https://chromium-review.googlesource.com/325526
Tryjob-Request: John Bauman <jbauman@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
af344a1b
|
2016-02-05T14:51:00
|
|
Fail the dEQP tests early if the case list is not found.
BUG=580045
Change-Id: I917f62dca047ca163bfdbcc5437b2fc1d7a1e020
Reviewed-on: https://chromium-review.googlesource.com/326401
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
|
|
f04f6671
|
2016-02-03T10:50:16
|
|
Add support for timer queries in D3D11
Timer queries without context virtualization are now supported in the
Direct3D11 backend. Only the elapsed time portion of the GL extension is
supported though due to limitations of D3D11 preventing a reliable
implementation of the timestamp functionality. As a result of this, the
counter bits for the timestamp is set to 0 and any queries of the
timestamp will always return 0.
BUG=angleproject:657
Change-Id: I51ca1a1a6bd6bc13155cebeacdca414b764db168
Reviewed-on: https://chromium-review.googlesource.com/325780
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
6b3c1db5
|
2015-12-18T14:01:46
|
|
Implement EGL_experimental_present_path_angle
This allows ANGLE to render directly onto a D3D swapchain in the correct
orientation when using the D3D11 renderer.
The trick is to add an extra uniform to each shader which takes either
the value +1.0 or -1.0. When rendering to a texture, ANGLE sets this
value to -1.0. When rendering to the default framebuffer, ANGLE sets
this value to +1.0. ANGLE multiplies vertex positions by this value in
the VS to invert rendering when appropriate. It also corrects other
state (e.g. viewport/scissor rect) and shader built-in values
(e.g. gl_FragCoord).
This saves a substantial amount of GPU time and lowers power
consumption. For example, the old method (where ANGLE renders all
content onto an offscreen texture, and then copies/inverts this onto the
swapchain at eglSwapBuffers() time) uses about 20% of the GPU each frame
on a Lumia 630.
Verification:
+ dEQP GL ES2 tests pass when "present path fast" is enabled
+ all ANGLE_end2end_tests pass when "present path fast" is enabled
BUG=angleproject:1219
Change-Id: Ib6eeea46bafa6ebce4adada0ae9db3a433b8fc4c
Reviewed-on: https://chromium-review.googlesource.com/321360
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tryjob-Request: Austin Kinross <aukinros@microsoft.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
e3939b98
|
2015-12-01T15:36:51
|
|
D3D11: Transcode ETC1 to BC1.
Adds a new extension to allow transcode ETC formats to suitable BC formats.
This commit implements ETC1 to BC1. More formats will be supported soon.
BUG=angleproject:1285
Change-Id: Iacbfbc2248dfe1aebf24b92696249a9404e331cd
Reviewed-on: https://chromium-review.googlesource.com/316511
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
|
|
7718c05b
|
2015-12-28T20:34:34
|
|
Enable EGL_ANGLE_keyed_mutex on D3D11
Pbuffers created using eglCreatePbufferFromClientBuffer from share handles
created using keyed mutexes can now have their keyed mutex queried. All other
pbuffers will continue to be created without keyed mutexes.
BUG=337606
Change-Id: Id9039064dd8c89fe1706cc8ecb31111c994761fc
Reviewed-on: https://chromium-review.googlesource.com/324253
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
00140f4a
|
2016-02-03T18:47:33
|
|
Revert "Pass texture base level to shaders on D3D11"
This reverts commit 3026829e155bd89b5ca5b7b7c5267699b9192557.
Change-Id: I0b4c3f5b1453b993b149423bb1ce407f4918cf54
Reviewed-on: https://chromium-review.googlesource.com/325435
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
3026829e
|
2016-01-15T16:40:00
|
|
Pass texture base level to shaders on D3D11
The base level is passed to shaders in a uniform block created
specifically for passing sampler metadata. This is done on feature levels
above 9_3, which treat samplers as indices to sampler arrays in shaders.
BUG=angleproject:596
TEST=angle_end2end_tests
Change-Id: I846f2fc195ab1fd884052824ffd3c1d65083c0fb
Reviewed-on: https://chromium-review.googlesource.com/322122
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
9c757b12
|
2016-02-01T14:09:06
|
|
D3D11: Fix ReadPixels with layer 3D attachments.
Non-zero layer attachments are FBO attachments of 3D textures bound
from a layer other than zero. These haven't ever worked AFAIK. Fix
them by retrieving the correct layer from the FBO attachment.
Note: 3D attachments are still broken with PBO ReadPixels. The fix
for those will come in a subsequent patch.
BUG=angleproject:1290
Change-Id: I5417e7374188dd320e1209d006723ce070f98561
Reviewed-on: https://chromium-review.googlesource.com/323472
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Tryjob-Request: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
e2509a39
|
2016-02-01T14:09:05
|
|
D3D11: Fix basic ReadPixels from 3D attachments.
Use the TextureHelper class to abstractly handle 2D and 3d textures.
Also refactor the Image11 copy methods to be a bit cleaner and not
use the copy conversion path when unnecessary.
This patch does not yet fix layer attachments - the fix for that will
come up in a subsequent patch.
BUG=angleproject:1290
Change-Id: If8b7aa8848ca4260e0dde690e7a99e115a97fabb
Reviewed-on: https://chromium-review.googlesource.com/323442
Tryjob-Request: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
5e017349
|
2016-02-01T11:13:04
|
|
Add Debug labels to more D3D11 objects.
This makes debugging using graphics tools easier on Windows.
BUG=angleproject:1290
BUG=angleproject:1299
Change-Id: Ia3889c10fd8e23486f0122e0b567c470517bc9e0
Reviewed-on: https://chromium-review.googlesource.com/324821
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
53f59f4e
|
2016-01-28T17:36:55
|
|
Finish basic timer query support in GL backend
EXT_disjoint_timer_query is feature complete with the WebGL tests passing
with Chromium using ANGLE as a backend. There is some flakiness in the
timestamp query test on WebGL, but investigation revealed a bug on
Chromium's end and a fix is being made there. Since the extension is
feature complete, it is now enabled by default on OpenGL so that it can be
regression tested.
BUG=angleproject:1265
Change-Id: If018b7e3ae84aff7e40c73ff8e672a86689ae6c4
Reviewed-on: https://chromium-review.googlesource.com/324580
Tryjob-Request: Ian Ewell <ewell@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Ian Ewell <ewell@google.com>
|
|
ae786455
|
2016-02-01T16:23:34
|
|
Tell GN about the dependecy of dEQP tests on expectations
Without this, gn-built isolates do not include the test expectations
file in the isolate, causing the test suite to bail out at startup.
Also rename target_name to api_name as target_name is a special
variable name when inside a target definition.
BUG=580045
Change-Id: I20be39c7e50e24757a0828f9056613e171f0002f
Reviewed-on: https://chromium-review.googlesource.com/325040
Tested-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
|
|
9b4e8626
|
2015-12-22T15:53:22
|
|
Redesign samplers in shaders on D3D11
Translation of samplers to HLSL on D3D11 is changed as follows:
Instead of passing around HLSL sampler and HLSL texture references in
shaders, all references to ESSL samplers are converted to constant
indices within the shader body. Each ESSL sampler is identified by an
unique index. In the code generated to implement ESSL texture functions,
these indices are used to index arrays of HLSL samplers and HLSL
textures to get the sampler and texture to use.
HLSL textures and samplers are grouped into arrays by their types. Each
unique combination of a HLSL texture type + HLSL sampler type gets its
own array. To convert a unique sampler index to an index to one of these
arrays, a constant offset is applied. In the most common case of a 2D
texture and a regular (non-comparison) sampler, the index offset is
always zero and is omitted.
The end goal of this refactoring is to make adding extra metadata for
samplers easier. The unique sampler index can be used in follow-up
changes to index an array of metadata passed in uniforms, which can
contain such things as the base level of the texture.
This does not solve the issues with samplers in structs.
The interface from the point of view of libANGLE is still exactly the
same, the only thing that changes is how samplers are handled inside the
shader.
On feature level 9_3, the D3D compiler has a bug where it can report that
the maximum sampler index is exceeded when in fact it is not. This can
happen when an array of samplers is declared in the shader. Because of
this the new approach can't be used on D3D11 feature level 9_3, but it
will continue using the old approach instead.
BUG=angleproject:1261
TEST=angle_end2end_tests,
dEQP-GLES3.functional.shaders.texture_functions.* (no regressions)
dEQP-GLES3.functional.texture.units.* (no regressions)
Change-Id: I5fbb0c4280000202dc2795a628b56bd8194ef96f
Reviewed-on: https://chromium-review.googlesource.com/320571
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Tryjob-Request: Olli Etuaho <oetuaho@nvidia.com>
|
|
5bf9ff4a
|
2016-02-01T11:13:03
|
|
Fix leak with binding Framebuffers directly.
Using BindFramebuffer(1) then GenFramebuffers would return 1.
This leads to a memory leak and was something that was obscuring
debugging a bug in my ReadPixels fix for ES3.
This also fixes a bug where running the texture tests along produces
some random failures.
BUG=angleproject:1290
BUG=angleproject:1299
Change-Id: If11e8c743d2ddde725b12749ac012f670cd290e1
Reviewed-on: https://chromium-review.googlesource.com/324820
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
|
|
541591d5
|
2016-01-28T14:27:50
|
|
Fix some override related warnings.
BUG=
Change-Id: I9e67ba2165ac87959f319fd2485fe385c60a8ea0
Reviewed-on: https://chromium-review.googlesource.com/324461
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Tested-by: Corentin Wallez <cwallez@chromium.org>
|
|
07fd1aaa
|
2016-02-01T11:13:03
|
|
Updated a few new passing tests in dEQP-GLES3.
Unknown when these started passing, but they seem to be OK locally
and on the bot.
BUG=angleproject:1095
BUG=angleproject:1097
BUG=angleproject:1101
Change-Id: Icf6102792b356cd23bf39414f75e796fe7e81879
Reviewed-on: https://chromium-review.googlesource.com/324940
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
|
|
7c41df13
|
2016-02-01T08:55:14
|
|
DisplayGLX: fix a SwapControl copy-paste error
BUG=angleproject:1304
Change-Id: If0ec8682b1d519bc6460cd6ed82f42c4c1ceb952
Reviewed-on: https://chromium-review.googlesource.com/324930
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tryjob-Request: Jamie Madill <jmadill@chromium.org>
Tested-by: Corentin Wallez <cwallez@chromium.org>
|
|
bc69f3be
|
2016-01-29T09:48:08
|
|
Build GN dEQP iff "build_angle_deqp_tests==true"
BUG=580045
Change-Id: Id19f843e8a04d38938b6827a7a64970eb088bcc6
Reviewed-on: https://chromium-review.googlesource.com/324760
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
|
|
f2523eb7
|
2016-01-28T14:25:04
|
|
DisplayGLX: disable the GLES backend on Intel and NVIDIA
This is to fix failures in the automated testing while we work on them.
BUG=angleproject:1303
Change-Id: I0813b5cf1dca1e329504704c70b9d2b0c34d003b
Reviewed-on: https://chromium-review.googlesource.com/324460
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Tested-by: Corentin Wallez <cwallez@chromium.org>
|
|
3ffd78bc
|
2016-01-22T16:09:42
|
|
Add initial support for EXT_disjoint_timer_query.
Basic timer queries are supported and tested in the OpenGL backend
but are not enabled by default. A good portion of the existing query
code was also refactored for improved validation - specifically for
validating that the appropriate extensions are available.
BUG=angleproject:1265
Change-Id: Iebae994cd7a8d3ed3e9fc3776fe2f3d99caa9237
Reviewed-on: https://chromium-review.googlesource.com/323450
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tryjob-Request: Ian Ewell <ewell@google.com>
Tested-by: Ian Ewell <ewell@google.com>
|
|
89853e84
|
2016-01-28T10:36:36
|
|
Clean up unused variable macros.
We might want UNUSED_ASSERTION as a special case but the unused trace
variable macro was being abused in places.
BUG=angleproject:1290
Change-Id: I5f9252b3ff0484d2e859b9fcf68d5d060b28f1fc
Reviewed-on: https://chromium-review.googlesource.com/324290
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
eaaeb7fb
|
2016-01-27T16:07:07
|
|
Disable support for OpenGL ES targets with WGL on Intel drivers.
BUG=angleproject:1145
Change-Id: I9f3a8926eaad88076026f58922289487f90518c7
Reviewed-on: https://chromium-review.googlesource.com/324270
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
b3844843
|
2016-01-27T15:03:06
|
|
Remove the now unused _ANGLE targets.
BUG=522967
Change-Id: I9a5c1793b089920273c74ab43fd5464d0aea7adb
Reviewed-on: https://chromium-review.googlesource.com/324022
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Tested-by: Corentin Wallez <cwallez@chromium.org>
|
|
4c06817a
|
2016-01-25T15:50:20
|
|
Add support for targetting GLES with DisplayGLX.
BUG=angleproject:1145
Change-Id: I3072c31f2f743943b2ed9a3b1a020529112d5f71
Reviewed-on: https://chromium-review.googlesource.com/324091
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Tested-by: Corentin Wallez <cwallez@chromium.org>
|
|
2e5dd41c
|
2016-01-27T13:16:35
|
|
Fix warnings from shadowed variables in DXGISwapChainWindowSurfaceWGL.
BUG=540829
Change-Id: I3595f316afa1897224ad95d6f9a3da3685aa0831
Reviewed-on: https://chromium-review.googlesource.com/324032
Tryjob-Request: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
3e1b4f80
|
2016-01-27T12:39:27
|
|
Refactor ReadPixelsTest.
Split the test into several categories based on what fixture types
they need.
BUG=angleproject:1290
Change-Id: Ia25a022d90a0571e03d86c8e38f6243189968149
Reviewed-on: https://chromium-review.googlesource.com/324020
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
|
|
a15472a3
|
2015-08-11T11:48:03
|
|
Fix bugs with drawbuffer state.
* IsAttachmentEnabled was checking the wrong draw buffer state. Instead
of checking that drawbuffer[colorAttachment] is in use, it should have
been scanning for a drawbuffer state that points to colorAttachment.
* Allow for maxDrawBuffer != maxColorAttachments. Tested by the GL
backend on some systems that don't have the draw buffers extension.
Fixed by updating the helpers and adding a new getDrawBuffer helper.
BUG=angleproject:1121
Change-Id: Idd1b0a9ec4a3f944d332c708364408bf5d59e1fd
Reviewed-on: https://chromium-review.googlesource.com/292740
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Tryjob-Request: Geoff Lang <geofflang@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
722b0d31
|
2015-12-08T11:46:28
|
|
Add a WGL Surface implementation that renders to a DXGI swap chain.
This avoids sandbox issues when calling SetPixelFormat on windows from
other processes while in a sandboxed process.
BUG=540829
Change-Id: I012168531d8c2e5b189671533cea9f57ec713538
Reviewed-on: https://chromium-review.googlesource.com/296340
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Tryjob-Request: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
0dfa807f
|
2016-01-22T15:27:21
|
|
Tests: Prettify output for EXPECT_PIXEL_EQ.
Previously our output would spam multiple lines by checking equality
for each color component. Instead, use a helper struct with a stream
operator to clean up the output. This makes it much more legible.
New output style:
Expected: (0, 255, 0, 255)
Actual: angle::MakeGLColor(255, 0, 127, 255)
Which is: (255, 0, 127, 255)
BUG=angleproject:1290
Change-Id: Ieea018ab6c149a20b5fd74d74c972118b63a4b5e
Reviewed-on: https://chromium-review.googlesource.com/323441
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Tryjob-Request: Jamie Madill <jmadill@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
|
|
f83cbc65
|
2016-01-22T15:27:21
|
|
Use std::random functions for test and samples RNG.
These standard functions are much more powerful than the C random()
routines. Use them to improve the random utils, and use a class
to clean things up further.
This fixes a problem I was having using random_utils where I was
having trouble generating random 32 bit unsigned integers.
BUG=angleproject:1290
Change-Id: I5081764053d0667a4e323553b7dea531256aa778
Reviewed-on: https://chromium-review.googlesource.com/323440
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Tryjob-Request: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
|
|
436e32ae
|
2016-01-15T15:53:12
|
|
GLX backend: check for child window resizes on eglWaitNative
This is the standard way, if not often used, for application to notify
the driver of window size changes. Chromium uses it to resize when it
is done rendering and swapping so that drivers do not clobber the
backbuffer.
This fixes black flickering appearing when resizing the Chromium
windows with --use-gl=angle.
BUG=angleproject:1281
Change-Id: Ic76f3c3ef453eae07eb59122135290411f86764d
Reviewed-on: https://chromium-review.googlesource.com/322390
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tryjob-Request: Corentin Wallez <cwallez@chromium.org>
Tested-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|