summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'jacinto6/sgx_src/eurasia_km/services4/srvkm/bridged/sgx/bridged_sgx_bridge.c')
-rw-r--r--jacinto6/sgx_src/eurasia_km/services4/srvkm/bridged/sgx/bridged_sgx_bridge.c63
1 files changed, 32 insertions, 31 deletions
diff --git a/jacinto6/sgx_src/eurasia_km/services4/srvkm/bridged/sgx/bridged_sgx_bridge.c b/jacinto6/sgx_src/eurasia_km/services4/srvkm/bridged/sgx/bridged_sgx_bridge.c
index 31d40e7..d0a10ad 100644
--- a/jacinto6/sgx_src/eurasia_km/services4/srvkm/bridged/sgx/bridged_sgx_bridge.c
+++ b/jacinto6/sgx_src/eurasia_km/services4/srvkm/bridged/sgx/bridged_sgx_bridge.c
@@ -184,6 +184,7 @@ SGXDoKickBW(IMG_UINT32 ui32BridgeID,
184 IMG_INT ret = 0; 184 IMG_INT ret = 0;
185 IMG_UINT32 ui32NumDstSyncs; 185 IMG_UINT32 ui32NumDstSyncs;
186 IMG_HANDLE *phKernelSyncInfoHandles = IMG_NULL; 186 IMG_HANDLE *phKernelSyncInfoHandles = IMG_NULL;
187 IMG_HANDLE *pahDstSyncHandles;
187 188
188 PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_SGX_DOKICK); 189 PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_SGX_DOKICK);
189 190
@@ -272,7 +273,7 @@ SGXDoKickBW(IMG_UINT32 ui32BridgeID,
272 return 0; 273 return 0;
273 } 274 }
274 275
275#if !defined(PVR_ANDROID_NATIVE_WINDOW_HAS_SYNC) 276#if !(defined(PVR_ANDROID_NATIVE_WINDOW_HAS_SYNC) || defined(PVR_ANDROID_NATIVE_WINDOW_HAS_FENCE))
276 for(i=0; i<psDoKickIN->sCCBKick.ui32NumSrcSyncs; i++) 277 for(i=0; i<psDoKickIN->sCCBKick.ui32NumSrcSyncs; i++)
277 { 278 {
278 psRetOUT->eError = 279 psRetOUT->eError =
@@ -347,7 +348,7 @@ SGXDoKickBW(IMG_UINT32 ui32BridgeID,
347 if(ui32NumDstSyncs > 0) 348 if(ui32NumDstSyncs > 0)
348 { 349 {
349 if(!OSAccessOK(PVR_VERIFY_READ, 350 if(!OSAccessOK(PVR_VERIFY_READ,
350 psDoKickIN->sCCBKick.pahDstSyncHandles, 351 (IMG_HANDLE*)psDoKickIN->sCCBKick.hDstSyncHandles,
351 ui32NumDstSyncs * sizeof(IMG_HANDLE))) 352 ui32NumDstSyncs * sizeof(IMG_HANDLE)))
352 { 353 {
353 PVR_DPF((PVR_DBG_ERROR, "%s: SGXDoKickBW:" 354 PVR_DPF((PVR_DBG_ERROR, "%s: SGXDoKickBW:"
@@ -368,22 +369,22 @@ SGXDoKickBW(IMG_UINT32 ui32BridgeID,
368 if(CopyFromUserWrapper(psPerProc, 369 if(CopyFromUserWrapper(psPerProc,
369 ui32BridgeID, 370 ui32BridgeID,
370 phKernelSyncInfoHandles, 371 phKernelSyncInfoHandles,
371 psDoKickIN->sCCBKick.pahDstSyncHandles, 372 (IMG_HANDLE*)psDoKickIN->sCCBKick.hDstSyncHandles,
372 ui32NumDstSyncs * sizeof(IMG_HANDLE)) != PVRSRV_OK) 373 ui32NumDstSyncs * sizeof(IMG_HANDLE)) != PVRSRV_OK)
373 { 374 {
374 ret = -EFAULT; 375 ret = -EFAULT;
375 goto PVRSRV_BRIDGE_SGX_DOKICK_RETURN_RESULT; 376 goto PVRSRV_BRIDGE_SGX_DOKICK_RETURN_RESULT;
376 } 377 }
377 378
378 /* Set sCCBKick.pahDstSyncHandles to point to the local memory */ 379 /* Set sCCBKick.hDstSyncHandles to point to the local memory */
379 psDoKickIN->sCCBKick.pahDstSyncHandles = phKernelSyncInfoHandles; 380 psDoKickIN->sCCBKick.hDstSyncHandles = (IMG_HANDLE)phKernelSyncInfoHandles;
380 381 pahDstSyncHandles = psDoKickIN->sCCBKick.hDstSyncHandles;
381 for( i = 0; i < ui32NumDstSyncs; i++) 382 for( i = 0; i < ui32NumDstSyncs; i++)
382 { 383 {
383 psRetOUT->eError = 384 psRetOUT->eError =
384 PVRSRVLookupHandle(psPerProc->psHandleBase, 385 PVRSRVLookupHandle(psPerProc->psHandleBase,
385 &psDoKickIN->sCCBKick.pahDstSyncHandles[i], 386 &pahDstSyncHandles[i],
386 psDoKickIN->sCCBKick.pahDstSyncHandles[i], 387 pahDstSyncHandles[i],
387 PVRSRV_HANDLE_TYPE_SYNC_INFO); 388 PVRSRV_HANDLE_TYPE_SYNC_INFO);
388 389
389 if(psRetOUT->eError != PVRSRV_OK) 390 if(psRetOUT->eError != PVRSRV_OK)
@@ -798,11 +799,11 @@ SGXGetMiscInfoBW(IMG_UINT32 ui32BridgeID,
798 799
799#if defined(SUPPORT_SGX_EDM_MEMORY_DEBUG) 800#if defined(SUPPORT_SGX_EDM_MEMORY_DEBUG)
800 /* Lookup handle for dev mem context */ 801 /* Lookup handle for dev mem context */
801 if (psSGXGetMiscInfoIN->psMiscInfo->eRequest == SGX_MISC_INFO_REQUEST_MEMREAD) 802 if (((SGX_MISC_INFO*)psSGXGetMiscInfoIN->hMiscInfo)->eRequest == SGX_MISC_INFO_REQUEST_MEMREAD)
802 { 803 {
803 psRetOUT->eError = PVRSRVLookupHandle(psPerProc->psHandleBase, 804 psRetOUT->eError = PVRSRVLookupHandle(psPerProc->psHandleBase,
804 &hDevMemContextInt, 805 &hDevMemContextInt,
805 psSGXGetMiscInfoIN->psMiscInfo->hDevMemContext, 806 ((SGX_MISC_INFO*)psSGXGetMiscInfoIN->hMiscInfo)->hDevMemContext,
806 PVRSRV_HANDLE_TYPE_DEV_MEM_CONTEXT); 807 PVRSRV_HANDLE_TYPE_DEV_MEM_CONTEXT);
807 808
808 if(psRetOUT->eError != PVRSRV_OK) 809 if(psRetOUT->eError != PVRSRV_OK)
@@ -825,7 +826,7 @@ SGXGetMiscInfoBW(IMG_UINT32 ui32BridgeID,
825 psRetOUT->eError = CopyFromUserWrapper(psPerProc, 826 psRetOUT->eError = CopyFromUserWrapper(psPerProc,
826 ui32BridgeID, 827 ui32BridgeID,
827 &sMiscInfo, 828 &sMiscInfo,
828 psSGXGetMiscInfoIN->psMiscInfo, 829 (SGX_MISC_INFO*)psSGXGetMiscInfoIN->hMiscInfo,
829 sizeof(SGX_MISC_INFO)); 830 sizeof(SGX_MISC_INFO));
830 if (psRetOUT->eError != PVRSRV_OK) 831 if (psRetOUT->eError != PVRSRV_OK)
831 { 832 {
@@ -844,7 +845,7 @@ SGXGetMiscInfoBW(IMG_UINT32 ui32BridgeID,
844 /* Copy back misc info to user address space */ 845 /* Copy back misc info to user address space */
845 psRetOUT->eError = CopyToUserWrapper(psPerProc, 846 psRetOUT->eError = CopyToUserWrapper(psPerProc,
846 ui32BridgeID, 847 ui32BridgeID,
847 psSGXGetMiscInfoIN->psMiscInfo, 848 (SGX_MISC_INFO*)psSGXGetMiscInfoIN->hMiscInfo,
848 &sMiscInfo, 849 &sMiscInfo,
849 sizeof(SGX_MISC_INFO)); 850 sizeof(SGX_MISC_INFO));
850 if (psRetOUT->eError != PVRSRV_OK) 851 if (psRetOUT->eError != PVRSRV_OK)
@@ -862,7 +863,7 @@ SGXReadHWPerfCBBW(IMG_UINT32 ui32BridgeID,
862 PVRSRV_PER_PROCESS_DATA *psPerProc) 863 PVRSRV_PER_PROCESS_DATA *psPerProc)
863{ 864{
864 IMG_HANDLE hDevCookieInt; 865 IMG_HANDLE hDevCookieInt;
865 PVRSRV_SGX_HWPERF_CB_ENTRY *psAllocated; 866 PVRSRV_SGX_HWPERF_CB_ENTRY *psAllocated, *psHWPerfCBData;
866 IMG_HANDLE hAllocatedHandle; 867 IMG_HANDLE hAllocatedHandle;
867 IMG_UINT32 ui32AllocatedSize; 868 IMG_UINT32 ui32AllocatedSize;
868 869
@@ -877,9 +878,9 @@ SGXReadHWPerfCBBW(IMG_UINT32 ui32BridgeID,
877 { 878 {
878 return 0; 879 return 0;
879 } 880 }
880 881 psHWPerfCBData = (PVRSRV_SGX_HWPERF_CB_ENTRY *)psSGXReadHWPerfCBIN->hHWPerfCBData;
881 ui32AllocatedSize = psSGXReadHWPerfCBIN->ui32ArraySize * 882 ui32AllocatedSize = psSGXReadHWPerfCBIN->ui32ArraySize *
882 sizeof(psSGXReadHWPerfCBIN->psHWPerfCBData[0]); 883 sizeof(psHWPerfCBData[0]);
883 ASSIGN_AND_EXIT_ON_ERROR(psSGXReadHWPerfCBOUT->eError, 884 ASSIGN_AND_EXIT_ON_ERROR(psSGXReadHWPerfCBOUT->eError,
884 OSAllocMem(PVRSRV_OS_PAGEABLE_HEAP, 885 OSAllocMem(PVRSRV_OS_PAGEABLE_HEAP,
885 ui32AllocatedSize, 886 ui32AllocatedSize,
@@ -897,7 +898,7 @@ SGXReadHWPerfCBBW(IMG_UINT32 ui32BridgeID,
897 { 898 {
898 psSGXReadHWPerfCBOUT->eError = CopyToUserWrapper(psPerProc, 899 psSGXReadHWPerfCBOUT->eError = CopyToUserWrapper(psPerProc,
899 ui32BridgeID, 900 ui32BridgeID,
900 psSGXReadHWPerfCBIN->psHWPerfCBData, 901 psHWPerfCBData,
901 psAllocated, 902 psAllocated,
902 ui32AllocatedSize); 903 ui32AllocatedSize);
903 } 904 }
@@ -1755,7 +1756,7 @@ SGXRegisterHW2DContextBW(IMG_UINT32 ui32BridgeID,
1755 1756
1756 hHW2DContextInt = 1757 hHW2DContextInt =
1757 SGXRegisterHW2DContextKM(hDevCookieInt, 1758 SGXRegisterHW2DContextKM(hDevCookieInt,
1758 psSGXRegHW2DContextIN->pHW2DContextCpuVAddr, 1759 (IMG_CPU_VIRTADDR*)psSGXRegHW2DContextIN->hHW2DContextCpuVAddr,
1759 psSGXRegHW2DContextIN->ui32HW2DContextSize, 1760 psSGXRegHW2DContextIN->ui32HW2DContextSize,
1760 psSGXRegHW2DContextIN->ui32OffsetToPDDevPAddr, 1761 psSGXRegHW2DContextIN->ui32OffsetToPDDevPAddr,
1761 psSGXRegHW2DContextIN->hDevMemContext, 1762 psSGXRegHW2DContextIN->hDevMemContext,
@@ -2368,7 +2369,7 @@ DumpBufferArray(PVRSRV_PER_PROCESS_DATA *psPerProc,
2368 IMG_UINT32 ui32Offset; 2369 IMG_UINT32 ui32Offset;
2369 2370
2370 psBuffer = &psBufferArray[i]; 2371 psBuffer = &psBufferArray[i];
2371 pszName = psBuffer->pszName; 2372 pszName = (IMG_CHAR *)psBuffer->hName;
2372 if (!pszName) 2373 if (!pszName)
2373 { 2374 {
2374 pszName = "Nameless buffer"; 2375 pszName = "Nameless buffer";
@@ -2401,7 +2402,7 @@ DumpBufferArray(PVRSRV_PER_PROCESS_DATA *psPerProc,
2401 PDUMPCOMMENTWITHFLAGS(0, "%s\r\n", pszName); 2402 PDUMPCOMMENTWITHFLAGS(0, "%s\r\n", pszName);
2402 PDUMPMEMUM(psPerProc, 2403 PDUMPMEMUM(psPerProc,
2403 IMG_NULL, 2404 IMG_NULL,
2404 psBuffer->pvLinAddr, 2405 psBuffer->hLinAddr,
2405 (PVRSRV_KERNEL_MEM_INFO*)psBuffer->hKernelMemInfo, 2406 (PVRSRV_KERNEL_MEM_INFO*)psBuffer->hKernelMemInfo,
2406 psBuffer->ui32Start, 2407 psBuffer->ui32Start,
2407 psBuffer->ui32End - psBuffer->ui32Start, 2408 psBuffer->ui32End - psBuffer->ui32Start,
@@ -2428,7 +2429,7 @@ DumpBufferArray(PVRSRV_PER_PROCESS_DATA *psPerProc,
2428 PDUMPCOMMENTWITHFLAGS(0, "%s (part 1)\r\n", pszName); 2429 PDUMPCOMMENTWITHFLAGS(0, "%s (part 1)\r\n", pszName);
2429 PDUMPMEMUM(psPerProc, 2430 PDUMPMEMUM(psPerProc,
2430 IMG_NULL, 2431 IMG_NULL,
2431 psBuffer->pvLinAddr, 2432 psBuffer->hLinAddr,
2432 (PVRSRV_KERNEL_MEM_INFO*)psBuffer->hKernelMemInfo, 2433 (PVRSRV_KERNEL_MEM_INFO*)psBuffer->hKernelMemInfo,
2433 psBuffer->ui32Start, 2434 psBuffer->ui32Start,
2434 psBuffer->ui32BackEndLength, 2435 psBuffer->ui32BackEndLength,
@@ -2457,7 +2458,7 @@ DumpBufferArray(PVRSRV_PER_PROCESS_DATA *psPerProc,
2457 PDUMPCOMMENTWITHFLAGS(0, "%s (part 2)\r\n", pszName); 2458 PDUMPCOMMENTWITHFLAGS(0, "%s (part 2)\r\n", pszName);
2458 PDUMPMEMUM(psPerProc, 2459 PDUMPMEMUM(psPerProc,
2459 IMG_NULL, 2460 IMG_NULL,
2460 psBuffer->pvLinAddr, 2461 psBuffer->hLinAddr,
2461 (PVRSRV_KERNEL_MEM_INFO*)psBuffer->hKernelMemInfo, 2462 (PVRSRV_KERNEL_MEM_INFO*)psBuffer->hKernelMemInfo,
2462 0, 2463 0,
2463 psBuffer->ui32End, 2464 psBuffer->ui32End,
@@ -2500,7 +2501,7 @@ SGXPDumpBufferArrayBW(IMG_UINT32 ui32BridgeID,
2500 if(CopyFromUserWrapper(psPerProc, 2501 if(CopyFromUserWrapper(psPerProc,
2501 ui32BridgeID, 2502 ui32BridgeID,
2502 psKickTADumpBuffer, 2503 psKickTADumpBuffer,
2503 psPDumpBufferArrayIN->psBufferArray, 2504 psPDumpBufferArrayIN->hBufferArray,
2504 ui32BufferArraySize) != PVRSRV_OK) 2505 ui32BufferArraySize) != PVRSRV_OK)
2505 { 2506 {
2506 OSFreeMem(PVRSRV_OS_PAGEABLE_HEAP, ui32BufferArraySize, psKickTADumpBuffer, 0); 2507 OSFreeMem(PVRSRV_OS_PAGEABLE_HEAP, ui32BufferArraySize, psKickTADumpBuffer, 0);
@@ -2520,9 +2521,9 @@ SGXPDumpBufferArrayBW(IMG_UINT32 ui32BridgeID,
2520 2521
2521 pszName = pszNameBuffer; 2522 pszName = pszNameBuffer;
2522 2523
2523 for (i=0; i<ui32BufferArrayLength; i++) 2524 for(i = 0; i < ui32BufferArrayLength; i++)
2524 { 2525 {
2525 if (psKickTADumpBuffer[i].pszName) 2526 if (psKickTADumpBuffer[i].hName)
2526 { 2527 {
2527 ui32NameLength = psKickTADumpBuffer[i].ui32NameLength; 2528 ui32NameLength = psKickTADumpBuffer[i].ui32NameLength;
2528 if (ui32NameLength >= NAME_BUFFER_SIZE) 2529 if (ui32NameLength >= NAME_BUFFER_SIZE)
@@ -2532,16 +2533,16 @@ SGXPDumpBufferArrayBW(IMG_UINT32 ui32BridgeID,
2532 2533
2533 if (ui32NameLength && 2534 if (ui32NameLength &&
2534 (CopyFromUserWrapper(psPerProc, ui32BridgeID, pszName, 2535 (CopyFromUserWrapper(psPerProc, ui32BridgeID, pszName,
2535 psKickTADumpBuffer[i].pszName, ui32NameLength + 1) == PVRSRV_OK)) 2536 psKickTADumpBuffer[i].hName, ui32NameLength + 1) == PVRSRV_OK))
2536 { 2537 {
2537 pszName[NAME_BUFFER_SIZE - 1] = 0; 2538 pszName[NAME_BUFFER_SIZE - 1] = 0;
2538 psKickTADumpBuffer[i].pszName = pszName; 2539 psKickTADumpBuffer[i].hName = (IMG_HANDLE)pszName;
2539 pszName += NAME_BUFFER_SIZE; 2540 pszName += NAME_BUFFER_SIZE;
2540 } 2541 }
2541 else 2542 else
2542 { 2543 {
2543 PVR_DPF((PVR_DBG_WARNING, "Failed to read PDUMP buffer name")); 2544 PVR_DPF((PVR_DBG_WARNING, "Failed to read PDUMP buffer name"));
2544 psKickTADumpBuffer[i].pszName = 0; 2545 psKickTADumpBuffer[i].hName = 0;
2545 } 2546 }
2546 } 2547 }
2547 } 2548 }
@@ -2659,7 +2660,7 @@ SGXPDump3DSignatureRegistersBW(IMG_UINT32 ui32BridgeID,
2659 if(CopyFromUserWrapper(psPerProc, 2660 if(CopyFromUserWrapper(psPerProc,
2660 ui32BridgeID, 2661 ui32BridgeID,
2661 pui32Registers, 2662 pui32Registers,
2662 psPDump3DSignatureRegistersIN->pui32Registers, 2663 psPDump3DSignatureRegistersIN->hRegisters,
2663 ui32RegisterArraySize) != PVRSRV_OK) 2664 ui32RegisterArraySize) != PVRSRV_OK)
2664 { 2665 {
2665 PVR_DPF((PVR_DBG_ERROR, "PDump3DSignatureRegistersBW: CopyFromUserWrapper failed")); 2666 PVR_DPF((PVR_DBG_ERROR, "PDump3DSignatureRegistersBW: CopyFromUserWrapper failed"));
@@ -2765,7 +2766,7 @@ SGXPDumpCounterRegistersBW(IMG_UINT32 ui32BridgeID,
2765 if(CopyFromUserWrapper(psPerProc, 2766 if(CopyFromUserWrapper(psPerProc,
2766 ui32BridgeID, 2767 ui32BridgeID,
2767 pui32Registers, 2768 pui32Registers,
2768 psPDumpCounterRegistersIN->pui32Registers, 2769 psPDumpCounterRegistersIN->hRegisters,
2769 ui32RegisterArraySize) != PVRSRV_OK) 2770 ui32RegisterArraySize) != PVRSRV_OK)
2770 { 2771 {
2771 PVR_DPF((PVR_DBG_ERROR, "PDumpCounterRegistersBW: CopyFromUserWrapper failed")); 2772 PVR_DPF((PVR_DBG_ERROR, "PDumpCounterRegistersBW: CopyFromUserWrapper failed"));
@@ -2849,7 +2850,7 @@ SGXPDumpTASignatureRegistersBW(IMG_UINT32 ui32BridgeID,
2849 if(CopyFromUserWrapper(psPerProc, 2850 if(CopyFromUserWrapper(psPerProc,
2850 ui32BridgeID, 2851 ui32BridgeID,
2851 pui32Registers, 2852 pui32Registers,
2852 psPDumpTASignatureRegistersIN->pui32Registers, 2853 psPDumpTASignatureRegistersIN->hRegisters,
2853 ui32RegisterArraySize) != PVRSRV_OK) 2854 ui32RegisterArraySize) != PVRSRV_OK)
2854 { 2855 {
2855 PVR_DPF((PVR_DBG_ERROR, "PDumpTASignatureRegistersBW: CopyFromUserWrapper failed")); 2856 PVR_DPF((PVR_DBG_ERROR, "PDumpTASignatureRegistersBW: CopyFromUserWrapper failed"));