Граф коммитов

9132 Коммитов

Автор SHA1 Сообщение Дата
Qin Jiajia 6d765b07f8 ES31: Fix some bugs in ShaderStorageBlockOutputHLSL
When EOpIndexDirect/EOpIndexIndirect/EOpIndexDirectStruct/TIntermSwizzle
appear in [] in ssbo access chain, we should transfer the process of them to
OutputHLSL.

For example:
    instance.v[gl_GlobalInvocationID.x] = data;
    // becomes
    float_Store(dx_instance, 0 + 16 * gl_GlobalInvocationID.x, _data);

    instance.v[s.index[0].x] = data;
    // becomes
    float_Store(dx_instance, 0 + 16 * _s.index[0].x, _data);

Bug: angleproject:1951
Change-Id: I333e238400a10a799a6294f8759cf9c4ef2451c8
Reviewed-on: https://chromium-review.googlesource.com/c/1250661
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jiajia Qin <jiajia.qin@intel.com>
2018-10-08 02:32:03 +00:00
Jiawei Shao 19b51d2983 ES31: Support textureGather[Offset] on shadow samplers
This patch implements translating textureGather[Offset] into HLSL
when the sampler is a shadow sampler. The related HLSL function
should be GatherCmp().

According to the definition of textureGatherOffset():
([ESSL 3.1] Chapter 8.9.3 Page 138)
- gvec4 textureGatherOffset(gsampler2D sampler, vec2 P,
  ivec2 offset, [,int comp])
- vec4 textureGatherOffset(sampler2DShadow sampler, vec2 P,
  float refZ, ivec2 offset)
We need to add parameter "refZ" before "offset" when the sampler
is a shadow sampler.

Bug: angleproject:2826
Test: dEQP-GLES31.functional.texture.gather.basic.2d.depth32f.*
     dEQP-GLES31.functional.texture.gather.basic.2d_array.depth32f.*
     dEQP-GLES31.functional.texture.gather.basic.cube.depth32f.*
     dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.depth32f.*
     dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.depth32f.*
     dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.depth32f.*
     dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.depth32f.*

Change-Id: I9a7d095dd3cfa41aaefd14d012ed1f309abfc6d5
Reviewed-on: https://chromium-review.googlesource.com/c/1244081
Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
Reviewed-by: Jiajia Qin <jiajia.qin@intel.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
2018-10-08 01:14:01 +00:00
Yuly Novikov 450bf36f79 Workaround Adreno driver not supporting unsized EXT_texture_rg formats
Bug: angleproject:2567

Change-Id: Ia7dfa54f7201866b9d7c0ce5d9cccae06c785542
Reviewed-on: https://chromium-review.googlesource.com/c/1265500
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@google.com>
Commit-Queue: Yuly Novikov <ynovikov@google.com>
2018-10-05 21:16:28 +00:00
Olli Etuaho 78df3362ac Fix clearing out-of-range default FB drawbuffer
The default framebuffer is initialized with just one drawbuffer slot
so the number of drawbuffers needs to be validated before checking if
a buffer is attached.

BUG=angleproject:2831
TEST=angle_end2end_tests

Change-Id: I960c39357853d1cd4575b06a992cff33223ab3df
Reviewed-on: https://chromium-review.googlesource.com/c/1264518
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
2018-10-05 18:24:13 +00:00
Geoff Lang 8efa341839 Suppress EXTBlendFuncExtendedDrawTestES3.FragmentArrayOutputLocationsAP on MacOS
Example failure:
https://ci.chromium.org/p/chromium/builders/luci.chromium.ci/Mac%20FYI%20Experimental%20Retina%20Release%20(NVIDIA)/2115

BUG=angleproject:1085

Change-Id: Ifc07282b7ca586bd6346831e08cee963c9eaab54
Reviewed-on: https://chromium-review.googlesource.com/c/1263903
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
2018-10-05 14:57:40 +00:00
Jamie Madill e39e8f46c3 GL back-end error refactor.
Adds explicit error handling to a few scoped state handler classes.
Otherwise mostly mechanical refactoring.

Bug: angleproject:2753
Change-Id: I2bf969a68f45880902b6e7902297c1340a76a1c4
Reviewed-on: https://chromium-review.googlesource.com/c/1255647
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
2018-10-05 14:51:40 +00:00
Shahbaz Youssefi 06270c9eac Vulkan: Safer struct initialization
Using x = {}; before filling out each field, we can be sure any missing
field is 0 initialized.  This in turn helps us not have to specify
certain fields that are generally unused (at the moment), such
as pNext.

Bug: angleproject:2860
Change-Id: Ia1fa2db3ecfb316673a02ac0c5e13e47e055a19f
Reviewed-on: https://chromium-review.googlesource.com/c/1259764
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
2018-10-05 14:40:54 +00:00
Olli Etuaho 5476e805a3 Fix constructing void array zero nodes
Correctly sized void arrays can be needed after parsing has recovered
from an error and the code is trying to evaluate the constant value of
a node. Since now we just have a generic EOpConstruct op instead of
different ops for different types, we can simply remove the special
handling for void arrays in CreateZeroNode to create the arrays in the
correct size.

BUG=chromium:890581
TEST=angle_unittests

Change-Id: I48d96c9ef1d695cd8583a845fd4bd24a7aaf535c
Reviewed-on: https://chromium-review.googlesource.com/c/1264515
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
2018-10-05 12:14:45 +00:00
Jamie Madill 2343836c42 Remove gl::ErrorOrResult.
Bug: angleproject:2491
Change-Id: Ief728b9c50ee2e1925a9b286c52c8ccda6b14fd2
Reviewed-on: https://chromium-review.googlesource.com/c/1255646
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@google.com>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
2018-10-05 11:24:52 +00:00
Jamie Madill 785e8a0b7d Remove gl::LinkResult.
Instead of returning a small struct from LinkProgram calls we use
angle::Result. Linking can have 3 cases:

- the link was successful -> angle::Result::Continue
- the link failed -> angle::Result::Incomplete
- there was an internal error -> angle::Result::Stop

Note that any unexpected Incomplete is still an error. Each function
that accepts Incomplete must check explicitly.

This is the last user of ErrorOrResult.

Bug: angleproject:2491
Change-Id: Idba23be27efe4b561720a4bdd8fe486b40779497
Reviewed-on: https://chromium-review.googlesource.com/c/1255645
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@google.com>
2018-10-05 11:14:22 +00:00
Olli Etuaho 0ca0975339 Add GLES3 support for EXT_blend_func_extended
This adds GLES3 API support for EXT_blend_func_extended. The patch
includes the API entrypoints, validation and also implementation on
the desktop GL backend.

Instead of having built-in fragment color variables, ESSL 3.00 has
custom output variables, which can now be bound to either primary or
secondary output color locations. The "index" set to a custom output
variable determines whether it's used a primary or secondary blending
source color.

The shader layout qualifier takes precedence over the bind call. This
is not specified in the EXT spec, but is specified in desktop OpenGL
specs.

BUG=angleproject:1085
TEST=angle_end2end_tests

Change-Id: Ia24e8e5dadcc165e5e8fbd7c653c7fab6217db88
Reviewed-on: https://chromium-review.googlesource.com/c/1249361
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
2018-10-05 09:12:42 +00:00
Jamie Madill 14246813a1 Update sampler directly on Texture change.
This saves a lot of extra work when updating a Texture.

Bug: angleproject:2763
Change-Id: I87e310ef4f847713123bd24711e1166949ff95d2
Reviewed-on: https://chromium-review.googlesource.com/c/1254043
Reviewed-by: Yuly Novikov <ynovikov@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
2018-10-04 21:04:08 +00:00
Jamie Madill e3bb6b796f Update Textures immediately on program change.
Instead of deferring this work, we can process it immediately. We have
access to the information we need in the prior and current states so
can optimize the update more effectively.

Bug: angleproject:2763
Change-Id: I77482b0ea490fddf403ccc4a4f32665301fd6e7a
Reviewed-on: https://chromium-review.googlesource.com/c/1254042
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
2018-10-04 21:03:39 +00:00
Frank Henigman 49b0f6eb41 Vulkan: read pixel buffer alignment must be 4.
BUG=angleproject:2867

Change-Id: Ie14848bb464eea7f84d0ce523dff2cddf7a185d4
Reviewed-on: https://chromium-review.googlesource.com/c/1260256
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
2018-10-04 20:23:37 +00:00
Shahbaz Youssefi b4ead90b03 Roll VK and SPIR-V deps forward
An incorrect validation is preventing work on queries:

https://github.com/KhronosGroup/Vulkan-ValidationLayers/issues/269

Bug: angleproject:2855
Change-Id: I0454b74f714e69efcfa56e42ff751ffffacaf78c
Reviewed-on: https://chromium-review.googlesource.com/c/1258085
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
2018-10-04 18:08:22 +00:00
Brandon Jones 76dd2d6f9f Change capitilization mismatch in 2D array shaders to fix clang error
In CL #1207216, the #include in blit11 and shader file name had
capitilization mismatches, which caused a clang error. This fixes the
issue.

Bug: angleproject:2762
Change-Id: I4760843beedaabfb83228e40289efaa6a767dec3
Reviewed-on: https://chromium-review.googlesource.com/c/1262017
Commit-Queue: Brandon1 Jones <brandon1.jones@intel.com>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
2018-10-04 16:59:54 +00:00
Brandon Jones 4e6f2aeac2 Implement ANGLE_copy_texture_3d Extension
Adds copyTexture3DANGLE and copySubTexture3DANGLE that adds copy
operations on volumetric textures.

Bug: angleproject:2762
Test: angle_end2end_tests

Change-Id: I0076989c2b7ed69abfc73143c325065bdb06a360
Reviewed-on: https://chromium-review.googlesource.com/c/1207216
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
2018-10-04 12:06:13 +00:00
Ian Elliott 5541a6c86a Change A4A opt-in/out log messages from DEBUG to VERBOSE.
DEBUG was useful for developing and turning on the code, but it's too
verbose to be used with the Android Q release.

Bug: angleproject:2794
Change-Id: I092567c25414cbba7f36ab94e191b1dcfe39fbcb
Reviewed-on: https://chromium-review.googlesource.com/c/1260102
Commit-Queue: Ian Elliott <ianelliott@google.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
2018-10-03 23:03:39 +00:00
Jamie Madill 1395134c34 Remove more uses of gl::ErrorOrResult.
Only gl::LinkResult remains.

Bug: angleproject:2753
Change-Id: I5e9c68c11453e8ab9db4908451957d7b3db0b110
Reviewed-on: https://chromium-review.googlesource.com/c/1254044
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
2018-10-03 21:47:57 +00:00
Jamie Madill 4d422c2907 Vulkan: Move blit mipmap init to ImageHelper.
This hides the logic for manipulating the current layout and barriers
into the image helper. This will make it easier to implement implicit
pipeline barriers. It allows us to remove the updateLayout() hack.

Bug: angleproject:2828
Change-Id: I3e59872e66064e6b105c1f398b4212fb3a6be1a7
Reviewed-on: https://chromium-review.googlesource.com/1255506
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
2018-10-03 16:49:24 +00:00
Jamie Madill c2116cd3af Vulkan: Update pipeline barrier interface.
This makes the vk::CommandBuffer class closer to an auto-generated
wrapper class.

Bug: angleproject:2828
Change-Id: I91ba03914a60d5612707dd240fcda25b86cf2c46
Reviewed-on: https://chromium-review.googlesource.com/1255505
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
2018-10-03 16:46:44 +00:00
Jamie Madill c3bef3e7b0 Allow 'defined' in define in non-WebGL.
This is needed to pass dEQP conformance. Several of the harder dEQP
tests around this behaviour are excluded from the mustpass list. This
is presumably because the behaviours weren't implemented portably.
Nevertheless we need to support conformant behaviour for GLES 2.0
Contexts for the most simple uses.

This also leaves the error behaviour intact for WebGL specs.

Bug: angleproject:1335
Change-Id: Ia80b4f71475efa928488ee6c2ee35c566d4602d4
Reviewed-on: https://chromium-review.googlesource.com/c/1242013
Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
2018-10-03 13:23:05 +00:00
Tobin Ehlis 607f907d47 Vulkan: Add 565 configs for Android
Generate GL_RGB565 internal format configs for Android VK. This allows
apps requesting such formats to map to the appropriate corresponding
Android internal pixel format.

Bug: angleproject:2863
Change-Id: I18f119d6554a601037a40db27234bf33e0ada438
Reviewed-on: https://chromium-review.googlesource.com/c/1258083
Commit-Queue: Tobin Ehlis <tobine@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
2018-10-02 21:19:45 +00:00
Jamie Madill 44a6fbfd95 Optimize resolveLink.
This changes the program query to resolve the link if required. If the
validation layer is skipped the link is resolved in the gl::Context.
Resolving the link on program query allows us to avoid resolving the
link on most of the gl::Program query APIs.

This improves inlining and particularly affects uniform update. It
fixes a performance regression introduced by the parallel shader
linking extension. Gives a 17% increased score on a uniform benchmark.

Also fixes two missing cases of checking for the extension in our
validation code.

Note that some bugs might still exist when the validation layer is
disabled.

Bug: angleproject:2851
Change-Id: I5d725eede3fa147cedf2ce0129791b3412a97a61
Reviewed-on: https://chromium-review.googlesource.com/1255509
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@google.com>
2018-10-02 20:11:08 +00:00
Jamie Madill df836ff8f1 Call onProgramExecutableChange in useProgram.
This cleans up the code slightly and removes a few if checks.
Also fixes a potential edge case with ProgramBinary called on a program
that is in-use.

Bug: angleproject:2763
Change-Id: Ibe0ab20ed44f593bb6c2b0612871680a7df1a15f
Reviewed-on: https://chromium-review.googlesource.com/1254041
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
2018-10-02 17:36:46 +00:00
Jamie Madill 0da73fedd9 Vulkan: Add dumping of the command graph to GraphViz.
Dot files are a graph format that can be visualized with GraphViz.
Giving a small visualization output can help diagnose problems with
the graph. For example extra edges or incorrect dependencies.

Bug: angleproject:2379
Change-Id: I544cba11c5e33579b06fef2fb41bad60066a64e4
Reviewed-on: https://chromium-review.googlesource.com/1254383
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tobin Ehlis <tobine@google.com>
2018-10-02 16:29:39 +00:00
Geoff Lang 38f24ee666 Fix missing query for GL_NUM_REQUESTABLE_EXTENSIONS_ANGLE.
This enum was validated but not implemented.

TEST=RequestExtensionTest.Queries

BUG=890689

Change-Id: I7285e45cef53b197d61cd0dfa9d2bacb70e23e64
Reviewed-on: https://chromium-review.googlesource.com/1255142
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@google.com>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
2018-10-02 13:46:59 +00:00
Yuly Novikov d082819ca2 Fix format support conditions
This fixes format support tables in formatutils.cpp and formatutilsgl.cpp
to conform to the core and extension GLES specs,
for a large portion of the formats.
ExtsOnly SupportRequirement was enhanced to accept multiple sets of extensions.
Format is supported if all the extensions in one of the sets are available.

Also fixes determining support for extensions based on those formats.

And some fixes to tests which fail due to more strict format support.

Bug: angleproject:2567

Change-Id: I6050fff9c597f658fdcea2477bff59a603cdb7e8
Reviewed-on: https://chromium-review.googlesource.com/1105612
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@google.com>
2018-10-01 22:41:41 +00:00
jchen10 5dc0a6f9f6 Vulkan: Vertex buffer should be format aligned.
The address of each attribute in a vertex buffer must be aligned
according to its format. See section 20.3 of vkspec.

Currently we don't handle this when using DynamicBuffer as vertex
input buffer. This loosely fixes the issue by using max alignment for
all formats.

BUG=angleproject:2797,angleproject:2405

Change-Id: I2b27950dacc8fda75dcb646ef4b4d66ff27d629a
Reviewed-on: https://chromium-review.googlesource.com/1234281
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
2018-10-01 20:58:04 +00:00
Geoff Lang 0f57d2e395 Vulkan: Expose the unimplemented GL_EXT_occlusion_query_boolean extension.
Chrome needs this extension to be exposed to load the query entry points,
even for emulated query types.

BUG=angleproject:2855

Change-Id: I09dbb45c391df64d67858f9131c45b164947a707
Reviewed-on: https://chromium-review.googlesource.com/1255507
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
2018-10-01 20:53:34 +00:00
Jeff Gilbert a8a9e12f0a Stream support for R16*_UNORM and P010/P016.
Bug: angleproject:2850
Change-Id: Ib23b3012b5244c8e3edbdfa05d9b4e4869bbfed8
Reviewed-on: https://chromium-review.googlesource.com/1244080
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
2018-10-01 20:38:57 +00:00
Frank Henigman 1ffad843be Remove PixelPackState from PackPixelsParams.
Only one flag ("reverseRowOrder") from PixelPackState was being used,
so instead of including the entire struct in PackPixelsParams, just
include the one flag.

BUG=angleproject:2718

Change-Id: I32e8b30383d198ecba9bf1719c32dda0938fc969
Reviewed-on: https://chromium-review.googlesource.com/1242210
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@google.com>
2018-10-01 20:16:57 +00:00
Olli Etuaho 1dfd8ae2e0 Improve test coverage of constant folding
Clean up some TODOs in the code as well as add tests to make sure that
ANGLE treats expressions indexing into constant arrays as constant
expressions in different contexts. This complements the existing tests
in ConstantFoldingTest.

BUG=angleproject:2298
TEST=angle_unittests

Change-Id: I779bf03891f7d06f14d293e69101c05d7dbf57b6
Reviewed-on: https://chromium-review.googlesource.com/1254067
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
2018-10-01 20:14:17 +00:00
Olli Etuaho 624fbdcf55 Refactor CompileProgram utility
Tests often need to call gl functions to set up program related state
after glCreateProgram has been called but prior to glLinkProgram is
called. Add a callback function to the CompileProgram utility function
to fulfill this need. This reduces code duplication considerably in
several tests.

An alternative way to improve CompileProgram would be to split it into
several different utility functions. This might be slightly easier to
read, but would also be a larger refactoring and require more checks
at the call site.

This will make it easier to implement EXT_blend_func_extended tests,
which need to bind fragment outputs to different slots.

BUG=angleproject:1085
TEST=angle_end2end_tests

Change-Id: I3ac8b7bdc21c6a1f14517bc7df0cf6f35abd7612
Reviewed-on: https://chromium-review.googlesource.com/1254062
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
2018-10-01 20:03:38 +00:00
Nico Weber 079a6bc360 Remove an exit-time destructor from a frequently-included header.
Bug: angleproject:1459
Change-Id: I2bfd7a34ef8ca6d367af7e1d9dd740c4e93727ac
Reviewed-on: https://chromium-review.googlesource.com/1255382
Commit-Queue: Nico Weber <thakis@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
2018-10-01 19:36:35 +00:00
Geoff Lang 2fe5e1d3e6 Vulkan: Implement robustness extensions.
Device recovery is not possible but device loss can be tracked.

BUG=angleproject:2787

Change-Id: Ib94dd557b6b005a560b7a64275b176f7b1777211
Reviewed-on: https://chromium-review.googlesource.com/1194458
Reviewed-by: Tobin Ehlis <tobine@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
2018-10-01 19:33:27 +00:00
Jamie Madill 16c20140e0 Vulkan: Record blit commands inside blit methods.
Instead of starting recording blit commands immediately we can
record them closer to where we write to the Image directly. This makes
it a bit easier to move towards hiding the command buffers. And easier
to move to using implicitly generated barriers.

Bug: angleproject:2828
Change-Id: Ida7d4081dd41c8ee19c7dc3fb234df1bb065794d
Reviewed-on: https://chromium-review.googlesource.com/1254382
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
2018-10-01 18:56:12 +00:00
Geoff Lang def1ba96cb Reland "D3D11: Resolve multisampled EGL surfaces at eglSwapBuffers"
This reverts commit 799da6d18c.

Reason for revert:Crashes have slowed down but there were two changes around the same time that may have caused it.  Relanding this to see if things improve.

Original change's description:
> Revert "D3D11: Resolve multisampled EGL surfaces at eglSwapBuffers"
> 
> An increased crash rate in rx::NativeWindow11Win32::createSwapChain has been
> seen around the same time as this patch landed.  Speculatively reverting.
> 
> BUG=887403
> 
> This reverts commit a49f60fee7.
> 
> Change-Id: Id1b08efbf47196f17f4a5e509a29f7d628b07b49
> Reviewed-on: https://chromium-review.googlesource.com/1238884
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
> Commit-Queue: Geoff Lang <geofflang@chromium.org>

TBR=geofflang@chromium.org

# Not skipping CQ checks because original CL landed > 1 day ago.

Bug: 887403
Change-Id: Id862fbb1c0e764470f0b7f6bdb97bf6bab95d26b
Reviewed-on: https://chromium-review.googlesource.com/1251701
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
2018-10-01 18:37:03 +00:00
Jamie Madill 9d597f8a3a Vulkan: Use copyImageDataToBuffer in Texture mipmap gen.
There were two code paths using nearly identical code. Fix this by
generalizing the helper method slightly.

Refactoring change only.

Bug: angleproject:2828
Change-Id: I39caccfaad4880e566e995483b8e8fb46d67d3da
Reviewed-on: https://chromium-review.googlesource.com/1249563
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
2018-10-01 17:43:04 +00:00
Shahbaz Youssefi 996628a4a1 Vulkan: Add support for VkPipelineCache
The cache is initialized from the application's blob cache and is
occasionally written back to it for disk storage.

Bug: angleproject:2516
Change-Id: I4cba4b00a7b9641c2983ef07159bc62cd10a5519
Reviewed-on: https://chromium-review.googlesource.com/1241373
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
2018-10-01 15:52:41 +00:00
Jamie Madill 5ddbdbf70c Vulkan: Fix bugs in glGenerateMipmaps.
We had two separate minor bugs. 1) missing a flush of the image data
and 2) missing an initial barrier to set the image to TRANSFER_DST.

Bug: angleproject:2652
Bug: angleproject:2653
Change-Id: I485aafc5c9055b5efb101cb2bc3ebab0588d2639
Reviewed-on: https://chromium-review.googlesource.com/1249564
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
2018-10-01 15:51:44 +00:00
Olli Etuaho a78092cb25 Support ESSL 3.00 EXT_blend_func_extended shaders
This adds support for the index layout qualifier that's used in
EXT_blend_func_extended to set whether a fragment output should be
bound to the primary or secondary blend source color.

Output locations are now validated correctly so that two outputs can
have the same location as long as they have a different index. Some
tests are fixed to allow this.

BUG=angleproject:1085
TEST=angle_unittests

Change-Id: I1de3ad1406398952287791eca367562bed59d380
Reviewed-on: https://chromium-review.googlesource.com/1245982
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
2018-10-01 08:24:13 +00:00
Yuly Novikov 79207e6e11 Skip tests failing on Pixel XL
RobustBufferAccessBehaviorTest.NoBufferData/ES2_OPENGLES
RobustBufferAccessBehaviorTest.NoBufferData/ES3_OPENGLES
RobustBufferAccessBehaviorTest.NoBufferData/ES3_1_OPENGLES
ClearTest.ChangeFramebufferAttachmentFromRGBAtoRGB/ES2_OPENGLES
ClearTest.ChangeFramebufferAttachmentFromRGBAtoRGB/ES3_OPENGLES
WebGLGLSLTest.InitUninitializedGlobals/ES2_OPENGLES

Bug: angleproject:2861,angleproject:2689,angleproject:2862
Change-Id: I142594c952b6e7de24057784794b5725f3486212
Reviewed-on: https://chromium-review.googlesource.com/1252701
Reviewed-by: Yuly Novikov <ynovikov@google.com>
Commit-Queue: Yuly Novikov <ynovikov@google.com>
2018-09-28 22:27:57 +00:00
Jiawei Shao af0f31d3a9 Enable several end2end tests on Windows Intel drivers
Bug: angleproject:1388
     angleproject:1706

Change-Id: Ic6c62b0a85756bf36b6d345610a77ffd5c4665e3
Reviewed-on: https://chromium-review.googlesource.com/1248442
Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
Reviewed-by: Jiajia Qin <jiajia.qin@intel.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
2018-09-28 01:50:43 +00:00
Jeff Gilbert c0b82333ab Polyfill BitCount for ARM/ARM64 on MSVC.
Also _WIN64 implies _WIN32.

Bug: angleproject:2858
Change-Id: I63e2ffd2e9e304171ea6adb99836733981cc1813
Reviewed-on: https://chromium-review.googlesource.com/1248441
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
2018-09-28 01:05:33 +00:00
Jamie Madill e8dd079698 Vulkan: Make vk::FramebufferHelper the graph resource.
It seems conceptually easier to understand that a vk::Framebuffer is
the resource used in graph. Rather than making the GraphResource be
integrated into the FramebufferVk class itself. This means that the
only objects that are graph resources are Vulkan objects: Images,
Buffers, and Framebuffers.

Refactoring change only.

Bug: angleproject:2828
Change-Id: I59d60643182287d4b1fcf9730a3c3a0da5b65973
Reviewed-on: https://chromium-review.googlesource.com/1249561
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
2018-09-27 19:58:26 +00:00
Jamie Madill 2d03ff4a1f Vulkan: Make Buffer/Image be CommandGraphResources.
Don't make TextureVk/RenderbufferVk/SurfaceVk/BufferVk own the
manipulation of the command graph. Instead put the operations close to
the buffers and images used to render.

This will lead towards implementing implicit barriers on the command
graph resources.

Bug: angleproject:2828
Change-Id: I07b742b6792c60285b280d6454f90e963d667e0e
Reviewed-on: https://chromium-review.googlesource.com/1246983
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
2018-09-27 19:56:23 +00:00
Jamie Madill 50e6eaaee6 Vulkan: Move LineLoopHelper graph work into BufferVk.
Bug: angleproject:2828
Change-Id: Ie6bcdd10e2de415615db2bfb0b6fa17c392455b0
Reviewed-on: https://chromium-review.googlesource.com/1235655
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
2018-09-27 18:13:58 +00:00
Geoff Lang beb0c946de Vulkan: Make sure the default uniform info arrays match indices.
When inserting uniform layout info into the default uniform block, the array
sizes need to match but insertion was skipped when the uniform was a sampler.

This caused heap corruption when uniform data was written to the wrong offset
in the buffer.

BUG=angleproject:2859

Change-Id: Ia58a68870e2a4805391266dfe73fe8c8d238931d
Reviewed-on: https://chromium-review.googlesource.com/1249562
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
2018-09-27 17:56:58 +00:00
Jamie Madill 122919bddd Update docs on building ANGLE inside Chromium.
Bug: angleproject:1944
Change-Id: If05cdf39bd4f88995ed9ea97a13bca661f826884
Reviewed-on: https://chromium-review.googlesource.com/1211782
Reviewed-by: Tobin Ehlis <tobine@google.com>
2018-09-27 10:53:57 +00:00