99#include " shared/source/helpers/blit_commands_helper.h"
1010
1111#include " opencl/source/built_ins/builtins_dispatch_builder.h"
12- #include " opencl/source/mem_obj/image.h"
1312
1413#include " CL/cl.h"
1514
@@ -48,7 +47,6 @@ struct ClBlitProperties {
4847 builtinOpParams.dstRowPitch , builtinOpParams.dstSlicePitch );
4948 }
5049
51- BlitProperties blitProperties{};
5250 GraphicsAllocation *gpuAllocation = nullptr ;
5351 Vec3<size_t > copyOffset = 0 ;
5452
@@ -66,9 +64,8 @@ struct ClBlitProperties {
6664 size_t gpuRowPitch = 0 ;
6765 size_t gpuSlicePitch = 0 ;
6866
69- if (BlitterConstants::BlitDirection::HostPtrToBuffer == blitDirection ||
70- BlitterConstants::BlitDirection::HostPtrToImage == blitDirection) {
71- // write buffer/image
67+ if (BlitterConstants::BlitDirection::HostPtrToBuffer == blitDirection) {
68+ // write buffer
7269 hostPtr = builtinOpParams.srcPtr ;
7370 hostPtrOffset = builtinOpParams.srcOffset ;
7471 copyOffset = builtinOpParams.dstOffset ;
@@ -91,10 +88,10 @@ struct ClBlitProperties {
9188 copySize = builtinOpParams.size ;
9289 }
9390
94- if (BlitterConstants::BlitDirection::BufferToHostPtr == blitDirection ||
95- BlitterConstants::BlitDirection::ImageToHostPtr == blitDirection) {
96- // read buffer/image
91+ if (BlitterConstants::BlitDirection::BufferToHostPtr == blitDirection) {
92+ // read buffer
9793 hostPtr = builtinOpParams.dstPtr ;
94+
9895 hostPtrOffset = builtinOpParams.dstOffset ;
9996 copyOffset = builtinOpParams.srcOffset ;
10097
@@ -117,78 +114,26 @@ struct ClBlitProperties {
117114 }
118115
119116 UNRECOVERABLE_IF (BlitterConstants::BlitDirection::HostPtrToBuffer != blitDirection &&
120- BlitterConstants::BlitDirection::BufferToHostPtr != blitDirection &&
121- BlitterConstants::BlitDirection::HostPtrToImage != blitDirection &&
122- BlitterConstants::BlitDirection::ImageToHostPtr != blitDirection);
123-
124- blitProperties = BlitProperties::constructPropertiesForReadWriteBuffer (blitDirection, commandStreamReceiver, gpuAllocation,
125- hostAllocation, hostPtr, memObjGpuVa, hostAllocGpuVa,
126- hostPtrOffset, copyOffset, copySize,
127- hostRowPitch, hostSlicePitch,
128- gpuRowPitch, gpuSlicePitch);
129-
130- if (BlitterConstants::BlitDirection::HostPtrToImage == blitDirection ||
131- BlitterConstants::BlitDirection::ImageToHostPtr == blitDirection) {
132- adjustBlitPropertiesForImage (blitProperties, builtinOpParams);
133- }
117+ BlitterConstants::BlitDirection::BufferToHostPtr != blitDirection);
134118
135- return blitProperties;
119+ return BlitProperties::constructPropertiesForReadWriteBuffer (blitDirection, commandStreamReceiver, gpuAllocation,
120+ hostAllocation, hostPtr, memObjGpuVa, hostAllocGpuVa,
121+ hostPtrOffset, copyOffset, copySize,
122+ hostRowPitch, hostSlicePitch,
123+ gpuRowPitch, gpuSlicePitch);
136124 }
137125
138126 static BlitterConstants::BlitDirection obtainBlitDirection (uint32_t commandType) {
139-
140- switch (commandType) {
141- case CL_COMMAND_WRITE_BUFFER:
142- case CL_COMMAND_WRITE_BUFFER_RECT:
127+ if (CL_COMMAND_WRITE_BUFFER == commandType || CL_COMMAND_WRITE_BUFFER_RECT == commandType) {
143128 return BlitterConstants::BlitDirection::HostPtrToBuffer;
144- case CL_COMMAND_READ_BUFFER:
145- case CL_COMMAND_READ_BUFFER_RECT:
129+ } else if (CL_COMMAND_READ_BUFFER == commandType || CL_COMMAND_READ_BUFFER_RECT == commandType) {
146130 return BlitterConstants::BlitDirection::BufferToHostPtr;
147- case CL_COMMAND_COPY_BUFFER:
148- case CL_COMMAND_COPY_BUFFER_RECT:
149- case CL_COMMAND_SVM_MEMCPY:
131+ } else if (CL_COMMAND_COPY_BUFFER_RECT == commandType || CL_COMMAND_SVM_MEMCPY == commandType) {
150132 return BlitterConstants::BlitDirection::BufferToBuffer;
151- case CL_COMMAND_WRITE_IMAGE:
152- return BlitterConstants::BlitDirection::HostPtrToImage;
153- case CL_COMMAND_READ_IMAGE:
154- return BlitterConstants::BlitDirection::ImageToHostPtr;
155- default :
156- UNRECOVERABLE_IF (true );
157- }
158- }
159-
160- static void adjustBlitPropertiesForImage (BlitProperties &blitProperties, const BuiltinOpParams &builtinOpParams) {
161-
162- Image *srcImage = nullptr ;
163- Image *dstImage = nullptr ;
164-
165- blitProperties.srcSize = {static_cast <uint32_t >(builtinOpParams.size .x ),
166- static_cast <uint32_t >(builtinOpParams.size .y ),
167- static_cast <uint32_t >(builtinOpParams.size .z )};
168-
169- blitProperties.dstSize = {static_cast <uint32_t >(builtinOpParams.size .x ),
170- static_cast <uint32_t >(builtinOpParams.size .y ),
171- static_cast <uint32_t >(builtinOpParams.size .z )};
172-
173- if (blitProperties.blitDirection == BlitterConstants::BlitDirection::ImageToHostPtr) {
174- srcImage = castToObject<Image>(builtinOpParams.srcMemObj );
175- blitProperties.bytesPerPixel = srcImage->getSurfaceFormatInfo ().surfaceFormat .ImageElementSizeInBytes ;
176- blitProperties.srcSize .x = static_cast <uint32_t >(srcImage->getImageDesc ().image_width );
177- blitProperties.srcSize .y = static_cast <uint32_t >(srcImage->getImageDesc ().image_height );
178- blitProperties.srcSize .z = static_cast <uint32_t >(srcImage->getImageDesc ().image_depth );
179-
180133 } else {
181- dstImage = castToObject<Image>(builtinOpParams.dstMemObj );
182- blitProperties.bytesPerPixel = dstImage->getSurfaceFormatInfo ().surfaceFormat .ImageElementSizeInBytes ;
183- blitProperties.dstSize .x = static_cast <uint32_t >(dstImage->getImageDesc ().image_width );
184- blitProperties.dstSize .y = static_cast <uint32_t >(dstImage->getImageDesc ().image_height );
185- blitProperties.dstSize .z = static_cast <uint32_t >(dstImage->getImageDesc ().image_depth );
134+ UNRECOVERABLE_IF (CL_COMMAND_COPY_BUFFER != commandType);
135+ return BlitterConstants::BlitDirection::BufferToBuffer;
186136 }
187-
188- blitProperties.srcRowPitch = builtinOpParams.dstRowPitch ? builtinOpParams.dstRowPitch : blitProperties.srcSize .x * blitProperties.bytesPerPixel ;
189- blitProperties.dstRowPitch = builtinOpParams.srcRowPitch ? builtinOpParams.srcRowPitch : blitProperties.dstSize .x * blitProperties.bytesPerPixel ;
190- blitProperties.srcSlicePitch = builtinOpParams.dstSlicePitch ? builtinOpParams.dstSlicePitch : blitProperties.srcSize .y * blitProperties.srcRowPitch ;
191- blitProperties.dstSlicePitch = builtinOpParams.srcSlicePitch ? builtinOpParams.srcSlicePitch : blitProperties.dstSize .y * blitProperties.dstRowPitch ;
192137 }
193138};
194139
0 commit comments