Skip to content

Commit e393c61

Browse files
SenorBlancoSkia Commit-Bot
authored andcommitted
Dawn: update for API changes (Buffer).
CreateBufferMapped() is now CreateBuffer() with a mappedAtCreation flag. MapReadAsync() and MapWriteAsync() are now MapAsync(). Change-Id: I98e8513ed9acf73515b7960d437c1fde5e80c03a Reviewed-on: https://skia-review.googlesource.com/c/skia/+/306536 Commit-Queue: Stephen White <senorblanco@google.com> Reviewed-by: Jim Van Verth <jvanverth@google.com>
1 parent 5ba6534 commit e393c61

File tree

2 files changed

+17
-24
lines changed

2 files changed

+17
-24
lines changed

src/gpu/dawn/GrDawnBuffer.cpp

Lines changed: 11 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,9 @@ GrDawnBuffer::GrDawnBuffer(GrDawnGpu* gpu, size_t sizeInBytes, GrGpuBufferType t
4444
if (fMappable == Mappable::kNot || fMappable == Mappable::kReadOnly) {
4545
fBuffer = this->getDawnGpu()->device().CreateBuffer(&bufferDesc);
4646
} else {
47-
wgpu::CreateBufferMappedResult result =
48-
this->getDawnGpu()->device().CreateBufferMapped(&bufferDesc);
49-
fBuffer = result.buffer;
50-
fMapPtr = result.data;
47+
bufferDesc.mappedAtCreation = true;
48+
fBuffer = this->getDawnGpu()->device().CreateBuffer(&bufferDesc);
49+
fMapPtr = fBuffer.GetMappedRange();
5150
}
5251

5352
this->registerWithCache(SkBudgeted::kYes);
@@ -104,27 +103,21 @@ GrDawnGpu* GrDawnBuffer::getDawnGpu() const {
104103
return static_cast<GrDawnGpu*>(this->getGpu());
105104
}
106105

107-
static void callback_read(WGPUBufferMapAsyncStatus status,
108-
const void* data,
109-
uint64_t dataLength,
110-
void* userData) {
111-
GrDawnBuffer* buffer = static_cast<GrDawnBuffer*>(userData);
112-
buffer->setMapPtr(const_cast<void*>(data));
106+
static void callback_read(WGPUBufferMapAsyncStatus status, void* userData) {
107+
auto buffer = static_cast<GrDawnBuffer*>(userData);
108+
buffer->setMapPtr(const_cast<void*>(buffer->get().GetConstMappedRange()));
113109
}
114110

115-
static void callback_write(WGPUBufferMapAsyncStatus status,
116-
void* data,
117-
uint64_t dataLength,
118-
void* userData) {
119-
GrDawnBuffer* buffer = static_cast<GrDawnBuffer*>(userData);
120-
buffer->setMapPtr(data);
111+
static void callback_write(WGPUBufferMapAsyncStatus status, void* userData) {
112+
auto buffer = static_cast<GrDawnBuffer*>(userData);
113+
buffer->setMapPtr(buffer->get().GetMappedRange());
121114
}
122115

123116
void GrDawnBuffer::mapWriteAsync() {
124117
SkASSERT(!this->isMapped());
125-
fBuffer.MapWriteAsync(callback_write, this);
118+
fBuffer.MapAsync(wgpu::MapMode::Write, 0, 0, callback_write, this);
126119
}
127120
void GrDawnBuffer::mapReadAsync() {
128121
SkASSERT(!this->isMapped());
129-
fBuffer.MapReadAsync(callback_read, this);
122+
fBuffer.MapAsync(wgpu::MapMode::Read, 0, 0, callback_read, this);
130123
}

src/gpu/dawn/GrDawnGpu.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -561,9 +561,8 @@ bool GrDawnGpu::onCopySurface(GrSurface* dst,
561561
return true;
562562
}
563563

564-
static void callback(WGPUBufferMapAsyncStatus status, const void* data, uint64_t dataLength,
565-
void* userdata) {
566-
(*reinterpret_cast<const void**>(userdata)) = data;
564+
static void callback(WGPUBufferMapAsyncStatus status, void* userdata) {
565+
*static_cast<bool*>(userdata) = true;
567566
}
568567

569568
bool GrDawnGpu::onReadPixels(GrSurface* surface, int left, int top, int width, int height,
@@ -600,11 +599,12 @@ bool GrDawnGpu::onReadPixels(GrSurface* surface, int left, int top, int width, i
600599
this->getCopyEncoder().CopyTextureToBuffer(&srcTexture, &dstBuffer, &copySize);
601600
this->submitToGpu(true);
602601

603-
const void *readPixelsPtr = nullptr;
604-
buf.MapReadAsync(callback, &readPixelsPtr);
605-
while (!readPixelsPtr) {
602+
bool mapped = false;
603+
buf.MapAsync(wgpu::MapMode::Read, 0, 0, callback, &mapped);
604+
while (!mapped) {
606605
device().Tick();
607606
}
607+
const void* readPixelsPtr = buf.GetConstMappedRange();
608608

609609
if (rowBytes == origRowBytes) {
610610
memcpy(buffer, readPixelsPtr, origSizeInBytes);

0 commit comments

Comments
 (0)