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:
@@ -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, ¶ms);
|
||||
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, ¶ms)) {
|
||||
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
|
||||
|
||||
Viittaa uudesa ongelmassa
Block a user