Memory manager: buffer uploads (D3D) - Part 1

Manages a single persistently mapped GPU heap which is sub-allocated
inside of ring-buffer for uploads. To handle larger buffers without additional
unused heaps, ring buffers are created on-demand.

BUG=dawn:28
TEST=dawn_unittests

Change-Id: Ifc5a1b06baf8633f1e133245ac1ee76275431cc5
Reviewed-on: https://dawn-review.googlesource.com/c/3160
Commit-Queue: Bryan Bernhart <bryan.bernhart@intel.com>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
This commit is contained in:
Bryan Bernhart
2019-01-29 00:10:07 +00:00
committed by Commit Bot service account
parent 79ff8bead9
commit 74e95fff4a
38 changed files with 950 additions and 124 deletions

View File

@@ -95,6 +95,7 @@ TEST(SerialQueue, IterateUpTo) {
expectedValues.erase(expectedValues.begin());
}
ASSERT_TRUE(expectedValues.empty());
EXPECT_EQ(queue.LastSerial(), 2u);
}
// Test ClearUpTo
@@ -110,6 +111,7 @@ TEST(SerialQueue, ClearUpTo) {
queue.Enqueue(vector3, 1);
queue.ClearUpTo(0);
EXPECT_EQ(queue.LastSerial(), 1u);
std::vector<int> expectedValues = {9, 0};
for (int value : queue.IterateAll()) {
@@ -141,3 +143,14 @@ TEST(SerialQueue, FirstSerial) {
queue.Enqueue(vector1, 6);
EXPECT_EQ(queue.FirstSerial(), 6u);
}
// Test LastSerial
TEST(SerialQueue, LastSerial) {
TestSerialQueue queue;
queue.Enqueue({1}, 0);
EXPECT_EQ(queue.LastSerial(), 0u);
queue.Enqueue({2}, 1);
EXPECT_EQ(queue.LastSerial(), 1u);
}