MCPcopy Create free account
hub / github.com/RenderKit/oidn / ImageBuffer

Method ImageBuffer

apps/utils/image_buffer.cpp:19–39  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

17 format(Format::Undefined) {}
18
19 ImageBuffer::ImageBuffer(const DeviceRef& device, size_t width, size_t height, size_t numChannels,
20 DataType dataType, Storage storage, bool forceHostCopy)
21 : device(device),
22 numValues(size_t(width) * height * numChannels),
23 width(width),
24 height(height),
25 numChannels(numChannels),
26 dataType(dataType),
27 format(makeFormat(dataType, numChannels))
28 {
29
30 if (width > maxDim || height > maxDim || width * height * getC() > std::numeric_limits<int>::max())
31 throw std::runtime_error("image size is too large");
32
33 const size_t valueByteSize = getDataTypeSize(dataType);
34 byteSize = std::max(numValues * valueByteSize, size_t(1)); // avoid zero-sized buffer
35 buffer = device.newBuffer(byteSize, storage);
36 storage = buffer.getStorage(); // get actual storage mode
37 devPtr = (storage != Storage::Device) ? static_cast<char*>(buffer.getData()) : nullptr;
38 hostPtr = (storage != Storage::Device && !forceHostCopy) ? devPtr : static_cast<char*>(malloc(byteSize));
39 }
40
41 ImageBuffer::~ImageBuffer()
42 {

Callers

nothing calls this directly

Calls 7

makeFormatFunction · 0.85
getCFunction · 0.85
getDataTypeSizeFunction · 0.85
maxFunction · 0.50
newBufferMethod · 0.45
getStorageMethod · 0.45
getDataMethod · 0.45

Tested by

no test coverage detected