Posts: 11
Joined: Sun Aug 17, 2014 9:48 pm

V3D and the L2 Cache

Mon Oct 06, 2014 9:05 pm


Does anyone know if the V3D block is connected to the L2 cache? The V3D itself has its own L2 caches so it's conceivable it's not.

I've peeked at the V3D registers whilst an OpenGL program is running and the control lists are placed at the 'direct uncached' 0xc0000000 area. Looking at the control list it constructs (I've written a program that can disassemble them) the various other address are also within the 'direct uncached' area.

Andrew Holme's hello_fft allocates within the 'l2 cached (non-allocating)' 0x40000000 area. Which I believe means writes to the area will go straight through the cache if the data is not in the cache (though I'm not sure if you can see this behaviour from ARM side).

So this lends some evidence to the no L2 cache theory.

With my little test program I've successfully run a V3D control list when I've allocated memory from any of the 4 possible areas (allocated via the VC mailbox interface with the appropriate address used in the control lists and given to the V3D registers in each case).

Andrew Holme
Posts: 4
Joined: Sun Dec 21, 2014 10:48 am

Re: V3D and the L2 Cache

Fri Jan 02, 2015 10:13 pm

AXI memory requests from the V3D are routed either through or around the system L2 cache, according to which of the 4 address aliases is used. OpenGL uses the uncached alias. By default, GPU_FFT uses the non-allocating cache coherent ailias, which means requests pass through the cache. There is a #define in gpu_fft_base.c to select which alias GPU_FFT uses. It must be changed to uncached if both GPU_FFT and OpenGL are used at the same time.

Return to “Bare metal, Assembly language”