From 7c3805293f686216efabd528748342f44cc6eb54 Mon Sep 17 00:00:00 2001 From: Imre Deak Date: Wed, 1 Feb 2012 17:30:42 +0200 Subject: [PATCH] gfx: drv/pvr: cmd trace: show both old and new flip req buffers For flip request commands the trace output showed only information on one buffer: the DC flip code showed the new buffer while the DRM specific flip code showed the old buffer. This in itself is inconsistent, besides we want to get information on both buffers. So show both buffers. Signed-off-by: Imre Deak Signed-off-by: Kirill A. Shutemov --- drivers/staging/mrst/drv/psb_page_flip.c | 2 +- .../mrst/pvr/services4/srvkm/common/deviceclass.c | 27 ++++++++++------------ 2 files changed, 13 insertions(+), 16 deletions(-) diff --git a/drivers/staging/mrst/drv/psb_page_flip.c b/drivers/staging/mrst/drv/psb_page_flip.c index d151bdf..e825d1f 100644 --- a/drivers/staging/mrst/drv/psb_page_flip.c +++ b/drivers/staging/mrst/drv/psb_page_flip.c @@ -267,7 +267,7 @@ psb_intel_crtc_page_flip(struct drm_crtc *crtc, current_fb_mem_info->psKernelSyncInfo); else pvr_trcmd_clear_syn(&fltrace->old_syn); - pvr_trcmd_clear_syn(&fltrace->new_syn); + pvr_trcmd_set_syn(&fltrace->new_syn, new_fb_mem_info->psKernelSyncInfo); pvr_trcmd_commit(fltrace); diff --git a/drivers/staging/mrst/pvr/services4/srvkm/common/deviceclass.c b/drivers/staging/mrst/pvr/services4/srvkm/common/deviceclass.c index 073ca4c..5d5db46 100644 --- a/drivers/staging/mrst/pvr/services4/srvkm/common/deviceclass.c +++ b/drivers/staging/mrst/pvr/services4/srvkm/common/deviceclass.c @@ -1310,12 +1310,14 @@ PVRSRV_ERROR PVRSRVSwapToDCBufferKM(IMG_HANDLE hDeviceKM, PVRSRV_ERROR eError; PVRSRV_DISPLAYCLASS_INFO *psDCInfo; PVRSRV_DC_BUFFER *psBuffer; + PVRSRV_DC_BUFFER *last_buf; PVRSRV_QUEUE_INFO *psQueue; DISPLAYCLASS_FLIP_COMMAND *psFlipCmd; IMG_UINT32 i; IMG_BOOL bAddReferenceToLast = IMG_TRUE; IMG_UINT16 ui16SwapCommandID = DC_FLIP_COMMAND; IMG_UINT32 ui32NumSrcSyncs = 1; + PVRSRV_KERNEL_SYNC_INFO *old_syn; PVRSRV_KERNEL_SYNC_INFO *apsSrcSync[2]; PVRSRV_COMMAND *psCommand; struct pvr_trcmd_flpreq *fltrace; @@ -1364,22 +1366,17 @@ PVRSRV_ERROR PVRSRVSwapToDCBufferKM(IMG_HANDLE hDeviceKM, psQueue = psBuffer->psSwapChain->psQueue; - apsSrcSync[0] = psBuffer->sDeviceClassBuffer.psKernelSyncInfo; - - - - if(bAddReferenceToLast && psBuffer->psSwapChain->psLastFlipBuffer && - psBuffer != psBuffer->psSwapChain->psLastFlipBuffer) - { - apsSrcSync[1] = psBuffer->psSwapChain->psLastFlipBuffer->sDeviceClassBuffer.psKernelSyncInfo; - - - - ui32NumSrcSyncs++; + old_syn = NULL; + last_buf = psBuffer->psSwapChain->psLastFlipBuffer; + if (last_buf) { + old_syn = last_buf->sDeviceClassBuffer.psKernelSyncInfo; + if (bAddReferenceToLast && psBuffer != last_buf) { + apsSrcSync[1] = old_syn; + ui32NumSrcSyncs++; + } } - eError = PVRSRVInsertCommandKM (psQueue, &psCommand, psDCInfo->ui32DeviceID, @@ -1392,8 +1389,8 @@ PVRSRV_ERROR PVRSRVSwapToDCBufferKM(IMG_HANDLE hDeviceKM, fltrace = pvr_trcmd_reserve(PVR_TRCMD_FLPREQ, psPerProc->ui32PID, psPerProc->name, sizeof(*fltrace)); pvr_trcmd_set_syn(&fltrace->new_syn, apsSrcSync[0]); - if (ui32NumSrcSyncs > 1) - pvr_trcmd_set_syn(&fltrace->old_syn, apsSrcSync[1]); + if (old_syn) + pvr_trcmd_set_syn(&fltrace->old_syn, old_syn); else pvr_trcmd_clear_syn(&fltrace->old_syn); -- 2.7.4