Hi forum,
I am calculating the pitch value for the device i am working on in the following manner:
//pull out the device info for the optimal texture pitch
cl_uint deviceMemBaseAddressAlignmentInBits;
unsigned int deviceMemBaseAddressAlignmentInBytes;
//get the device info
//describes the alignment in bits of the base address of any allocated
//memory object
errNum = clGetDeviceInfo(cdDevices[0],
CL_DEVICE_MEM_BASE_ADDR_ALIGN,
sizeof(deviceMemBaseAddressAlignmentInBits),
&deviceMemBaseAddressAlignmentInBits,
NULL);
if( errNum != CL_SUCCESS )
{
std::cerr << "Device Memory Base Address Alignment Extraction is not successful." << std::endl;
return NULL;
}
//convert bits to bytes
deviceMemBaseAddressAlignmentInBytes = deviceMemBaseAddressAlignmentInBits / 8;
unsigned int remainingAlignmentBytes = (DIM*sizeof(cl_float2)) % deviceMemBaseAddressAlignmentInBytes;
if( remainingAlignmentBytes != 0 )
tPitch = (DIM*sizeof(cl_float2)) + (deviceMemBaseAddressAlignmentInBytes - remainingAlignmentBytes);
else
//returns basically the image row pitch
tPitch = (DIM*sizeof(cl_float2)); // no additional bytes required.
I need your feed-back over this issue to make sure that i am doing it right.
Thanks