libpromeki 1.0.0-alpha
PROfessional MEdia toolKIt
 
Loading...
Searching...
No Matches
cudabufferimpl.h
Go to the documentation of this file.
1
8#pragma once
9
10#include <promeki/namespace.h>
11#include <promeki/config.h>
12
13#if PROMEKI_ENABLE_CUDA
14
15#include <promeki/bufferimpl.h>
18#include <promeki/error.h>
19
20PROMEKI_NAMESPACE_BEGIN
21
32class CudaHostBufferImpl : public HostMappedBufferImpl {
33 public:
42 CudaHostBufferImpl(const MemSpace &ms, size_t bytes, size_t align);
43
45 ~CudaHostBufferImpl() override;
46
48 CudaHostBufferImpl *_promeki_clone() const override;
49};
50
63class CudaDeviceBufferImpl : public BufferImpl {
64 public:
73 CudaDeviceBufferImpl(const MemSpace &ms, size_t bytes, size_t align);
74
76 ~CudaDeviceBufferImpl() override;
77
78 MemSpace memSpace() const override { return _memSpace; }
79 size_t allocSize() const override { return _allocSize; }
80 size_t align() const override { return _align; }
81
83 void *mappedHostData() const override { return nullptr; }
84
95 void *devicePtr() const { return _devicePtr; }
96
97 BufferRequest mapAcquire(MemDomain domain, MapFlags flags) override;
98 BufferRequest mapRelease(MemDomain domain) override;
99
101 Error fill(char value, size_t offset, size_t bytes) override;
102
104 Error copyFromHost(const void *src, size_t bytes, size_t offset) override;
105
107 CudaDeviceBufferImpl *_promeki_clone() const override;
108
109 private:
110 void *_devicePtr = nullptr;
111 size_t _allocSize = 0;
112 size_t _align = 0;
113 MemSpace _memSpace;
114};
115
116PROMEKI_NAMESPACE_END
117
118#endif // PROMEKI_ENABLE_CUDA