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

9420 Коммитов

Автор SHA1 Сообщение Дата
Frank Henigman 1934b78614 Refactor instancing tests.
Replace a lot of code with one function that can do all the tests and
do them with any divisor and number of instances.

BUG=angleproject:2672

Change-Id: I4f7f59d17dad234c524e485d9baa3117fcbb57bd
Reviewed-on: https://chromium-review.googlesource.com/c/1330309
Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
2018-11-15 00:46:01 +00:00
Geoff Lang ccad5e3334 GL: Work around driver returning negative GL_MAX_SERVER_WAIT_TIMEOUT
GL_MAX_SERVER_WAIT_TIMEOUT is only allowed to be positive, ensure that with
a std::max.

BUG=angleproject:2961

Change-Id: I8dd66df24d35c8ae81038d6d9cd0bad0d51f1a80
Reviewed-on: https://chromium-review.googlesource.com/c/1335889
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
2018-11-14 20:11:19 +00:00
Shahbaz Youssefi f87bd3dc97 Vulkan: Implement EXT_texture_filter_anisotropic
Bug: angleproject:2901
Change-Id: If05b4a5270ac1c0bebc3fc854b2aff710e554ce1
Reviewed-on: https://chromium-review.googlesource.com/c/1325730
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
2018-11-14 18:29:50 +00:00
Shahbaz Youssefi fca8fd6201 Vulkan: Refix cleanup race condition on Context destroy
This partially reverts commit 905ee08219
due to regression caused on startup time.

Instead of calling finish before destroying the context, the objects in
the Vulkan backend are `release()`ed instead of `destroy()`ed, so they
will be kept alive for the duration of current work.

Bug: 904846
Change-Id: Ia774470666c4c0d4c1ddc348f685d621243de204
Reviewed-on: https://chromium-review.googlesource.com/c/1333969
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
2018-11-14 17:42:09 +00:00
Shahbaz Youssefi 092481ada0 Vulkan: prepare for ES3
This makes ES3_VULKAN() pass the instantiability test, allowing it to be
specified in end2end tests.

Bug: angleproject:2950
Change-Id: Ife70a22fb8193f9eebe64bec491a24b47bc76939
Reviewed-on: https://chromium-review.googlesource.com/c/1325729
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
2018-11-14 17:42:00 +00:00
Jamie Madill d1a55e393e Expand dEQP-GLES3 suppressions.
These were missing a few suppressions for prior bugs. Going to run this
config on the CQ.

Bug: chromium:822310
Change-Id: I758d8823ff8b1ab347212426d73c6dad1bb6de39
Reviewed-on: https://chromium-review.googlesource.com/c/1334431
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
2018-11-14 00:31:47 +00:00
Geoff Lang f914372547 Only use CompositorNativeWindow11 when the window is non-null.
SurfaceD3D always instantiates a NativeWindow object even for pbuffers.
A null window pointer now creates a CompositorNativeWindow11 instead of
a NativeWindow11Win32 which instantiates an RoHelper in the constructor.
This is expensive for some use cases that create a pbuffer surface every
frame.

BUG=angleproject:2956

Change-Id: If43930d4960c2510b6b96291aab971e3f3abf665
Reviewed-on: https://chromium-review.googlesource.com/c/1333967
Reviewed-by: James Clarke <james.clarke@microsoft.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
2018-11-13 17:49:04 +00:00
Yuly Novikov 2778029563 Vulkan: refactor WrappedObject descendants
Methods receive VkDevice instead of Context
and return VkResult instead of angle::Result now.

Bug: angleproject:2657
Change-Id: I3eca8692ad0b3b6e96e31fd433ed14e04384990e
Reviewed-on: https://chromium-review.googlesource.com/c/1330105
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
2018-11-13 17:09:42 +00:00
Shahbaz Youssefi 0864a7ac63 Vulkan: Enable end2end tests for ES2_VULKAN everywhere
Used a script to find test files that have more ES2_OPENGL() invocations
than ES2_VULKAN(), and added ES2_VULKAN() to those.  There may be false
negatives.

Bug: angleproject:1578
Change-Id: I938eb3571c909879e9276b355a9f1d324880f99a
Reviewed-on: https://chromium-review.googlesource.com/c/1324350
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
2018-11-13 15:34:08 +00:00
jchen10 cd47a379f9 Add SH_INIT_SHARED_VARIABLES flag
This option is used to initialize shared variables to zero at the
beginning of shader execution to avoid compute shaders being able to
read undefined values that could be coming from another webpage or
application.
It's implemented by declaring variables with initial value for HLSL.
For GLSL, it's not allowed to use declaraction initializer for shared
variables, so we need to explicitly assign them to zero at the
beginning of main(). This implementation is only for HLSL.

Bug: chromium:898030

Change-Id: Ic5906500bf4a35cd9a071923f82f32c5e2991be3
Reviewed-on: https://chromium-review.googlesource.com/c/1330310
Commit-Queue: Jie A Chen <jie.a.chen@intel.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
2018-11-13 02:03:08 +00:00
Tim Van Patten 298436280d Fix failing dEQP EGL tests.
dEQP-EGL.functional.query_surface.simple.pbuffer#rgb888_depth_stencil
dEQP-EGL.functional.query_surface.simple.pbuffer#rgb888_depth_stencil
dEQP-EGL.functional.query_surface.simple.pbuffer#rgb888_depth_no_stencil
dEQP-EGL.functional.query_surface.simple.pbuffer#rgb888_no_depth_no_stencil
dEQP-EGL.functional.query_surface.simple.pbuffer#rgb565_depth_stencil
dEQP-EGL.functional.query_surface.simple.pbuffer#rgb565_depth_no_stencil
dEQP-EGL.functional.query_surface.simple.pbuffer#rgb565_no_depth_no_stencil
dEQP-EGL.functional.query_surface.simple.pbuffer#rgba8888_no_depth_no_stencil
dEQP-EGL.functional.query_surface.simple.pbuffer#rgba8888_depth_no_stencil
dEQP-EGL.functional.query_surface.simple.pbuffer#rgba8888_depth_stencil
dEQP-EGL.functional.negative_api#choose_config
dEQP-EGL.functional.negative_api#swap_interval

Bug: angleproject:2546

Change-Id: Ie80e3ee3c65f330d2030b4d7da59cb964e4ea0a5
Reviewed-on: https://chromium-review.googlesource.com/c/1313233
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
2018-11-12 23:31:18 +00:00
Jamie Madill a31b747cfa Whitespace change to cq.cfg.
Pick up the correct config after refs.cfg was added.

Bug: 833848
Change-Id: I472f2ca56598ef2ddf030b28ef87f3f52829b610
Reviewed-on: https://chromium-review.googlesource.com/c/1332530
Reviewed-by: Jamie Madill <jmadill@chromium.org>
2018-11-12 22:48:50 +00:00
Jamie Madill 5da0d5c4fa Add missing refs.cfg.
This is necessary for CQ/Luci operation.

Bug: 833848
Change-Id: Ib42216d3a2ee58e819f42fc9535fa91797f55200
Reviewed-on: https://chromium-review.googlesource.com/c/1332529
Reviewed-by: Andrii Shyshkalov <tandrii@chromium.org>
2018-11-12 22:47:29 +00:00
Jamie Madill 0ec2ba2137 Whitespace change to cq.cfg.
This should trigger luci-config. Also updates OWNERS which were missed
from the last commit.

Tbr: tandrii@chromium.org
Bug: chromium:833848
Change-Id: I23e1583d760acd4addd10f8b224518c702d8745f
Reviewed-on: https://chromium-review.googlesource.com/c/1332528
Reviewed-by: Jamie Madill <jmadill@chromium.org>
2018-11-12 22:43:46 +00:00
Jamie Madill 0b18583285 Copy configs from infra/config branch.
Also adds some documentation and updates OWNERS.

Bug: 833848
Change-Id: I1e9adf9b84a776efceb5a529a73310f515e50c70
Reviewed-on: https://chromium-review.googlesource.com/c/1330681
Reviewed-by: Andrii Shyshkalov <tandrii@chromium.org>
2018-11-12 22:37:57 +00:00
Jamie Madill 03d1a5ed6c Vulkan: Use global buffer barriers.
This switches from using resource barriers for buffers to using global
barriers. This matches the general advised best practice. It also
allows us to combine multiple barriers into one. On a draw we might
combine all the vertex and index barriers into a single barrier call.

We implement this using a bit of extra state tracking in BufferHelper.

Bug: angleproject:2828
Change-Id: I196b368804ff50e60d085687a643e5566ba1c5b6
Reviewed-on: https://chromium-review.googlesource.com/c/1309977
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
2018-11-12 17:32:27 +00:00
Qin Jiajia 48f63f90f6 ES31: add row major matrix support (part 2)
This patch implements read/write vector data in matrix or matrix data directly
in a shader storage block with row_major qualifier.

Bug: angleproject:1951
Change-Id: Id7847e2245b09414709361412a95c4dd84b9ee97
Reviewed-on: https://chromium-review.googlesource.com/c/1304019
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jiajia Qin <jiajia.qin@intel.com>
2018-11-12 15:01:42 +00:00
Shahbaz Youssefi 50bf042939 Vulkan: add depth-only or stencil-only tests
These tests make sure that a depth- or stencil-only format that is
emulated with a depth/stencil one does not affect clear/draw in such a
way that it would expose the hidden aspect.

By nature of the emulation, it's not trivial to read back the hidden
aspect.  This test simply makes sure the hidden aspect doesn't affect
rendering, but is not a definitive test of correctness.

Bug: angleproject:2815
Change-Id: I158937faa019487f6fa08154406c152753a1934b
Reviewed-on: https://chromium-review.googlesource.com/c/1314188
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
2018-11-09 20:44:20 +00:00
Qin Jiajia 5d2dfa46c0 ES31: Add array of arrays support in SSBO
Bug: angleproject:1951

Change-Id: I5e92b75a59a3ab24a34b827ae6f968961b8bea49
Reviewed-on: https://chromium-review.googlesource.com/c/1317376
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jiajia Qin <jiajia.qin@intel.com>
2018-11-09 03:04:08 +00:00
Yizhou Jiang 2fa2147f4c Enable texture multisample extension on ES3 D3D
Update maxIntegerSamples, maxDepthTextureSamples and maxColorTextureSamples
if the extension is enabled on ES 3.0.

TEST=TextureMultisampleTest.*
TEST=NegativeTextureMultisampleTest.Negtive*

BUG=angleproject:2275

Change-Id: I8c215f990ff5d93611b1bc89de9a43f3d392e8d4
Reviewed-on: https://chromium-review.googlesource.com/c/1319251
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jiajia Qin <jiajia.qin@intel.com>
Commit-Queue: Yizhou Jiang <yizhou.jiang@intel.com>
2018-11-09 02:52:04 +00:00
Shahbaz Youssefi d856ca48f4 Vulkan: add clear test for emulated stencil or depth formats
S8_UINT and D24_UNORM_X8_UINT are the only formats currently that are
single-aspect and are possibly emulated with a packed depth-stencil
format if it's not supported.  A flag to FeaturesVk has been added as a
way to force this behavior for the sake of testing.

This test is added to ensure the correct clear algorithm is used for
this case.  Additionally, this case is detected and the other aspect is
forcefully cleared to 0 whenever the original aspect is cleared.

Bug: angleproject:2815
Change-Id: Ief3039d66bbf46468213b9e3224f7cc7541c3a2e
Reviewed-on: https://chromium-review.googlesource.com/c/1312453
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
2018-11-08 13:53:29 +00:00
Qin Jiajia 743899de3f ES31: Implement MAX_SHADER_STORAGE_BLOCK_SIZE
Bug: angleproject:1951

Change-Id: I6353e6ed10a8b441bfbebc10fa6a07cde1cae7d8
Reviewed-on: https://chromium-review.googlesource.com/c/1317377
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jiajia Qin <jiajia.qin@intel.com>
2018-11-08 10:03:47 +00:00
Shahbaz Youssefi 905ee08219 Vulkan: Fix cleanup race condition on Context destroy
In Context::onDestroy(), e7b3fe2186 had
moved surface deletion first which down the line caused
RendererVk::finish() to be called.

bf7b95db6b however made surface deletion
unnecessary, which means finish was never called.

This commit adds an explicit finish in Context::onDestroy().  In truth,
the wait is only necessary until all command buffers submitted for this
particular context have finished.  This optimization is deferred to a
possible future work.

Bug: angleproject:2811
Change-Id: I56e6c88d3b4a6ec73f70d80d7775a0c85be651ea
Reviewed-on: https://chromium-review.googlesource.com/c/1302838
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
2018-11-08 04:21:50 +00:00
Jamie Madill 448b99f1a5 Add WebKit bounds checking to Chrome credits.
We were not respecting the terms of the license that this piece
of code requests for redistribution.

I noticed this when investigating adding a new third_party library
and wanted to display its license in about:credits. This change
adds a special file that the licnese check in Chrome uses and
fixes the naming of the README for this script.

Bug: None
Change-Id: Ib33e9fe4a4e5b2968780bb6d8d6b39119b0361a7
Reviewed-on: https://chromium-review.googlesource.com/c/1323855
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
2018-11-07 23:47:03 +00:00
Austin Eng 1bf18ce9e2 Implement GL_ANGLE_multi_draw
This patch adds entrypoints glMultiDrawArraysANGLE,
glMultiDrawElementsANGLE, glMultiDrawArraysInstancedANGLE,
annd glMultiDrawElementsInstancedANGLE

Bug: chromium:890539

Change-Id: Ic9c374c53892460f44ca6e73a253b78473ac2dff
Reviewed-on: https://chromium-review.googlesource.com/c/1282268
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Austin Eng <enga@chromium.org>
2018-11-06 18:04:07 +00:00
Jamie Madill bc5834cdad Vulkan: Use dynamic state for Viewport and Scissor.
This reduces the size of the pipeline cache descriptor under 256 bytes.
Further improves the speed of cache query. Has the minor cost of
needing more state application during a new command buffer or render
pass.

Bug: angleproject:2522
Change-Id: I3d71e457a36084ac4748d04fe3c9bab4caad503c
Reviewed-on: https://chromium-review.googlesource.com/c/1316888
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
2018-11-06 17:47:08 +00:00
Jamie Madill 77b2436e28 Vulkan: Reduce PipelineDesc size.
This packs the desc into 288 bytes. Down from over 400. The hashing and
memcmp functions are sped up considerably.

Improves performance in the VulkanPipelineCachePerf test by 50% and
also improves performance in the state changing draw call test by 20%.

Bug: angleproject:2522
Change-Id: I72ed191a93721b875684f647f806c09be4e66821
Reviewed-on: https://chromium-review.googlesource.com/c/1308460
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
2018-11-06 16:26:59 +00:00
Shahbaz Youssefi 3d86e89bce Vulkan: properly handle 0-width or 0-height framebuffers
The test for whether 0-width or 0-height is not given was doing

    width != 0 || height != 0

which mistakenly used || instead of &&.

Bug: angleproject:2910
Change-Id: Iaa41edffcfe1f8553e8fbefb9bc3b12a7f33a5a6
Reviewed-on: https://chromium-review.googlesource.com/c/1316028
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
2018-11-05 18:12:32 +00:00
Yuly Novikov 37297a4f14 Don't build VulkanCommandBufferPerfTest on Linux
Since it's flaky

Bug: angleproject:2945
Change-Id: Iac7b465ae1ebefbde3b23267c6974209de664362
Reviewed-on: https://chromium-review.googlesource.com/c/1315836
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
2018-11-02 22:02:41 +00:00
Geoff Lang 1590fcc4d3 Add a spec and tests for GL_ANGLE_memory_size.
Change the data type of buffer memory sizes to 64 bit integers.

BUG=892288

Change-Id: I10e07b86f2ccc0cb61c8d7ee0d439e00d5eb8d3a
Reviewed-on: https://chromium-review.googlesource.com/c/1312244
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
2018-11-02 20:37:23 +00:00
Shahbaz Youssefi 1c0f151e04 Implement missing posix utils
Bug: angleproject:2923
Change-Id: I35fee6303f07c7b3a931f876a8d9d4ba54c91630
Reviewed-on: https://chromium-review.googlesource.com/c/1315607
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
2018-11-02 19:28:49 +00:00
Geoff Lang 6ba22ee137 GL: Implement EGL_ANDROID_get_frame_timestamps.
BUG=angleproject:2936

Change-Id: I758d797d185b2de330cce3401bfeef76c7df590e
Reviewed-on: https://chromium-review.googlesource.com/c/1302836
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
2018-11-02 16:43:05 +00:00
James Clarke 99d0463cd9 Windows: add support for SpriteVisuals as a native window type.
Enable SpriteVisuals to work along side HWNDs so that Angle rendered content can be
hosted with Windows::UI::Composition APIs or XamlIslands in desktop Win32 applications.

Includes a whitebox test, verified Win7 compatibility

For more info see:
https://docs.google.com/document/d/1ggv6H-aK1a3pXNMTtMF6h0Bv0rulIeBpBxBBCJYR6Zs/edit?usp=sharing

Bug: angleproject:2947
Change-Id: Id005739553be2a6268cd4543f1b07aaf89760422
Reviewed-on: https://chromium-review.googlesource.com/c/1236844
Commit-Queue: James Clarke <james.clarke@microsoft.com>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
2018-11-02 15:53:57 +00:00
Qin Jiajia a6e8a0c5fe ES31: Simplify IsInShaderStorageBlock function
Bug: angleproject:1951
Change-Id: I0501502fa2201953a3dad4b18103ff5ae20db1bf
Reviewed-on: https://chromium-review.googlesource.com/c/1314298
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
2018-11-02 11:16:29 +00:00
Jamie Madill caeb1e895d Vulkan: Allow unlimited simultaneous descriptor sets.
This changes the fixed array into a STL vector. Instead of storing
Descriptor Pools by value we now store them by pointer. This allows the
vector to resize without changing the address of the Descriptor Pool.

Also enables some more Vulkan perf tests that were crashing before.

Bug: angleproject:2938
Change-Id: I8a88d5315b941c4f54205a9957e2834fe02ada84
Reviewed-on: https://chromium-review.googlesource.com/c/1311395
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tobin Ehlis <tobine@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
2018-11-02 05:54:31 +00:00
Yizhou Jiang c0b6c639b1 Implement GetTexLevelParameter api of texture multisample extension
This patch adds GetTexLevelParameterivANGLE and GetTexLevelParameterfvANGLE.

TEST=TextureMultisampleTest.GetTexLevelParameter*
TEST=NegativeTextureMultisampleTest.Negtive*

BUG=angleproject:2275

Change-Id: Id702ba31df36ab65f46b697d480b5bf01b87e360
Reviewed-on: https://chromium-review.googlesource.com/c/1295830
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Yizhou Jiang <yizhou.jiang@intel.com>
2018-11-02 02:51:57 +00:00
Jamie Madill 502d2e2155 Vulkan: Crunch RenderPassDesc.
This reduces the size of the RenderPass desc from 64 to 12 bytes.

Bug: angleproject:2522
Change-Id: Iff2df87ba65be0bd976bba81c76c285cb0fa1ceb
Reviewed-on: https://chromium-review.googlesource.com/c/1308459
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
2018-11-01 23:58:15 +00:00
Shahbaz Youssefi 2197dc5290 Vulkan: Implement masked depth & stencil clear
This commit also adds tests for clearing depth and stencil with
mask/scissor.

Bug: angleproject:2540
Change-Id: I30dd840afd6cdd4e3a38c50fcba4c8623513ceb0
Reviewed-on: https://chromium-review.googlesource.com/c/1307585
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
2018-10-31 20:54:47 +00:00
Brandon Jones 580baf3796 Recompile D3D11 Blit Shaders
Recompile Blit11 shaders with Microsoft HLSL Shader Compiler
9.29.952.3111.

Bug: angleproject:2870
Change-Id: I688e5b2ce23ef157c1bb879d5adc49fbecb4dd21
Reviewed-on: https://chromium-review.googlesource.com/c/1298003
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Brandon1 Jones <brandon1.jones@intel.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
2018-10-31 18:53:37 +00:00
Jamie Madill 6bf09284a3 Scale down a slow index buffer perf test.
This test was slow enough that running 20k iterations might have been
causing a timeout on the Nexus 5.

Bug: angleproject:2923 
Change-Id: I03f6e95135d8c521e6ef3e81bc9a4b0dfd7f19df
Reviewed-on: https://chromium-review.googlesource.com/c/1310693
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
2018-10-31 18:12:34 +00:00
Yuly Novikov 5ca3e5a0b2 Fix ShaderStorageBlockOutputHLSL::writeEOpIndexDirectOrIndirectOutput
https://chromium-review.googlesource.com/c/1304017 removed str()
wrapping values passed to TInfoSinkBase::operator<<().

This broke ANGLE roll
https://chromium-review.googlesource.com/c/chromium/src/+/1309331
failing compile on linux-libfuzzer-asan-rel bot.

Looks like libfuzzer compiler has a bug, not being able to find
sh::BlockLayoutEncoder::BytesPerComponent.
Wrapping it in str() works around this.

Bug: angleproject:1951
Change-Id: I2deb573667dc1e88d352bad1933c269ec36cf398
Reviewed-on: https://chromium-review.googlesource.com/c/1309975
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
2018-10-31 17:14:37 +00:00
Qin Jiajia d60e42f8e7 ES31: add row major matrix support (part 1)
This is the first patch to enable row major matrix suppot in series. This patch
ensures that we can get correct location when we load/store data from matrix.
Currently, only scalar data load/store works well.

mat2x3 data
The location of data[x][y] will be:
data.offset + x * scalarStride + y * matrixStride  //row_major
data.offset + x * matrixStride + y * scalarStride  //column_major

Bug: angleproject:1951
Change-Id: I5bd7bad7d293219ba610f18eeafc56e70e36de43
Reviewed-on: https://chromium-review.googlesource.com/c/1304017
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jiajia Qin <jiajia.qin@intel.com>
2018-10-31 02:43:52 +00:00
Jamie Madill 193a284d34 Vulkan: Split vk::CommandGraphResource.
This adds two subclasses: RecordableGraphResource and
QueryGraphResource. Each specializes for Buffer/Image/Frambuffer use
cases and Query use cases respectively. No virtual functions are added
to keep best performance.

We also change the CommandGraph API slightly to optimize away the check
for a barrier resource. This requires exposing the set current barrier
API on the CommandGraph.

Bug: angleproject:2828
Change-Id: I1c23f52bfe04cc682a00b245d63c3ac9a651615d
Reviewed-on: https://chromium-review.googlesource.com/c/1305994
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
2018-10-30 22:38:03 +00:00
Jamie Madill 557a1ee4f4 Make perf tests faster in correctness-only mode.
When running with "--one-frame-only" we can also skip the test warmup.
Also we can reduce the internal iteration count to 1 to make the tests
as fast as possible.

Bug: angleproject:2923
Change-Id: I2f82ae0dd237767ea7b15074e459ed1094ba9943
Reviewed-on: https://chromium-review.googlesource.com/c/1308737
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
2018-10-30 21:51:45 +00:00
Shahbaz Youssefi 9a79c8893b Run DifferentStencilMasks tests
This test was added and referenced, but was actually never added to the
list of files to be compiled.  The most recent validation work has been
regarding WebGL.

This test verifies the behavior when different stencil masks are set for
front and back faces, which is unsupported in D3D and disallowed in
WebGL.  In the interest of running the test on all back ends, and that
the validation was modified last to improve WebGL support, the test runs
in WebGL compatibility mode.

Bug: chromium:806557
Change-Id: I7615b9fc18d4203ed342e23881bea6bdd9b3864c
Reviewed-on: https://chromium-review.googlesource.com/c/1306256
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
2018-10-30 21:18:51 +00:00
Jamie Madill 3402d52309 Try to reduce variance in angle_perftests.
This change does a few things:

- make perf test runner script print % variation instead of stddev

This makes it a bit more clear how much variance there is.

- stabilize CPU in the render perf tests

Setting a thread affinity and priority should stop from switching cores
during the run. Hopefully can prevent background noise from changing
the test results.

- warm up the benchmark with a few iterations

This should hopefully make the test results a bit more stable.

- output a new normalized perf result value

The new result is normalized against the number of iterations. So it
should hopefully be stable even if the number of iterations is changed.

- increases the iteration count in the draw call perf tests.

These tests were completely dominated by SwapBuffers time. Increasing
the iterations per step means we actually are bottlenecked on CPU time
instead.

Bug: angleproject:2923
Change-Id: I5ee347cf93df239ac33b83dc5effe4c21e066736
Reviewed-on: https://chromium-review.googlesource.com/c/1303679
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
2018-10-30 20:27:07 +00:00
Jamie Madill 0ea962107a Vulkan: Enable more perf tests.
Also fixes the check for the correct UINT index extension that wasn't
available on Vulkan. Also includes a workaround for the mock ICD not
implementing buffer state for index ranges.

Bug: angleproject:2923
Change-Id: Iab35809d15f890525a9e658d4148272c46cf1320
Reviewed-on: https://chromium-review.googlesource.com/c/1308733
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
2018-10-30 20:16:50 +00:00
Jamie Madill 763cec0707 Vulkan: Add warnings for cache struct packing.
This adds diagnostic warnings for packed cache structures. It ensures
the packed versions of the structures don't have any unexpected
misalignments or inserted members. This gives us consistent
behaviour and ensures all memory is initialized.

Implemented for Clang/GCC/MSVC.

Bug: angleproject:2522
Change-Id: I6ec453a40d292e4a498319ffa767988a502d225e
Reviewed-on: https://chromium-review.googlesource.com/c/1302533
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
2018-10-30 18:44:34 +00:00
Frank Henigman af9dd60801 Fix UpdateAttribBindingByVertexAttribDivisor test.
Test should clear before drawing.  With the clears added it became
apparent the second draw wasn't working because an attrib was left in
instanced mode after the first draw.

BUG=angleproject:2672

Change-Id: I6c3ee7302d24babb80a9b9affcf357145bb03dcb
Reviewed-on: https://chromium-review.googlesource.com/c/1306822
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
2018-10-30 17:16:52 +00:00
Yuly Novikov 7cba6be85a Revert "Vulkan: Roll VK deps forward"
This reverts commit d00a9a1447.

Reason for revert: Suspect for breaking Debug bots.
Original change's description:
> Vulkan: Roll VK deps forward
> 
> Roll VK Headers/Tools/Loader/ValidationLayers forward.
> There's a build improvement as well as many new checks.
> 
> Added new source file dep, convert_to_renderpass2.cpp, used by core_
> validation for added RenderPass2 checks.
> 
> Bug: angleproject:2937
> Bug: chromium:845519
> Change-Id: Id5c30c5bfc684c365a8ad97c3289bccc02afb3b3
> Reviewed-on: https://chromium-review.googlesource.com/c/1305673
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Commit-Queue: Tobin Ehlis <tobine@google.com>

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

Change-Id: I5c48315dd8c80510e7dea54cb384c08dce5b6bcb
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: angleproject:2937, chromium:845519
Reviewed-on: https://chromium-review.googlesource.com/c/1307695
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
2018-10-30 15:38:13 +00:00