Chromium has a jsoncpp mirror that matches github and has a ninja build
config so use that instead of Android mirror.
Bug: angleproject:2794
Change-Id: I48423818817f439f3a43f5edee557deae24bf028
Reviewed-on: https://chromium-review.googlesource.com/1203940
Reviewed-by: Ian Elliott <ianelliott@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Ian Elliott <ianelliott@google.com>
Inlining more methods into headers.
In total the patch series improves performance by about 60-70% in the
Vulkan draw call overhead test.
Bug: angleproject:2786
Change-Id: I70913ac6b3d5836c17c13e249950987df362f203
Reviewed-on: https://chromium-review.googlesource.com/1194883
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
The functionality of MemoryProgramCache is divided up in two. BlobCache
is now a generic binary cache, which interfaces with the callbacks from
EGL_ANDROID_blob_cache. MemoryProgramCache handles program
[de]serialization and interacts with BlobCache.
Bug: angleproject:2516
Change-Id: Ie4328a2e56a26338e033d84f4e53a1103411937d
Reviewed-on: https://chromium-review.googlesource.com/1194285
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
This can be easily implemented via a release call.
Bug: angleproject:2651
Change-Id: I0adb3ed385284c6342716cd7c347de9966a81bab
Reviewed-on: https://chromium-review.googlesource.com/1200368
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Still a hotspot but much improved.
Bug: angleproject:2786
Change-Id: Ie68ff314e6c952f281b48f6d9af37b5dcd194d6a
Reviewed-on: https://chromium-review.googlesource.com/1194882
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
This test was fixed quite some time ago.
Bug: angleproject:2462
Change-Id: I49714dd08a5e477d72337147f83b80945a8486ee
Reviewed-on: https://chromium-review.googlesource.com/1200370
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
This was probably fixed some time ago. Possibly due to matrix uniform
support.
Bug: angleproject:2642
Change-Id: Ic4b9524d82e6770dcba117f5c155c413074ec172
Reviewed-on: https://chromium-review.googlesource.com/1200365
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
This passes on the bots. It fails on 5x but passes on Pixel 2.
Bug: angleproject:2599
Change-Id: Ib71dcaf6adff104d7f70d1d6fe800e78c6778e66
Reviewed-on: https://chromium-review.googlesource.com/1199725
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
This improves performance significantly in the Vulkan CPU overhead
test.
Bug: angleproject:2786
Change-Id: I911bc66a6b2d11dd3848ffa90927b314aeadfc24
Reviewed-on: https://chromium-review.googlesource.com/1194301
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
We would need to enable the wide lines feature to support non-unit line
widths. For now just disable the caps.
Bug: angleproject:2598
Bug: angleproject:2706
Change-Id: I0dd228fc2c357bdd9442c3d841be769987a53f72
Reviewed-on: https://chromium-review.googlesource.com/1127303
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
If an attribute was never enabled or disabled the default state was not
properly synced in our implementation. This wasn't caught by currently
enabled tests. Those tests are now enabled in VertexAttributeTest.
Bug: angleproject:2800
Change-Id: I97c063651911379e16de4ee557d9840782114c54
Reviewed-on: https://chromium-review.googlesource.com/1199724
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
binary
This bug is introduced when we implement image texture robust
initialization, where we forgot to update active image units mask in program
cache.
Bug: angleproject:2766
Change-Id: I01de02803173f2cf5b7b9ff740175a4d7cbee4ba
Reviewed-on: https://chromium-review.googlesource.com/1198683
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jiajia Qin <jiajia.qin@intel.com>
These dirty bits mostly track state needed for the command buffer. It
should speed up ContextVk::setupDraw by skipping unset dirty bits
instead of using boolean checks.
Improves perf slightly on the Vulkan null draw call test.
Bug: angleproject:2786
Change-Id: I071ce558c522732a17ad101d097ee4d10740abf1
Reviewed-on: https://chromium-review.googlesource.com/1194300
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
This moves a lot of the code in VertexArrayVk into ContextVk. Having
the code in a centralized place makes the code a bit more organized
since the Context is reponsible for binding state to the command
buffers. It also makes it easier to use dirty bits to track the command
buffer state.
Bug: angleproject:2786
Change-Id: I5cefbb14028e8f3fe651f26e997ca88f8f1c7628
Reviewed-on: https://chromium-review.googlesource.com/1188953
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
This enables us to use the same code for streaming client side index
arrays and for translating buffers.
Also includes a few more code cleanups.
Bug: angleproject:2786
Change-Id: Ic615d87cb50fd0acd8ab6b63ed334da4b1c40eff
Reviewed-on: https://chromium-review.googlesource.com/1188952
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
This fixes the scenario when EGLImage source and target have different types.
For example, a texture is created with unsigned format using glTexImage2D,
it is used as a source of EGLImage with eglCreateImageKHR,
and then the EGLImage is used to create a renderbuffer target with
glEGLImageTargetRenderbufferStorageOES.
OES_EGL_image doesn't specify what should happen in this case,
but GL implementations (Nexus 5X) seem to allow using this renderbuffer in
glFramebufferRenderbuffer and the resulting framebuffer is complete.
Thus, in this case, instead of checking whether the renderbuffer format
can be used in glFramebufferRenderbuffer, we need to check whether the
original texture can be used in glFramebufferTexture2D.
Similarly in reverse direction.
Also, for the case of source renderbuffer and target texture,
presume that glEGLImageTargetTexture2DOES will succeed regardless of
renderbuffer format.
1. Add isRenderable and isTexturable checks to egl::Image class,
and perform different checks depending on source type.
2. Add isRenderable check to FramebufferAttachment and delegate EGLImage
attachments check to egl::Image.
3. Use these checks in validation of EGLImageTargetTexture2D,
EGLImageTargetRenderbufferStorage and when checking attachment completeness
Bug: angleproject:2567
Change-Id: I8e9f4a2930a4075a4d8464f62582c6825270187e
Reviewed-on: https://chromium-review.googlesource.com/1192585
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
The patch adds the specification for the ANGLE_texture_multisample
extension, which enables the functionality of multisample texture.
This extension is also the basis to expose multisample texture to
web via a webgl extension.
BUG=angleproject:2275
BUG=angleproject:2775
Change-Id: I21771ac1d7d3e2fad8bf5d5e0a5c5e082c8fe7a2
Reviewed-on: https://chromium-review.googlesource.com/859917
Commit-Queue: Yunchao He <yunchao.he@intel.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Roll Vulkan ANGLE dependencies forward as of 8/31/2018. This grabs some
new validation checks including point-related checks that may be
interesting for bug 2727.
One of these checks, related to PointSize, is firing so I've added some
code in the VK debug callback to suppress those error messages for now
and filed a separate bug (2796) to fix that issue in the renderer.
Had to overhaul the json gen script as validation changed how these are
generated. They now use a base template with some strings replaced to
account for platform and Vulkan header version. Offloaded all of that
work to our existing json generate script which was previously more of
an intelligent copy but now had some further intelligence for
transforming from input template into final json files.
Had to also roll glslang forward to meet shader validation dependency.
Bug: angleproject:2727
Change-Id: I929619cd258cddd6bc9c6743600e072c46736f5c
Reviewed-on: https://chromium-review.googlesource.com/1194617
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Tobin Ehlis <tobine@google.com>
Work around restrictions with setting null vertex buffers on command buffers
by binding ranges of non-null buffers.
Enable VertexAttributeTest on ES2/Vulkan
BUG=angleproject:2792
BUG=angleproject:2797
Change-Id: Ief9db1e60c8c9045a4101abe859302d529decbcb
Reviewed-on: https://chromium-review.googlesource.com/1194282
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
This function was getting called every time because the dirty bit mask
included dirty bits for unused program attributes. Fix this by making
sure we never have dirty bits set for inactive attributes.
Bug: angleproject:2786
Change-Id: Icf72dadd8a853d3a448abb303119b7b71f6c8193
Reviewed-on: https://chromium-review.googlesource.com/1188951
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
We were using a formula that didn't work for some of the clipping
tests.
Bug: angleproject:2601
Change-Id: I60d965c2701656ad590c3b250c2cc777fb432421
Reviewed-on: https://chromium-review.googlesource.com/1194919
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
This test started consistantly failing after changing the shard count on
this test suite.
BUG=angleproject:2799
Change-Id: I75769b08f9d4dda1d436facc34a8292193b4538e
Reviewed-on: https://chromium-review.googlesource.com/1199723
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
We can just expose OES_texture_storage_multisample_2d_array instead.
The compiler was already changed to accept
OES_texture_storage_multisample_2d_array, and now the change is made
also at the API level.
Out-of-bounds access guarantees provided by ANGLE were the only big
difference between the ANGLE spec and the OES spec, so it's simpler
to just expose the native extension. Safe out-of-bounds accesses can
be guaranteed without having them in the extension spec.
This also adds missing texStorage3DMultisample entry point to the proc
table, which will enable running dEQP tests.
BUG=angleproject:2775
TEST=angle_end2end_tests
Change-Id: Idf376ee877a3374a33de177df023f0531ec8f01d
Reviewed-on: https://chromium-review.googlesource.com/1196722
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
This contains tests for framebuffer completeness when layers of
multisample array textures are attached.
Simple clearing of a layer of a multisample color texture array and
blitting the result to a non-multisampled texture is also covered.
BUG=angleproject:2775
TEST=angle_end2end_tests
Change-Id: Idf383cab69587dbd8157ab9a2b7c47e5a90b3cf7
Reviewed-on: https://chromium-review.googlesource.com/1190184
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Adjust source paths so we don't need to use rebase_path() on all of them.
BUG=angleproject:1569
Change-Id: I687dbb9378b1f054eb5664320c662fe4c882a82f
Reviewed-on: https://chromium-review.googlesource.com/1194619
Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Adjust source paths so we don't need to use rebase_path() on all of them.
BUG=angleproject:1569
Change-Id: I1af7678dd8961405446fec49731eba5294bcb586
Reviewed-on: https://chromium-review.googlesource.com/1196046
Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Adding jsoncpp in third_party/jsoncpp dir. This is a C++ library to
parse json files.
Bug: angleproject:2785
Change-Id: I12f467ef87c8d4801815c79f211fc57a3a9f4b49
Reviewed-on: https://chromium-review.googlesource.com/1194840
Reviewed-by: Ian Elliott <ianelliott@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Ian Elliott <ianelliott@google.com>
This removes some duplicate unreachable calls from TextureD3D_External
and TextureD3D_2DMultisample. There will be further use for this once
TextureD3D_2DMultisampleArray is implemented.
This also cleans up some no-ops from TextureD3D_2DMultisample and sets
it correctly as immutable.
BUG=angleproject:2775
TEST=angle_end2end_tests
Change-Id: Ia253a1ed6f418a24bb0c4a4e61654b1c061dba97
Reviewed-on: https://chromium-review.googlesource.com/1193950
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
There's an OES extension for multisample texture arrays,
OES_texture_storage_multisample_2d_array. Change references from
ANGLE_texture_multisample_array to the native extension in the shader
compiler.
ANGLE still needs to have robust behavior for out-of-range texel
fetches that's not found in the original extension, but this does not
need to be spelled out in the extension spec.
BUG=angleproject:2775
TEST=angle_unittests
Change-Id: Ie80ae767cc92ccaf7389af28789f45547f86978f
Reviewed-on: https://chromium-review.googlesource.com/1193266
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Rename and reformat all gyp files. They were previously converted to
gn but not renamed to preserve continuity in git. This rename completes
the removal of all traces of gyp.
BUG=angleproject:1569
Change-Id: I50123105d8881583184ffc564bed65d9fbe4d41c
Reviewed-on: https://chromium-review.googlesource.com/1187885
Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Remove the gyp build. The .gypi files were not renamed so that diff and
rebase would work on this change. They will be renamed in a separate
change.
BUG=angleproject:1569
Change-Id: If8a217027633293664b820104f91a4ca5889b24e
Reviewed-on: https://chromium-review.googlesource.com/1187380
Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
This obviates many static_casts. More closely represents what Vulkan
is doing. One cast remains where we are using uint32_t for dynamic
offsets with uniform buffers.
Bug: angleproject:2786
Change-Id: I043ebb5d965f46ee6ebbfcb91d75a58508cacfe3
Reviewed-on: https://chromium-review.googlesource.com/1188949
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
In future, atomic counter and shader storage block will be added into UniformHLSL since
they all need the UAV register. So this change renames UniformHLSL to ResourcesHLSL.
Bug: angleproject:1951
Change-Id: Ie9eda090763fbb516468c138e65e111eb12fe514
Reviewed-on: https://chromium-review.googlesource.com/1193322
Commit-Queue: Jiajia Qin <jiajia.qin@intel.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
This adds errors for binding and allocating multisample array
textures. New tests in TextureMultisampleTest.cpp check that the
errors are generated as specified.
Tests for querying supported sample counts are also improved and
extended for multisample array textures.
BUG=angleproject:2775
TEST=angle_end2end_tests
Change-Id: I6a0fe7ae04bb3d0072f6cbe09026b05e2bc47325
Reviewed-on: https://chromium-review.googlesource.com/1188576
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
This change fixes a bug that the image texture initialization time is not
correct. It happens when we use compute shader to write data to an
uninitialized texture, then use readPixels to read the result which
results that texture initialization falls behind image store and
covers the real result.
Bug: angleproject:2766
Change-Id: I4e986972096857afc975c40dfa4d559a2f31194c
Reviewed-on: https://chromium-review.googlesource.com/1170569
Commit-Queue: Jiajia Qin <jiajia.qin@intel.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Seems to be failing on Mac Pro FYI Release (AMD). Unclear exactly the
scope of the problem so suppress it on all Mac AMD for now.
Bug: angleproject:2747
Change-Id: I7a5da00b9056839f3ed01fc4c83fa7993019bda7
Reviewed-on: https://chromium-review.googlesource.com/1192550
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
These are now up and running. This will prevent a common source of
compile regression.
Bug: angleproject:2740
Change-Id: I0c66a61338c831e21cab0b30cfa9334da54c4ca5
Reviewed-on: https://chromium-review.googlesource.com/1192543
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>