P4 to Git Change 1545895 by gandryey@gera-w8 on 2018/04/24 18:25:56

SWDEV-79445 - OCL generic changes and code clean-up
	- Replace dynamic memory object allocation for the managed buffer with a preallocated object

Affected files ...

... //depot/stg/opencl/drivers/opencl/runtime/device/device.hpp#298 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palconstbuf.cpp#9 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palconstbuf.hpp#8 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palmemory.hpp#5 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palresource.cpp#64 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palresource.hpp#21 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palvirtual.cpp#94 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palvirtual.hpp#50 edit


[ROCm/clr commit: 2f41f41977]
This commit is contained in:
foreman
2018-04-24 18:35:32 -04:00
vanhempi 564d236903
commit dacb39cafa
8 muutettua tiedostoa jossa 61 lisäystä ja 39 poistoa
@@ -135,39 +135,28 @@ uint64_t ConstantBuffer::UploadDataToHw(const void* sysmem, uint32_t size) const
}
// ================================================================================================
XferBuffer::XferBuffer(ManagedBuffer& mbuf, uint32_t size)
: mbuf_(mbuf)
, size_(size)
{}
XferBuffer::XferBuffer(const Device& device, ManagedBuffer& mbuf, uint32_t size)
: buffer_view_(device, size)
, mbuf_(mbuf)
, size_(size) {
// Create a view for access
Resource::ViewParams params = {};
params.gpu_ = &mbuf_.gpu();
params.offset_ = 0;
params.size_ = size_;
params.resource_ = mbuf_.activeMemory();
bool result = buffer_view_.create(Resource::View, &params);
assert(result && "View creaiton should never return an error!");
}
// ================================================================================================
Memory& XferBuffer::Acquire(uint32_t size) const
{
Memory& XferBuffer::Acquire(uint32_t size) {
uint64_t vm_address;
// Reserve space in the managed buffer
address cpu_address = mbuf_.reserve(size, &vm_address);
// Create a view for access
Memory* mem = new Memory(mbuf_.gpu().dev(), static_cast<size_t>(size));
Resource::ViewParams params = {};
params.gpu_ = &mbuf_.gpu();
params.offset_ = vm_address - mbuf_.vmAddress();
params.size_ = size;
params.resource_ = mbuf_.activeMemory();
if (nullptr == mem || !mem->create(Resource::View, &params)) {
delete mem;
// If the suballocaiton failed for some reason, then return the top of the active buffer
return mbuf_.reserveAtTheTop(size);
}
return *mem;
}
// ================================================================================================
void XferBuffer::Release(Memory& mem) const
{
// Delete view
if (mem.desc().type_ == Resource::View) {
delete &mem;
}
// Update a view for access
buffer_view_.updateView(mbuf_.activeMemory(), vm_address - mbuf_.vmAddress(), size);
return buffer_view_;
}
} // namespace pal