mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-11 16:45:25 +08:00
fix: properly pass info about 3D image
Related-To: NEO-14538 It's valid for 3D image to copy 2D region. Current checks for mip map do not consider that. This change correctly checks for mip mapped 3D image. Signed-off-by: Szymon Morek <szymon.morek@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
7e7e0a000f
commit
95e0244f70
@@ -185,15 +185,16 @@ StagingTransferStatus StagingBufferManager::performImageSlicesTransfer(StagingQu
|
||||
* Several slices and rows can be packed into single chunk if size of such chunk does not exceeds maximum chunk size (2MB).
|
||||
* Caller provides actual function to enqueue read/write operation for single chunk.
|
||||
*/
|
||||
StagingTransferStatus StagingBufferManager::performImageTransfer(const void *ptr, const size_t *globalOrigin, const size_t *globalRegion, size_t rowPitch, size_t slicePitch, size_t bytesPerPixel, bool isMipMapped, ChunkTransferImageFunc &chunkTransferImageFunc, CommandStreamReceiver *csr, bool isRead) {
|
||||
StagingTransferStatus StagingBufferManager::performImageTransfer(const void *ptr, const size_t *globalOrigin, const size_t *globalRegion, size_t rowPitch, size_t slicePitch, size_t bytesPerPixel, bool isMipMapped3DImage, ChunkTransferImageFunc &chunkTransferImageFunc, CommandStreamReceiver *csr, bool isRead) {
|
||||
StagingQueue stagingQueue;
|
||||
size_t origin[4] = {};
|
||||
size_t region[3] = {};
|
||||
origin[0] = globalOrigin[0];
|
||||
region[0] = globalRegion[0];
|
||||
if (isMipMapped && globalRegion[2] > 1) {
|
||||
if (isMipMapped3DImage) {
|
||||
origin[3] = globalOrigin[3];
|
||||
}
|
||||
|
||||
StagingTransferStatus result{};
|
||||
size_t submittedChunks = 0;
|
||||
|
||||
|
||||
@@ -93,7 +93,7 @@ class StagingBufferManager : NEO::NonCopyableAndNonMovableClass {
|
||||
bool isValidForStagingTransfer(const Device &device, const void *ptr, size_t size, bool hasDependencies);
|
||||
|
||||
StagingTransferStatus performCopy(void *dstPtr, const void *srcPtr, size_t size, ChunkCopyFunction &chunkCopyFunc, CommandStreamReceiver *csr);
|
||||
StagingTransferStatus performImageTransfer(const void *ptr, const size_t *globalOrigin, const size_t *globalRegion, size_t rowPitch, size_t slicePitch, size_t bytesPerPixel, bool isMipMapped, ChunkTransferImageFunc &chunkTransferImageFunc, CommandStreamReceiver *csr, bool isRead);
|
||||
StagingTransferStatus performImageTransfer(const void *ptr, const size_t *globalOrigin, const size_t *globalRegion, size_t rowPitch, size_t slicePitch, size_t bytesPerPixel, bool isMipMapped3DImage, ChunkTransferImageFunc &chunkTransferImageFunc, CommandStreamReceiver *csr, bool isRead);
|
||||
StagingTransferStatus performBufferTransfer(const void *ptr, size_t globalOffset, size_t globalSize, ChunkTransferBufferFunc &chunkTransferBufferFunc, CommandStreamReceiver *csr, bool isRead);
|
||||
|
||||
std::pair<HeapAllocator *, uint64_t> requestStagingBuffer(size_t &size);
|
||||
|
||||
Reference in New Issue
Block a user