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

9972 Коммитов

Автор SHA1 Сообщение Дата
Shahbaz Youssefi e810ad9079 Vulkan: dump summary of commands in digraph
This is possible thanks to SecondaryCommandBuffer.  Makes life easier
when debugging by not just showing resource type in the nodes, but
actual stream of commands recorded in each.

Bug: angleproject:3136
Change-Id: I125a32ec2966a55330e60930ca088d1a3673a8ba
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1538832
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
2019-03-28 05:21:51 +00:00
Shahbaz Youssefi 02a579e98a Vulkan: roll Vulkan repos to v1.1.102
Bug: angleproject:3320
Change-Id: Ia24f9bc2499f36c6aab810db00bb6408920222fd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1541719
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
2019-03-28 04:47:51 +00:00
Shahbaz Youssefi 56124e6843 Vulkan: remove dependency to inheritedQueries
If using vk::priv::SecondaryCommandBuffer.  This would allow ES3 support
where inheritedQueries is not supported.

Bug: angleproject:3136
Change-Id: I10508058301ea6da8f3415cfdcc052500a67f810
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1538829
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tobin Ehlis <tobine@google.com>
2019-03-28 04:43:21 +00:00
jchen10 705f480f45 ParallelCompile: Enable worker on GL backend
Except WGL AMD, WGL Intel, and GLX Nvidia.

BUG=922936

Change-Id: I1bdbddd1485578465bcf6ece4b4b7173ae6f9f05
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1442312
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Jie A Chen <jie.a.chen@intel.com>
2019-03-28 04:29:51 +00:00
Shahbaz Youssefi 0516e8a512 Vulkan: Fix subpass declaration for depth/stencil-only FBOs
If an FBO only has a depth/stencil attachment, the attachment index will
be 0, but that value was incorrectly being used as a flag for no
depth/stencil attachment.

Bug: angleproject:2361
Change-Id: I4ee803a392a29f7b261bc0cfabf9f2507dc7b178
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1541670
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
2019-03-28 04:10:11 +00:00
Shahbaz Youssefi 6854940d53 Vulkan: Correct RenderTargetVk extents to image mip
RenderTargetVk::getImageExtents() was always returning the base level
extents of the image it was viewing.  This resulted in incorrect extents
being provided to various framebuffer- and renderpass-related
declarations.  The function is renamed to `getExtents()` and returns the
appropriate mip extents.

Bug: angleproject:2361
Change-Id: I059a8d19fcb140c9095107d935aa3e5cb1852fc2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1537327
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
2019-03-28 03:55:31 +00:00
Tobin Ehlis e18ff25d26 Vulkan:Refactor SecondaryCommandBuffers
A bunch of changes to rework and improve SecondaryCommandBuffers.

Inlined all of the command functions and moved them into the header.
Created new specialized commands for updating Compute/Graphics
DescriptorSets and setting a memoryBarrier.

Updated all of the pointer storage to be inferred rather than
explicitly stored in order to save space. Also removed various params
that are fixed in ANGLE to save space.

Bug: angleproject:3136
Change-Id: I994bb70d5e4db6d9e71d38ac62451aaec780a5e1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1535704
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Tobin Ehlis <tobine@google.com>
2019-03-28 02:41:01 +00:00
James Darpinian 5fd08af41f Sampler state overrides texture state if set
The new validation added in http://crbug.com/809237 failed to consider
that sampler object state overrides texture object state if a sampler
object is bound. State caching makes this complicated to fix.

Fixes WebGL conformance test incompatible-texture-type-for-sampler.html
https://github.com/KhronosGroup/WebGL/pull/2823

Bug: 940080, 809237
Change-Id: I26b0fb35c5630c36248edae80f0298a0cb7e14b8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1522364
Commit-Queue: James Darpinian <jdarpinian@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
2019-03-28 02:33:51 +00:00
Jamie Madill f7f15ac20a Fix deleting a buffer not updating VAO validation.
Deleting a buffer that is bound to a VAO should act as if
the application unbound the buffer. Unbinding the buffer
should update relevant validation caches. But we were
missing the logic that updates the validation caches.

This CL adds the necessary cache updates. It does not include a
regression test. The test was causing an unrelated regression that is
going to be a bit longer. It should not block this fix.

Bug: chromium:943538
Change-Id: Ib073cd07a230ca073a5b14bc054e961158a0097d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1536491
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
2019-03-28 01:36:51 +00:00
Jonah Ryan-Davis 198de6129a Remove EGLThreadTest to fix angle_end2end_tests failures on Android.
EGLThreadTest doesn't clean up well and the test framework can't handle
it well. It caused test failures related to eglMakeCurrent (ELG_BAD_ACCESS)
on Android that were masked by retries.

Calling eglGetDisplay within a test can cause it to return a cached
display from the test runner.  The test is unable to know if it should
terminate this display.

bug: angleproject:3321
Change-Id: I14a539a00acaed4ee71622e7416a6c7a75596606
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1541717
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
2019-03-28 01:35:11 +00:00
Tim Van Patten 208af3ebda Update TexImage2D Parameter Checking
Update the parameter checking performed within ValidateTexImage2D() to
pass the following tests:

dEQP-GLES2.functional.negative_api.texture.teximage2d_invalid_format
dEQP-GLES2.functional.negative_api.texture.teximage2d_invalid_internalformat
dEQP-GLES2.functional.negative_api.texture.texsubimage2d_invalid_type

Bug: angleproject:3250
Bug: angleproject:3251
Test: angle_deqp_gles2_tests --use-angle=vulkan
Change-Id: I4d9be4fe0a9b377e61e3132db262750e6285464b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1534519
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
2019-03-27 23:25:51 +00:00
Jamie Madill 74ba10f2e8 Add suppressions for Mac dEQP [Part 2].
Bug: angleproject:3317
Change-Id: I0c335c6af5d183a8ef7fa4154b6dc897cad0b8ff
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1541721
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
2019-03-27 22:22:06 +00:00
Jamie Madill 250341081c Add suppressions for Mac dEQP. [Part 1]
Since we can't test these failures on the CQ this CL likely won't hit
all the necessary suppressions. Will follow up with a second CL.

Bug: angleproject:3317
Change-Id: I241c139459d7cc7ab3c17d61a9837cdd3ab6c9a7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1542017
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
2019-03-27 18:52:19 +00:00
Jamie Madill c240abe4ef D3D11: Broaden suppression for atomic counter tests.
These seem to be flaky and failing on all D3D11 devices.

https://ci.chromium.org/p/chromium/builders/ci/Win10%20FYI%20dEQP%20Release%20%28NVIDIA%29/25142
https://ci.chromium.org/p/chromium/builders/ci/Win10%20FYI%20dEQP%20Release%20%28NVIDIA%29/25098
https://ci.chromium.org/p/chromium/builders/ci/Win10%20FYI%20dEQP%20Release%20%28NVIDIA%29/25092

Bug: angleproject:1729
Change-Id: I4ae344ec3d950a6e647649a4ecf3ecafaca2de4f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1541666
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
2019-03-27 16:12:49 +00:00
Jonah Ryan-Davis 518c679da1 Clean up test_expectations to merge with angle style/convention.
Can rename/clean up the library to move from chrome style to angle
style. Can also start pulling out chrome-specific definitions. More work
to be done when moving gpu_info to use Angle's SystemInfo.

Bug: angleproject:2677
Change-Id: I75fd4446aa4be85fba590cd00cd3a213a0b3752e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1538677
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
2019-03-26 21:08:34 +00:00
Shahbaz Youssefi 4864e0cd19 Fix OOM in TextureUpload perf test
The test texture size is reduced from 2k x 2k to 1k x 1k to avoid OOM on
lower-memory devices.

Bug: 945415
Change-Id: I66611417114212427f0a2cfc677450f5e705a7ca
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1537331
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
2019-03-26 19:59:24 +00:00
Shahbaz Youssefi 50fb5cc93c Disable GPU perf tracking on D3D
Causes crashes.

Bug: angleproject:3310
Bug: 945415
Change-Id: I59c5fee0afaf74c99ac19168fbfd96de04796add
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1534946
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
2019-03-26 18:18:16 +00:00
Shahbaz Youssefi a47e2a23ab Add instructions for use with RenderDoc + Android
Bug: angleproject:1944
Change-Id: Ie10bd447b08fd881961e7fa0849113f40f98ba1b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1538679
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
2019-03-26 17:55:26 +00:00
Yuly Novikov 72cc2eaafd Suppress dEQP-GLES31.functional.atomic_counter.* on Win7 NVIDIA D3D11
The intent is actually to suppress on 64-bit,
but test expectations don't have this capability.
Since the only Win7 NVIDIA dEQP bot is x64, and that's the only x64 bot,
this works.

Bug: angleproject:1729, chromium:943312
Change-Id: Ib985bc9ff62333deaa4a943c3f3093de51159005
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1538314
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
2019-03-26 17:20:56 +00:00
Rafael Cintron da37e7f675 Add trailing slash to glmark2 data dep
glmark2 is being included as part of angle_perftests, which is built as
an isolate.

Isolates do not work correctly unless there is a trailing slash for
folders in the data section.

Bug: angleproject:3311
Change-Id: I55e5a655ae15683d5cb070589970ba5d9eba4da0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1538676
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
2019-03-26 00:21:33 +00:00
Enrico Galli ee7ffd9ebb ES31: Enabling skipped deqp atomic counter tests on D3D11
Enabling deqp tests previously skipped due to lack of atomic counters. Fixing
bug found in translator found by new tests.

* Switching atomicCounterDecrement from pre to post decrement
* Added 4 byte alignment check to atomic_uint offset
* Added workaround for NVIDIA D3D bug
* Added globallycoherent to atomic counters

Bug: angleproject:1729
Change-Id: If62ea003826fbe2df0834b905ff3ad7b76328399
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1480867
Commit-Queue: Enrico Galli <enrico.galli@intel.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
2019-03-26 00:15:34 +00:00
Jamie Madill d7e9662a10 Print SystemInfo after collection in ANGLE tests.
Disabled on Android because of issues with test parsing.

Bug: angleproject:2677
Change-Id: I75197e423f35bd8b84e27bb9b14d8c91779ad9c8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1537696
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
2019-03-25 23:43:34 +00:00
Jonah Ryan-Davis 0449a902d2 Move gpu_test_expectations from third_party into ANGLE.
1. Copy the code from src/tests/third_party/gpu_test_expectations to
src/test/test_expectations, rename .cc files to .cpp.  Put these in a new
static library and update dEQP to link against it in src/tests/BUILD.gn.
2. Merge the code in angle_config.h into the rest of the expectations parser,
this code was added so that the rest of the parser would compile in ANGLE's
tree with minimal modification.

Still need to follow up with the third step to close the issue.

Bug: angleproject:2677
Change-Id: Icf09b4eeed83a6d09b1964ad2adcfa85cabb4b63
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1536312
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
2019-03-25 18:16:34 +00:00
Jamie Madill 4ae2c12f26 Use Khronos master lists for dEQP tests.
There are an number of valid tests that are excluded from the Android
test lists. Likely some older and low spec devices weren't passing
these tests and for historical reasons they were omitted from the
Android CTS. ANGLE however needs to pass these tests to be conformant
and up until now we weren't testing them on our bots.

The EGL tests still use the same Android version of the test list. It
seems the Khronos version just lists wildcards. ANGLE needs an explicit
test list.

Bug: angleproject:3242
Change-Id: Ie0aa2aa94689be0a40e7cc39e05f0042c3f03f5d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1520986
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
2019-03-25 16:20:34 +00:00
Jonah Ryan-Davis 9078c6a719 Update necessary angle_end2end_tests to check the Android device name
Some tests fail only on specific devices, so the tests should be updated
to reflect that, and allow more tests to run on more devices.

Bug: angleproject:3275
Change-Id: I8e3183c1769c0bb8ed6d2605afcaf399cb1d9ed0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1534463
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
2019-03-25 16:00:04 +00:00
Jamie Madill eae464dd30 D3D11: Fix reserved space with large dynamic buffers.
We would end up with a large reserved space even though the
allocation failed. Insead set the reserved space size after
the allocation succedes.

This was showing up as angle_end2end_tests failures on
Windows 7 due to display reuse and buffer allocation.

Bug: chromium:944454
Change-Id: Idb3bd530fe7b9cc2fce9a579787684e632b1a637
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1534684
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
2019-03-23 19:41:49 +00:00
Jamie Madill a88c1f9c8b Revert "Force new displays on each Windows 7 end2end test."
This reverts commit 3e8a8d5b85.

Reason for revert: Didn't seem to fix the bot.

Original change's description:
> Force new displays on each Windows 7 end2end test.
> 
> This should fix the buffer allocation crash manifesting on Windows 7
> x64.
> 
> Bug: angleproject:3261
> Bug: chromium:944454
> Change-Id: I8a0713e1d1f18285f128c0cfb98b398c6a336a36
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1534461
> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
> Commit-Queue: Jamie Madill <jmadill@chromium.org>

TBR=ynovikov@chromium.org,syoussefi@chromium.org,jmadill@chromium.org

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

Bug: angleproject:3261, chromium:944454
Change-Id: I835331cbe444cc9415bef77f06462be580b43f49
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1535235
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
2019-03-23 17:29:09 +00:00
Shahbaz Youssefi 2660b5031f Vulkan: Restore CommandBuffer to namespace vk
Moved vk::CommandBuffer and vk::SecondaryCommandBuffer to vk::priv:: and
aliased vk::CommandBuffer to one or the other.  This allows the rest of
the classes to continue seeing vk::CommandBuffer as they used to do.
Used a special alias for the primary command buffer that gets submitted
(vk::PrimaryCommandBuffer).

Bug: angleproject:3136
Change-Id: I61236fd182230991db7395d05e3da3be5e3f45be
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1534456
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
2019-03-23 04:51:10 +00:00
Tobin Ehlis a8ff88143a Vulkan:Optimize SecondaryCommandBuffers
RELAND of this commit. Had to fix fuzzer build errors.

Optimize performance of SecondaryCommandBuffers and enable them as the
default build option.
To disable this set angle_enable_custom_vulkan_cmd_buffers=false in
your build args.

This CL enhances the PoolAllocator to have a "fast" mode that can
be enabled at class creation. This mode uses an alignment of 1 byte and
enables a fastAllocation() call that avoids some bookkeeping overhead.
The SecondaryCommandBuffer uses this fastAllocation() function.
Furthermore the fast path of fast allocate, using the current page,
is inlined for maximum speed.
Jamie Madill also updated the SecondaryCommandBuffers to pre-allocate
blocks so that the commands occur linearly in memory. This speeds up
processing with improved cache coherency and minimizes overhead when
recording commands.
Also the core Draw functions and their state updates are all inlined
as well as the common functions to initialize commands and to copy
command pointer data.

This change also includes some new, custom commands. One is
imageBarrier that is a specialized version of pipelineBarrier that only
performs a single image layout transition.
There are customized versions of various Draw commands to minimize
copying of parameters.
There are also specialized commands to bind[Graphics|Compute]Pipeline
that have the pipeline type built in to the command.
More custom commands and command data size optimizations will be made
in follow-on commits.

Bug: angleproject:3136

Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1497418
Commit-Queue: Tobin Ehlis <tobine@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Change-Id: I621d8f8893308fca240b32390928e8ba0036cf06
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1535385
Reviewed-by: Tobin Ehlis <tobine@google.com>
2019-03-22 18:54:30 +00:00
Jamie Madill 896e781118 Revert "Vulkan:Optimize SecondaryCommandBuffers"
This reverts commit 2219b18c98.

Reason for revert: Failing to compile on ASAN builders:

https://ci.chromium.org/p/chromium/builders/try/linux-libfuzzer-asan-rel/134782

Currently blocking roll.

Original change's description:
> Vulkan:Optimize SecondaryCommandBuffers
> 
> Optimize performance of SecondaryCommandBuffers and enable them as the
> default build option.
> To disable this set angle_enable_custom_vulkan_cmd_buffers=false in
> your build args.
> 
> This CL enhances the PoolAllocator to have a "fast" mode that can
> be enabled at class creation. This mode uses an alignment of 1 byte and
> enables a fastAllocation() call that avoids some bookkeeping overhead.
> The SecondaryCommandBuffer uses this fastAllocation() function.
> Furthermore the fast path of fast allocate, using the current page,
> is inlined for maximum speed.
> Jamie Madill also updated the SecondaryCommandBuffers to pre-allocate
> blocks so that the commands occur linearly in memory. This speeds up
> processing with improved cache coherency and minimizes overhead when
> recording commands.
> Also the core Draw functions and their state updates are all inlined
> as well as the common functions to initialize commands and to copy
> command pointer data.
> 
> This change also includes some new, custom commands. One is
> imageBarrier that is a specialized version of pipelineBarrier that only
> performs a single image layout transition.
> There are customized versions of various Draw commands to minimize
> copying of parameters.
> There are also specialized commands to bind[Graphics|Compute]Pipeline
> that have the pipeline type built in to the command.
> More custom commands and command data size optimizations will be made
> in follow-on commits.
> 
> Bug: angleproject:3136
> Change-Id: I35453cc2656bc8c51f0d84d1adef106900aca9a5
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1497418
> Commit-Queue: Tobin Ehlis <tobine@google.com>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>

TBR=tobine@google.com,syoussefi@chromium.org,jmadill@chromium.org

Change-Id: I1c0bfe864ff343eb8ea6c88556523f8715c981d5
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: angleproject:3136
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1535998
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
2019-03-22 14:56:44 +00:00
Jonah Ryan-Davis 9e586a0f8a Prevent vk shader generator from using anything but ANGLE's out.
If ANGLE is inside some other repo but hasn't been built yet, the shader
generator will continue to look for out dirs inside parent repos. Should
only look within the ANGLE repo.

Bug: angleproject:3227
Change-Id: I084414f99eb3db71fe2c7ee4e59206b59f077a5a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1534462
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
2019-03-21 20:29:08 +00:00
Tobin Ehlis 2219b18c98 Vulkan:Optimize SecondaryCommandBuffers
Optimize performance of SecondaryCommandBuffers and enable them as the
default build option.
To disable this set angle_enable_custom_vulkan_cmd_buffers=false in
your build args.

This CL enhances the PoolAllocator to have a "fast" mode that can
be enabled at class creation. This mode uses an alignment of 1 byte and
enables a fastAllocation() call that avoids some bookkeeping overhead.
The SecondaryCommandBuffer uses this fastAllocation() function.
Furthermore the fast path of fast allocate, using the current page,
is inlined for maximum speed.
Jamie Madill also updated the SecondaryCommandBuffers to pre-allocate
blocks so that the commands occur linearly in memory. This speeds up
processing with improved cache coherency and minimizes overhead when
recording commands.
Also the core Draw functions and their state updates are all inlined
as well as the common functions to initialize commands and to copy
command pointer data.

This change also includes some new, custom commands. One is
imageBarrier that is a specialized version of pipelineBarrier that only
performs a single image layout transition.
There are customized versions of various Draw commands to minimize
copying of parameters.
There are also specialized commands to bind[Graphics|Compute]Pipeline
that have the pipeline type built in to the command.
More custom commands and command data size optimizations will be made
in follow-on commits.

Bug: angleproject:3136
Change-Id: I35453cc2656bc8c51f0d84d1adef106900aca9a5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1497418
Commit-Queue: Tobin Ehlis <tobine@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
2019-03-21 20:13:08 +00:00
Jamie Madill 3e8a8d5b85 Force new displays on each Windows 7 end2end test.
This should fix the buffer allocation crash manifesting on Windows 7
x64.

Bug: angleproject:3261
Bug: chromium:944454
Change-Id: I8a0713e1d1f18285f128c0cfb98b398c6a336a36
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1534461
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
2019-03-21 19:00:56 +00:00
Jamie Madill 4967de7251 Work around line loop streaming bug.
This forces a hard limit on the buffer size we allocate from D3D11. It
can work around a D3D11 driver bug on NVIDIA where we would get an
invalid map pointer. This seemed to happen when the buffer sizes were
close to MAX_UINT.

Bug: chromium:943087
Change-Id: I64aa9c55cbb82015101262c19c72741c140964a5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1531374
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
2019-03-21 18:42:05 +00:00
Jonah Ryan-Davis f2bf49e208 Fix locale being reset to default after ShCompileTest.DecimalSepLocale
This test changes the global locale, but wasn't changing the locale back
to the original locale, which was messing up tests that followed.

Bug: 943140
Change-Id: I0abacbd4a724538c9dbe5cb61ef1854ca79a76e4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1531539
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
2019-03-21 15:13:13 +00:00
Tobin Ehlis 134425c770 Vulkan:Integrate SecondaryCommandBuffers
Integrate the custom SecondaryCommandBuffer type into the CommandGraph
nodes by adding new ANGLE_USE_CUSTOM_VULKAN_CMD_BUFFERS define that can
be set in the BUILD gn args with angle_enable_custom_vulkan_cmd_buffers
set to "true."
Initially the custom cmd buffers are disabled by default.

This adds some support functions to SecondaryCommandBuffer to make the
integration easier by matching the wrapped cmd buffer interface:
initialize(), end(), valid().

Bug: angleproject:3136
Change-Id: Ib910554583192550757bb8ce89914e3ea8737988
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1526556
Commit-Queue: Tobin Ehlis <tobine@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
2019-03-21 15:02:33 +00:00
Jonah Ryan-Davis 3a0e5bebc0 run_code_generation.py should fail more gracefully on find out dir.
The script checks a series of conditions, but only fails gracefully if
the first condition fails. If other conditions fails, it will not retry
or output an error message.

Bug: angleproject:3227

Change-Id: Ibb47c2bb1eac90f61f01d87a5051af182816bcad
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1533063
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
2019-03-21 13:48:13 +00:00
Shahbaz Youssefi 232bfeae6b Add perf test for texture upload gpu time
This perf test measures the GPU time spent uploading texture data.

Bug: angleproject:2361
Change-Id: I62fcf0e893fdcc9826a083e23320051a69559fab
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1529922
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
2019-03-21 03:37:00 +00:00
Shahbaz Youssefi cf8735dcde Vulkan: Add support for ETC1
The ETC2 format is backwards compatible with ETC1.  ETC1 RGB8 is thus
supported by implicitly using the ETC2 RGB8 Vulkan format.

Bug: angleproject:2670
Change-Id: I59a112da5ed3a0b90f90a8b4c350c94d43b31120
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1520987
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
2019-03-21 03:36:51 +00:00
jchen10 7d53c60b1a ParallelCompile: use the native extensions
This enhances to use the native parallel compile extensions if
available.

Bug: 873724

Change-Id: I0aaed314accd75e1bfa596b322225b56d729d3a6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1475234
Commit-Queue: Jie A Chen <jie.a.chen@intel.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
2019-03-21 02:54:50 +00:00
Qin Jiajia 0e2c39f266 Fix that uniform can't be used as the index of buffer variable
ssbo.a[uniformBlock.index] should be a valid usage. So in this change,
we forward EOpIndexDirectInterfaceBlock to OutputHLSL to process when
the left node is not a SSBO.

Bug: angleproject:3280
Change-Id: I2696d5b1cf420db133a8ba0728116261dd9e9f1e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1531980
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jiajia Qin <jiajia.qin@intel.com>
2019-03-21 02:15:40 +00:00
Jamie Madill f455f7565a Reuse angle_end2end_test windows and displays.
This both speeds up test execution and cuts down on the number of new
windows and displays created for a test config. This feature is only
currently enabled for Windows NVIDIA and Intel. On every other config
there were blocking issues that would need investigation. Several tests
were manually flagged as needed new displays on each iteration to
prevent test flakiness.

This feature might fix the issues with Intel test flakiness that have
been prominent on the ANGLE CQ.

WGL configurations have also been removed from ANGLE tests. So this
removes more of the code from ANGLETest.cpp.

Bug: angleproject:3261
Change-Id: Ic2864d4806ad38e0eeaa3c0afcd54ae1c548090f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1520995
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
2019-03-21 01:45:10 +00:00
Jamie Madill 45938b6125 Fix incorrect glslang git hash.
Bug: angleproject:3227
Change-Id: I3bbdb6956cf97298eff9bd2a766d048f1de4a70f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1531538
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
2019-03-20 21:34:40 +00:00
Shahbaz Youssefi 12a1fe4a5b Add perf test for fbo clear gpu time
This perf test measures the GPU time spent clearing framebuffers.

Bug: angleproject:2361
Change-Id: I5dc2e12c08543330f7e2565596b73e9c2f4e53ef
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1529864
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
2019-03-20 18:39:59 +00:00
Jamie Madill 0f566fc77c Introduce ConfigParameters test helper struct.
This allows us to more easily compare sets of parameters used in our
tests. The config parameters are stuff like the red / gree / blue bits
used in an EGL config. Or particular sets of extensions or other
EGL options.

This will more easily allow us to determine when we need to use a new
EGL display instead of reusing a prior.

Bug: angleproject:3261
Change-Id: Ia1f0ede988e0b4084fbb4d55097e94fd89ee4899
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1531535
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
2019-03-20 16:54:53 +00:00
Jamie Madill a532570a09 Vulkan: Cleanups to shader generation script.
Fixes the suprious newlines messages. Also prefer a Release directory
when writing shaders for performance. Also adds glslang's git HEAD to
the list of generated hashes. This should ensure we regenerate all
shaders when there's a roll of glslang.

Glslang was rolled prior to this CL. Also update the SPRI-V libs.

Bug: angleproject:3227
Change-Id: I1fd212a08000c08ef41b60c4201edd3ac771f91d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1516512
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
2019-03-20 16:22:33 +00:00
Jamie Madill 198658a39f Vulkan: Force a flush in ContextVk::onDestroy.
Otherwise we could potentially be destroying resources that are
currently in use.

Was caught by changing some of the test tear down ordering. Also might
affect some of the dEQP EGL multithread tests.

Requires fixing the serial tracking of the "null" buffer. Otherwise we
could be destroying the null buffer in the incorrect order.

Bug: angleproject:3261
Bug: angleproject:3059
Change-Id: I57d1059ce9b1da19ced8ac753fab80c625901066
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1531291
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
2019-03-20 15:35:53 +00:00
Jamie Madill a683628b6a Use common SystemInfo in tests.
We were using a static SystemInfo in two places. Consolidate the
SystemInfo collection to a single location. Also renames Nvidia to
NVIDIA to be consistent with the company naming. And adds a few helpers
to SystemInfo for GPU detection.

Will lead to test changes to reduce flakiness on Intel Windows.

Bug: angleproject:3261
Change-Id: I4e0addf19d6fe26b4d31a1289efce72092a0a1dd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1531533
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
2019-03-20 15:24:22 +00:00
Jamie Madill a11db2ac7c Fix D3D9 context state sync.
Calling eglMakeCurrent between different D3D9 contexts could lead to
state sync bugs. This fixes the problem by ensuring all internal
state is dirtied between makeCurrent calls.

This bug turned up when refactoring the tests to run multiple Contexts
with the same EGLDisplay.

Bug: angleproject:3261
Change-Id: Ic91e1af8b2615e7e7e0d0faabeb533d075ea2e91
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1531534
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
2019-03-20 14:20:23 +00:00
Yuly Novikov 6ce1be5a5a Vulkan: move platform defines to Vulkan Headers build file.
From angle_vulkan build target,
so that everyone including Vulkan Headers
would get them for the right platform.

Also remove obsolete defines.

Bug: angleproject:3279
Change-Id: I4bbbeb72acfbf0dd22a1d6a13bd9df7ddaec84dd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1530029
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tobin Ehlis <tobine@google.com>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
2019-03-19 21:57:45 +00:00