Skip to content

PVR DMA doesnt work

Getting:

pvr_dma: Failed DMAOR check error when trying to load texture data to pvr using code:

texture_data = memalign(32, texture_height * texture_width * 2);
pvr_texture_data = pvr_mem_malloc(texture_height * texture_width * 2);
...
dcache_flush_range((uint32)texture_data, texture_width*texture_height*2);   // dcache flush is needed when using DMA
pvr_txr_load_dma(texture_data, pvr_texture_data, texture_width*texture_height*2, 1, NULL, 0);

According to KOS: https://github.com/KallistiOS/KallistiOS/blob/525cbdac17317acfc2e4937e2efd7b99c85e73a3/kernel/arch/dreamcast/hardware/pvr/pvr_dma.c#L117

Checking the value of val for Sega Dreamcast and emulators:

  • Sega Dreamcast: shdma[DMAC_DMAOR]: 33281
  • Flycast: shdma[DMAC_DMAOR]: 33281
  • Reicast: shdma[DMAC_DMAOR]: 33281
  • LxDream-Nitro: shdma[DMAC_DMAOR]: 0
Edited by Andress Antonio Barajas