|
c072daec
|
2021-05-26T14:26:28
|
|
Add FastVector constructor with begin/end iterators
Useful to construct a FastVector out of a subrange of another container.
Bug: angleproject:4889
Change-Id: I0e62b601c7d171167343d526d198fa21ba52f0f9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2920191
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
d19c08c9
|
2020-08-25T08:07:31
|
|
Fix ASAN issue with FastIntegerMap.BasicUsage
ASAN bot caught bug in FastIntegerMap.BasicUsage test.
The end() iterator points past the end of the list, accessing
end()->first is invalid. rbegin() points at the last element of the
list which is what this test intended.
Bug: b/166255370
Change-Id: I06e098143d3de9658088cda6f10761d41b17a520
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2375305
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
f9a062c9
|
2020-08-16T14:09:41
|
|
Vulkan: Add FastIntegerSet and FastIntegerMap class
Add FastIntegerSet container to enable fast contains operation
for a set of integer keys. The class uses a BitSet vector to
achieve performance.
Add FastIntegerMap container to improve buffer serial
tracking performance. FastIntegerMap uses FastIntegerSet container
to track buffer serial keys. It also provides an ensureCapacity
method to reserve space, for the expected buffer count, upfront.
CommandBufferHelper::mUsedBuffers and ContextVk::descriptorSetCache
are now FastIntegerMap
CommandBufferHelper::mRenderPassUsedImages is now a FastIntegerSet
Based on a CL by Jamie
Bug: angleproject:4950
Test: angle_unittests.exe --gtest_filter=FastInteger*
Change-Id: Ib58be20143f588baab99acadac796f2435f72d54
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2369466
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
|
|
5b4f6e31
|
2020-08-15T23:03:34
|
|
Vulkan: Add overlay widget for RP buffer count.
Can help evaluate when scenes stress out the resource tracking in the
RenderPass command buffer.
Bug: angleproject:4950
Bug: angleproject:4965
Change-Id: I7da2ad0101a840c5441f2112db4bb61f564afcef
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2358521
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
d201ed8b
|
2020-08-02T16:29:35
|
|
Vulkan: Track used Images in RenderPass.
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>
|
|
5e5b7537
|
2020-08-10T21:02:50
|
|
Vulkan: Optimize resource tracking in CommandBufferHelper.
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>
|
|
20c01390
|
2018-09-19T15:43:28
|
|
Fix FastVector::resize when count < size.
Also update a test to trigger the bug.
Bug: angleproject:2763
Change-Id: I8e6735320a34dcc4cc8beee1b7a22b768912f24f
Reviewed-on: https://chromium-review.googlesource.com/1234338
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
bf7cfbea
|
2018-09-19T03:56:20
|
|
Re-land "Add FastVector for simple dynamic vector cases."
Re-land fixes memory leak and adds inline to a few more methods.
This optimized vector keeps an initial fixed size storage but has
unbounded growth like a normal std::vector. It operates like a
FixedVector initially but then switches the storage to an allocated
pool when the element count exceeds the array limit.
This gives fast performance in the small case since no dynamic
allocation is needed. It also handles the "slow" big case.
Bug: angleproject:2763
Change-Id: Ib3cc7b652a14ed346528bf15820023ab0b5317ce
Reviewed-on: https://chromium-review.googlesource.com/1233453
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
dc8fb937
|
2018-09-19T01:35:59
|
|
Revert "Add FastVector for simple dynamic vector cases."
This reverts commit 4d45e7dc7553b071b0c2a054bdb59bfd844012fe.
Reason for revert: Memory leak detected during roll in https://ci.chromium.org/p/chromium/builders/luci.chromium.try/linux_chromium_asan_rel_ng/101750
Original change's description:
> Add FastVector for simple dynamic vector cases.
>
> This optimized vector keeps an initial fixed size storage but has
> unbounded growth like a normal std::vector. It operates like a
> FixedVector initially but then switches the storage to an allocated
> pool when the element count exceeds the array limit.
>
> This gives fast performance in the small case since no dynamic
> allocation is needed. It also handles the "slow" big case.
>
> Bug: angleproject:2763
> Change-Id: I9c002b205bd4ac9fc171d1fdc42bc8ea5fe8dabe
> Reviewed-on: https://chromium-review.googlesource.com/1227794
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Commit-Queue: Jamie Madill <jmadill@chromium.org>
TBR=ynovikov@chromium.org,jmadill@chromium.org,syoussefi@chromium.org
Change-Id: Iaec76244cc736a8469b80bfc8534fb0fd6c49e11
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: angleproject:2763
Reviewed-on: https://chromium-review.googlesource.com/1232978
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
4d45e7dc
|
2018-09-18T11:32:41
|
|
Add FastVector for simple dynamic vector cases.
This optimized vector keeps an initial fixed size storage but has
unbounded growth like a normal std::vector. It operates like a
FixedVector initially but then switches the storage to an allocated
pool when the element count exceeds the array limit.
This gives fast performance in the small case since no dynamic
allocation is needed. It also handles the "slow" big case.
Bug: angleproject:2763
Change-Id: I9c002b205bd4ac9fc171d1fdc42bc8ea5fe8dabe
Reviewed-on: https://chromium-review.googlesource.com/1227794
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|