GrVkTransferBuffer.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. /*
  2. * Copyright 2015 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. #ifndef GrVkTransferBuffer_DEFINED
  8. #define GrVkTransferBuffer_DEFINED
  9. #include "include/gpu/vk/GrVkTypes.h"
  10. #include "src/gpu/GrGpuBuffer.h"
  11. #include "src/gpu/vk/GrVkBuffer.h"
  12. class GrVkGpu;
  13. class GrVkTransferBuffer : public GrGpuBuffer, public GrVkBuffer {
  14. public:
  15. static sk_sp<GrVkTransferBuffer> Make(GrVkGpu* gpu, size_t size, GrVkBuffer::Type type);
  16. protected:
  17. void onAbandon() override;
  18. void onRelease() override;
  19. private:
  20. GrVkTransferBuffer(GrVkGpu* gpu, const GrVkBuffer::Desc& desc,
  21. const GrVkBuffer::Resource* resource);
  22. void setMemoryBacking(SkTraceMemoryDump* traceMemoryDump,
  23. const SkString& dumpName) const override;
  24. void onMap() override { this->GrGpuBuffer::fMapPtr = this->vkMap(this->getVkGpu()); }
  25. void onUnmap() override { this->vkUnmap(this->getVkGpu()); }
  26. bool onUpdateData(const void* src, size_t srcSizeInBytes) override {
  27. SK_ABORT("Not implemented for transfer buffers.");
  28. return false;
  29. }
  30. GrVkGpu* getVkGpu() const {
  31. SkASSERT(!this->wasDestroyed());
  32. return reinterpret_cast<GrVkGpu*>(this->getGpu());
  33. }
  34. typedef GrGpuBuffer INHERITED;
  35. };
  36. #endif