1 /* 2 * Copyright 2019 Google Inc. 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 8 #ifndef GrDawnRingBuffer_DEFINED 9 #define GrDawnRingBuffer_DEFINED 10 11 #include "src/gpu/dawn/GrDawnBuffer.h" 12 13 class GrDawnGpu; 14 15 class GrDawnRingBuffer : public SkRefCnt { 16 public: 17 GrDawnRingBuffer(GrDawnGpu* gpu, wgpu::BufferUsage usage); 18 ~GrDawnRingBuffer() override; 19 20 struct Slice { SliceSlice21 Slice(wgpu::Buffer buffer, int offset) 22 : fBuffer(buffer), fOffset(offset) {} SliceSlice23 Slice() 24 : fBuffer(nullptr), fOffset(0) {} SliceSlice25 Slice(const Slice& other) 26 : fBuffer(other.fBuffer), fOffset(other.fOffset) {} 27 Slice& operator=(const Slice& other) { 28 fBuffer = other.fBuffer; 29 fOffset = other.fOffset; 30 return *this; 31 } 32 wgpu::Buffer fBuffer; 33 int fOffset; 34 }; 35 Slice allocate(int size); 36 37 private: 38 GrDawnGpu* fGpu; 39 wgpu::BufferUsage fUsage; 40 wgpu::Buffer fBuffer; 41 int fOffset = 0; 42 }; 43 44 #endif 45