On Mon, Mar 24, 2014 at 02:35:04PM +0000, Dorrington, Albert wrote:
> I have been experimenting with adding image support to the clover 
> implementation, and have been trying to understand the differences between 
> the existing buffer support and what would be required to support images.
> 
> From what I'm gathering, buffers are laid out in VRAM in a linear format, 
> while images would be laid out in some sort of tiled format.
> 
> I have been trying to do some research on tiled memory layout, and have not 
> yet been able to find anything which describes the tiled format that is in 
> use on R600 and Evergreen GPUs.
> 
> I have also tried going through the OpenGL code to understand how image 
> textures are transferred to the R600/Evergreen GPUs, since I am making the 
> assumption that OpenGL would be transferring the images to GPU RAM in the 
> same tiled format that an OpenCL texture would use.
> 
> I have been trying to do some comparisons with the Catalyst driver's 
> implementation, but I have not determined a way to view the internals of the 
> registers and CB areas within the catalyst environment.
> 
> For example, looking at the IL and ISA generated using the Catalyst SDK, I 
> can see that there are 8 32-bit fields being read from CB1 for an read_only 
> image kernel parameter.
> I have been able to determine that the first three are integer width, height, 
> depth. The fourth is the image channel data type, the 8th is the image 
> channel order.
> The 5th and 6th are involved in offset calculations for sampler coordinates 
> (not sure if they are row and slice pitches of some sort) while the 7th seems 
> unused (I'm assuming it must have something to do with 3D images)
>

If you send me your example code, I can look at the kernel analyzer and
try to figure out what is going on.

> I have been thinking that it should be possible to use Mesa's OpenGL texture 
> transfer routines within the Clover transfer routines (rather than the 
> current path through soft_copy_op, which uses direct memcpy instructions)
> 
> Unfortunately, so far I've only been able to look at a 4x4 image, anything 
> beyond that causes the GPU CP to stall on me.
> 
> If anyone can shed some light on these parameters that the Catalyst driver 
> uses, or provide some information on how the Mesa OpenGL implementation 
> transfers texture data to the radeon GPUs, I'd appreciate it.
> 
> My online research hasn't been very productive, I think because I don't fully 
> understand the terminology being used in this area.
> 

I think you should be able to re-use most of the texturing code in r600g
for OpenCL.  However, I have very limited knowledge of this code, so I
may be wrong.

I actually had basic image support working about 6 months ago.  I had to
hard code a bunch of values into the compiler and also libclc, but I was
able to pass a simple test.  Below you can find some links to the code.
You might get lucky and it will still work after you rebase it, but I
doubt it.  However, it may help you get an idea of what to do by looking
through the code:

http://cgit.freedesktop.org/~tstellar/mesa/log/?h=r600g-image-support
http://cgit.freedesktop.org/~tstellar/libclc/log/?h=image
http://cgit.freedesktop.org/~tstellar/llvm/log/?h=image-support


> Thanks!
> 
> Al Dorrington
> Software Engineer Sr
> Lockheed Martin, Mission Systems and Training
> 

> _______________________________________________
> mesa-dev mailing list
> [email protected]
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev

_______________________________________________
mesa-dev mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to