Adds a new bitset helper and changes a check to an ASSERT.
Refactoring change only.
Bug: angleproject:4959
Change-Id: I0de9f1b707c87cfb6fed8a110654783059e55c99
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2345025
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
We don't need to explicitly check if a barrier is required for write
barriers. Write barriers always require a barrier and read barriers
need the layout change check. We introduce a new enum encoding ReadOnly
vs Write layout types and call specialized write/read functions
instead. Also renames the helper APIs to be more consistent.
Refactoring change only.
Bug: angleproject:4959
Change-Id: I0ce39ceaca6be588327c381194a580dc6b11f036
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2344744
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
This adds a test that will use an empty RGB texture. It should not break
renderpass.
Bug: b/162603208
Change-Id: I90f5aa2fafdbd70c654c9ad0675d6def32b58313
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2338828
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Previously we were only regenerating the commit ID when the .git/HEAD
file changed. When working on a branch the HEAD file doesn't change.
It points to a ref like refs/heads/master that changes. So we can read
back the contents of .git/HEAD using GN's read_file command and then
mark the commit id as dirty when the ref changes.
Should alleviate some of the shader cache problems.
Bug: angleproject:4448
Change-Id: I1c39b12af3455e3620d80bec92a15f9921d9163b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2358519
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Ian Elliott <ianelliott@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
The string for VertexAttribType::Int2101010 was wrong, similar to
the fix in ffb31229.
Test: Capture and replay first 1200 frames of COD.
Bug: b/164426913
Bug: angleproject:4048
Change-Id: I86a9ad844cde211d8273840ef7e8ecb055521316
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2357170
Reviewed-by: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
We don't support populating a texture from an EGLImage, but
this feature is in use by games. Instead, populate the texture
with null data. In the future, improve this by reading back the
data.
Test: Capture and play back first 1200 frames of COD.
Bug: b/164426913
Bug: angleproject:4048
Change-Id: Ic8c6bdf3c359c89e647c28b8c57b7218bdf05b15
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2355705
Reviewed-by: Manh Nguyen <nguyenmh@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
Temporarily disables the feature that translate uniform block to
StructuredBuffer on D3D backend for a bug.
Adapted from a patch by xinghua.cao@intel.com
Bug: chromium:1112112
Change-Id: I3419a0eb8ae619e1fa532ffb29f56a9099f04618
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2357752
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
ContextVk::onBufferRead can check for "usesBufferForWrite".
Bug: angleproject:4911
Change-Id: Id295c068fd9a4027c3127830c682d62d614718dc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2355102
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Tim Van Patten <timvp@google.com>
For use_x11 && use_ozone build, use X11 backend by default.
For ozone only, continue using Ozone impl, which is basically
gbm.
Bug: chromium:1085700
Change-Id: Iac104e983135e566b0d42a58e00d3c83b430d6dc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2346276
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Never actually check out Chromium.
Required by autoroller to support updating chromium_revision var.
Bug: skia:10572
Change-Id: I8c88a42286f010d2702f9ff646c7bb344153d2fe
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2353730
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
getOutsideRenderPassCommandBuffer returns the command buffer directly
since it's now stateless and cannot throw an error. All the RenderPass
begin/end and flushing are done by the dependency functions (buffer/
image read/write).
Bug: angleproject:4911
Change-Id: I5e7806be9d0e1b5e358524bd485298d660fac942
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2339544
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Adding a simple ImageSerial tracking map in our RenderPass allows us
to know when we do or do not need to close the RenderPass on a new
Image access. This simple tracking scheme improves Manhattan
performance by up to 25% on Android. The improved perf comes from
reducing our RenderPass count (23->18 RenderPasses in our capture
scene).
Adds a FastUnorderedSet class to manage the used RP Image serials.
Updates the Query helpers to explicitly flush the RP before inserting
queries.
Bug: angleproject:4911
Change-Id: I0c34fc8e307514ebdf3e81e08d8e5aedb70ebe8f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2334346
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
While populating VkApplicationInfo::pApplicationName
we are hardcoding the value to "ANGLE", instead query
the value from the sytem.
Bug: angleproject:4955
Change-Id: I222d5d1c0f497bf708389caa048d8b180c1bdecc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2352625
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Ian Elliott <ianelliott@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
FramebufferVk::resolveColorWithCommand() is currently using the wrong
mip level value by using the GL index value, rather than calculating the
VK value from (index value - the base level).
Bug: angleproject:4753
Test: FramebufferTest_ES31::MultisampleResolveIntoMipMapWithBlit()
Change-Id: I8ddaeb21c4957b46880f5ef5f6a78242c04b4dcd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2349951
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Tim Van Patten <timvp@google.com>
Skips failing tests so that they do not affect the results of passing
tests.
Bug: angleproject:4817
Change-Id: I80678cb62b0b81d6a1aa811908019022efbe1268
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2351394
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Manh Nguyen <nguyenmh@google.com>
We are not maintaining D3D9 for performance and reducing the number
of perf tests will speed up the bots.
Bug: angleproject:4943
Change-Id: Ib4ddad2cbfefcf6fccf3307df3bac7565ef246f4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2352478
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
This CL adds a new way to set the start frame of a capture.
It adds a new environment variable called ANGLE_CAPTURE_TRIGGER
that, when set, will be used instead of frame start and end.
By setting ANGLE_CAPTURE_TRIGGER to a non-zero value, ANGLE will
capture that many frames when the value changes. For example,
on Android, we can set it with:
adb shell setprop debug.angle.capture.trigger 20
When we reach the target content, set the value back to zero:
adb shell setprop debug.angle.capture.trigger 0
and ANGLE will start capturing 20 frames.
Currently only hooked up for Android, but should be possible to
support on other platforms.
Test: Capture application frames using trigger
Bug: angleproject:4949
Change-Id: I469ef5c48feb78c85b8cda2fefd5df59e495bbe2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2347858
Commit-Queue: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Manh Nguyen <nguyenmh@google.com>
This will force errors when ANGLE runs into Vulkan Validation Layer
failures and other internal bugs. Currently we could sometimes fail
silently. Especially on Android where the error would only show up in
logcat.
Bug: angleproject:4909
Change-Id: Ie2888805c577d9fbad417d45a33e3269966b7b25
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2330091
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
For an app that only draws to the swapchain, if the swapchain is
recreated with a different rotation (as done by the ANGLE perf tests
when switching from Angry Birds 2 to Candy Crush), ContextVk is not
informed, and so the new rotation is ignored. Use the
subject-observer pattern to set the appropriate dirty bits.
Test: run_angle_perftests --gtest_filter=TracePerfTest.Run/vulkan_angry*:*vulkan_candy* --verbose --local-output
Bug: angleproject:4910
Bug: b/163126746
Change-Id: Ib5303e9c4095db1b3e736911f483589e40a73d0c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2341768
Commit-Queue: Ian Elliott <ianelliott@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Introduces a FastUnorderedMap class that uses FastVector. This type
uses static storage for up to a small fixed number of elements and
uses dynamic storage for anything larger.
Local testing shows this almost fully solves the regression from
using unordered_map. It's still slightly slower than using no
tracking (<5%).
Very degenerate cases which track dozens or more buffers will still
have significant overhead. For almost all applications that use only
a few buffers per RenderPass this will be very fast.
Test: angle_perftests, *vulkan_null_index_buffer_changed_ushort
Bug: angleproject:4950
Bug: angleproject:4429
Change-Id: I39edeaaa159124167f1ea23ad2e6eac5e9220d0b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2348108
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Generate default shaders' OS specific versions to separate files to
avoid mtl_default_shaders_autogen.inc becoming too big.
Bug: angleproject:2634
Change-Id: Ie2a39971ec46c36ce13bf5cb72f998f2cbc0ab64
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2332145
Commit-Queue: Le Hoang Quyen <le.hoang.q@gmail.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>