mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-29 00:58:39 +08:00
Fix reported row/slicePitch for mip-maps
- use information from gmm correctly - modify computation on gen8 Change-Id: Iaefcc20ce9436ef70cd2f4bc36654932c4b5af49
This commit is contained in:
committed by
sys_ocldev
parent
08faa004aa
commit
8a488ad52f
@@ -392,7 +392,7 @@ cl_int CommandQueue::enqueueWriteMemObjForUnmap(MemObj *memObj, void *mappedPtr,
|
||||
UNRECOVERABLE_IF(mipIdx >= 4);
|
||||
writeOrigin[mipIdx] = unmapInfo.mipLevel;
|
||||
retVal = enqueueWriteImage(image, CL_FALSE, writeOrigin, &unmapInfo.size[0],
|
||||
image->getHostPtrRowPitch(), image->getHostPtrSlicePitch(), mappedPtr,
|
||||
image->getHostPtrRowPitchForMap(unmapInfo.mipLevel), image->getHostPtrSlicePitchForMap(unmapInfo.mipLevel), mappedPtr,
|
||||
eventsRequest.numEventsInWaitList, eventsRequest.eventWaitList, eventsRequest.outEvent);
|
||||
bool mustCallFinish = true;
|
||||
if (!(image->getFlags() & CL_MEM_USE_HOST_PTR)) {
|
||||
@@ -439,7 +439,7 @@ void *CommandQueue::enqueueReadMemObjForMap(TransferProperties &transferProperti
|
||||
UNRECOVERABLE_IF(mipIdx >= 4);
|
||||
readOrigin[mipIdx] = transferProperties.mipLevel;
|
||||
errcodeRet = enqueueReadImage(image, transferProperties.blocking, readOrigin, &transferProperties.size[0],
|
||||
image->getHostPtrRowPitch(), image->getHostPtrSlicePitch(), returnPtr, eventsRequest.numEventsInWaitList,
|
||||
image->getHostPtrRowPitchForMap(transferProperties.mipLevel), image->getHostPtrSlicePitchForMap(transferProperties.mipLevel), returnPtr, eventsRequest.numEventsInWaitList,
|
||||
eventsRequest.eventWaitList, eventsRequest.outEvent);
|
||||
}
|
||||
|
||||
@@ -495,6 +495,7 @@ void *CommandQueue::enqueueMapImage(Image *image, cl_bool blockingMap,
|
||||
const_cast<size_t *>(origin), const_cast<size_t *>(region), nullptr);
|
||||
EventsRequest eventsRequest(numEventsInWaitList, eventWaitList, event);
|
||||
|
||||
auto returnPtr = enqueueMapMemObject(transferProperties, eventsRequest, errcodeRet);
|
||||
if (image->isMemObjZeroCopy() && image->mappingOnCpuAllowed()) {
|
||||
GetInfoHelper::set(imageSlicePitch, image->getImageDesc().image_slice_pitch);
|
||||
if (image->getImageDesc().image_type == CL_MEM_OBJECT_IMAGE1D_ARRAY) {
|
||||
@@ -507,13 +508,14 @@ void *CommandQueue::enqueueMapImage(Image *image, cl_bool blockingMap,
|
||||
GetInfoHelper::set(imageRowPitch, image->getImageDesc().image_row_pitch);
|
||||
}
|
||||
} else {
|
||||
GetInfoHelper::set(imageSlicePitch, image->getHostPtrSlicePitch());
|
||||
GetInfoHelper::set(imageRowPitch, image->getHostPtrRowPitch());
|
||||
GetInfoHelper::set(imageSlicePitch, image->getHostPtrSlicePitchForMap(transferProperties.mipLevel));
|
||||
GetInfoHelper::set(imageRowPitch, image->getHostPtrRowPitchForMap(transferProperties.mipLevel));
|
||||
}
|
||||
if (Image::hasSlices(image->peekClMemObjType()) == false) {
|
||||
GetInfoHelper::set(imageSlicePitch, static_cast<size_t>(0));
|
||||
}
|
||||
return enqueueMapMemObject(transferProperties, eventsRequest, errcodeRet);
|
||||
|
||||
return returnPtr;
|
||||
}
|
||||
|
||||
cl_int CommandQueue::enqueueUnmapMemObject(MemObj *memObj, void *mappedPtr, cl_uint numEventsInWaitList, const cl_event *eventWaitList, cl_event *event) {
|
||||
|
||||
Reference in New Issue
Block a user