| /* | |
| * Copyright 2021 Google Inc. | |
| * | |
| * Use of this source code is governed by a BSD-style license that can be | |
| * found in the LICENSE file. | |
| */ | |
| #include "src/gpu/graphite/Buffer.h" | |
| #include "include/gpu/GpuTypes.h" | |
| #include "include/private/base/SkAssert.h" | |
| #include "src/gpu/graphite/Caps.h" | |
| #include "src/gpu/graphite/SharedContext.h" | |
| namespace skgpu::graphite { | |
| void* Buffer::map() { | |
| SkASSERT(this->isUnmappable() || !this->sharedContext()->caps()->bufferMapsAreAsync()); | |
| SkASSERT(this->isProtected() == Protected::kNo); | |
| if (!this->isMapped()) { | |
| this->onMap(); | |
| } | |
| return fMapPtr; | |
| } | |
| void Buffer::asyncMap(GpuFinishedProc proc, GpuFinishedContext ctx) { | |
| SkASSERT(this->sharedContext()->caps()->bufferMapsAreAsync()); | |
| SkASSERT(this->isProtected() == Protected::kNo); | |
| this->onAsyncMap(proc, ctx); | |
| } | |
| void Buffer::unmap() { | |
| SkASSERT(this->isUnmappable()); | |
| this->onUnmap(); | |
| fMapPtr = nullptr; | |
| } | |
| bool Buffer::isUnmappable() const { return isMapped(); } | |
| void Buffer::onAsyncMap(skgpu::graphite::GpuFinishedProc, skgpu::graphite::GpuFinishedContext) { | |
| SkASSERT(!this->sharedContext()->caps()->bufferMapsAreAsync()); | |
| SK_ABORT("Async buffer mapping not supported"); | |
| } | |
| } // namespace skgpu::graphite | |