diff --git a/src/add-ons/accelerants/radeon_hd/accelerant.cpp b/src/add-ons/accelerants/radeon_hd/accelerant.cpp index 18ece472e4..cf6bb2eca0 100644 --- a/src/add-ons/accelerants/radeon_hd/accelerant.cpp +++ b/src/add-ons/accelerants/radeon_hd/accelerant.cpp @@ -300,6 +300,8 @@ radeon_init_accelerant(int device) // Set up data crunching + irq rings radeon_gpu_ring_setup(); + radeon_gpu_ring_boot(RADEON_QUEUE_TYPE_GFX_INDEX); + TRACE("%s done\n", __func__); return B_OK; } diff --git a/src/add-ons/accelerants/radeon_hd/gpu.cpp b/src/add-ons/accelerants/radeon_hd/gpu.cpp index d52e4a307c..c966c12974 100644 --- a/src/add-ons/accelerants/radeon_hd/gpu.cpp +++ b/src/add-ons/accelerants/radeon_hd/gpu.cpp @@ -506,7 +506,7 @@ radeon_gpu_ring_setup() TRACE("%s called\n", __func__); // init GFX ring queue - gInfo->ringQueue[RADEON_QUEUE_TYPE_GFX_INDEX] + gInfo->ringQueue[RADEON_QUEUE_TYPE_GFX_INDEX] = new RingQueue(1024 * 1024, RADEON_QUEUE_TYPE_GFX_INDEX); #if 0 @@ -520,6 +520,23 @@ radeon_gpu_ring_setup() } +status_t +radeon_gpu_ring_boot(uint32 ringType) +{ + TRACE("%s called\n", __func__); + + RingQueue* ring = gInfo->ringQueue[ringType]; + if (ring == NULL) { + ERROR("%s: Specified ring doesn't exist!\n", __func__); + return B_ERROR; + } + + // TODO: Write initial ring state + + return B_OK; +} + + status_t radeon_gpu_ss_disable() { diff --git a/src/add-ons/accelerants/radeon_hd/gpu.h b/src/add-ons/accelerants/radeon_hd/gpu.h index c22c35339b..73772194be 100644 --- a/src/add-ons/accelerants/radeon_hd/gpu.h +++ b/src/add-ons/accelerants/radeon_hd/gpu.h @@ -176,6 +176,7 @@ void radeon_gpu_mc_resume(struct gpu_state *gpuState); status_t radeon_gpu_mc_idlewait(); status_t radeon_gpu_mc_setup(); status_t radeon_gpu_ring_setup(); +status_t radeon_gpu_ring_boot(uint32 ringType); status_t radeon_gpu_ss_disable();