Incompatibility of CL_UNSIGNED_INT8 and CL_RGB

Hi guys,
I am wondering why I can’t set CL_RGB and CL_UNSIGNED_INT8 as ImageFormat and I thought, that this is the place, where I should ask about.

In my project I have an BGR image, which I wanted to scale and copy to the other buffer. But if I want to use Image2D class, I have to manually add the alpha channel to my interleaved BGR image. Do you know why this is a requirement? Is this some kind of technical issue, which stopped the group from making this pairing available?

Here is my stackoverflow question (I don’t know why, but it looks that I can’t paste URL’s):

I answered on SO (before I saw this).

Thanks for answering, Dithermaster!

I saw the table and it looks like Khronos just don’t require this combination (CL_RGB and CL_UNSIGNED_INT8). Do you know why they did not force the vendors to implement it? It makes my program to have overheads, because the alpha channel has to be added to every frame, that I am processing. Is 24 bits RGB not being “popular” enough?

Recently my colleague told me, that it is connected with register sizes and reading from memory.

Example: if there would be 24 bits structures, then they would have to be converted to 32 bits, because it speeds up the memory access time (it limits the needed number of readings). Let the first three dashes be our 24 bits structure and then different signs indicates more same structures.
So here we have four 24 bits data structures (e.g. RGB value represented by eight bits unsigned int numbers).

The smallest amount of data which I can read are 32 bits, so if I want to access the second structure (indicated by “+++”), the only way to do this is reading first 32 bits and second 32 bits fragment. So instead of 24 bits I red 64 bits.

If the structures are 32 bits long, then our memory looks like this:
And reading second structure ("++++") equals reading only 32 bits, which I can access directly (it is well aligned to the area which can be read by one access).