1*c8dee2aaSAndroid Build Coastguard Worker /* 2*c8dee2aaSAndroid Build Coastguard Worker * Copyright 2021 Google Inc. 3*c8dee2aaSAndroid Build Coastguard Worker * 4*c8dee2aaSAndroid Build Coastguard Worker * Use of this source code is governed by a BSD-style license that can be 5*c8dee2aaSAndroid Build Coastguard Worker * found in the LICENSE file. 6*c8dee2aaSAndroid Build Coastguard Worker */ 7*c8dee2aaSAndroid Build Coastguard Worker 8*c8dee2aaSAndroid Build Coastguard Worker #include "src/gpu/graphite/Buffer.h" 9*c8dee2aaSAndroid Build Coastguard Worker #include "src/gpu/graphite/Caps.h" 10*c8dee2aaSAndroid Build Coastguard Worker #include "src/gpu/graphite/SharedContext.h" 11*c8dee2aaSAndroid Build Coastguard Worker 12*c8dee2aaSAndroid Build Coastguard Worker namespace skgpu::graphite { 13*c8dee2aaSAndroid Build Coastguard Worker map()14*c8dee2aaSAndroid Build Coastguard Workervoid* Buffer::map() { 15*c8dee2aaSAndroid Build Coastguard Worker SkASSERT(this->isUnmappable() || !this->sharedContext()->caps()->bufferMapsAreAsync()); 16*c8dee2aaSAndroid Build Coastguard Worker SkASSERT(this->isProtected() == Protected::kNo); 17*c8dee2aaSAndroid Build Coastguard Worker if (!this->isMapped()) { 18*c8dee2aaSAndroid Build Coastguard Worker this->onMap(); 19*c8dee2aaSAndroid Build Coastguard Worker } 20*c8dee2aaSAndroid Build Coastguard Worker return fMapPtr; 21*c8dee2aaSAndroid Build Coastguard Worker } 22*c8dee2aaSAndroid Build Coastguard Worker asyncMap(GpuFinishedProc proc,GpuFinishedContext ctx)23*c8dee2aaSAndroid Build Coastguard Workervoid Buffer::asyncMap(GpuFinishedProc proc, GpuFinishedContext ctx) { 24*c8dee2aaSAndroid Build Coastguard Worker SkASSERT(this->sharedContext()->caps()->bufferMapsAreAsync()); 25*c8dee2aaSAndroid Build Coastguard Worker SkASSERT(this->isProtected() == Protected::kNo); 26*c8dee2aaSAndroid Build Coastguard Worker this->onAsyncMap(proc, ctx); 27*c8dee2aaSAndroid Build Coastguard Worker } 28*c8dee2aaSAndroid Build Coastguard Worker unmap()29*c8dee2aaSAndroid Build Coastguard Workervoid Buffer::unmap() { 30*c8dee2aaSAndroid Build Coastguard Worker SkASSERT(this->isUnmappable()); 31*c8dee2aaSAndroid Build Coastguard Worker this->onUnmap(); 32*c8dee2aaSAndroid Build Coastguard Worker fMapPtr = nullptr; 33*c8dee2aaSAndroid Build Coastguard Worker } 34*c8dee2aaSAndroid Build Coastguard Worker isUnmappable() const35*c8dee2aaSAndroid Build Coastguard Workerbool Buffer::isUnmappable() const { return isMapped(); } 36*c8dee2aaSAndroid Build Coastguard Worker onAsyncMap(skgpu::graphite::GpuFinishedProc,skgpu::graphite::GpuFinishedContext)37*c8dee2aaSAndroid Build Coastguard Workervoid Buffer::onAsyncMap(skgpu::graphite::GpuFinishedProc, skgpu::graphite::GpuFinishedContext) { 38*c8dee2aaSAndroid Build Coastguard Worker SkASSERT(!this->sharedContext()->caps()->bufferMapsAreAsync()); 39*c8dee2aaSAndroid Build Coastguard Worker SK_ABORT("Async buffer mapping not supported"); 40*c8dee2aaSAndroid Build Coastguard Worker } 41*c8dee2aaSAndroid Build Coastguard Worker 42*c8dee2aaSAndroid Build Coastguard Worker } // namespace skgpu::graphite 43*c8dee2aaSAndroid Build Coastguard Worker 44