aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/pvr/handle.c
diff options
context:
space:
mode:
authorRodrigo Obregon <robregon@ti.com>2011-08-25 03:00:15 -0400
committerPaolo Pisati <paolo.pisati@canonical.com>2012-08-17 04:18:37 -0400
commit10544db2e8800cd0f7c9b48d50ecc2070a9ed019 (patch)
tree3df850016a4708ffd956b2cbbe60a168f78c853b /drivers/gpu/pvr/handle.c
parent2d8710c0d6d3e8a537676decab8cb51d1343f2f8 (diff)
OMAP4: SGX-KM: Update DDK version to 1.7.17.3556
This patch updates the DDK to version 1.7.17.3556 The corresponding change in the user side most be in place for this DDK to work. Change-Id: I57ab5c29e7cf89bfce2388428914cc1f1474be6d Signed-off-by: Rodrigo Obregon <robregon@ti.com>
Diffstat (limited to 'drivers/gpu/pvr/handle.c')
-rw-r--r--drivers/gpu/pvr/handle.c292
1 files changed, 221 insertions, 71 deletions
diff --git a/drivers/gpu/pvr/handle.c b/drivers/gpu/pvr/handle.c
index 5e34af5b280..de80394384c 100644
--- a/drivers/gpu/pvr/handle.c
+++ b/drivers/gpu/pvr/handle.c
@@ -24,7 +24,7 @@
24 * 24 *
25 ******************************************************************************/ 25 ******************************************************************************/
26 26
27#ifdef PVR_SECURE_HANDLES 27#if defined(PVR_SECURE_HANDLES) || defined (SUPPORT_SID_INTERFACE)
28#include <stddef.h> 28#include <stddef.h>
29 29
30#include "services_headers.h" 30#include "services_headers.h"
@@ -47,8 +47,14 @@
47 47
48#define INDEX_IS_VALID(psBase, i) ((i) < (psBase)->ui32TotalHandCount) 48#define INDEX_IS_VALID(psBase, i) ((i) < (psBase)->ui32TotalHandCount)
49 49
50#define INDEX_TO_HANDLE(i) ((IMG_HANDLE)((i) + 1)) 50#if defined (SUPPORT_SID_INTERFACE)
51#define INDEX_TO_HANDLE(i) ((IMG_SID)((i) + 1))
51#define HANDLE_TO_INDEX(h) ((IMG_UINT32)(h) - 1) 52#define HANDLE_TO_INDEX(h) ((IMG_UINT32)(h) - 1)
53#else
54#define INDEX_TO_HANDLE(i) ((IMG_HANDLE)((IMG_UINTPTR_T)(i) + 1))
55#define HANDLE_TO_INDEX(h) ((IMG_UINT32)(IMG_UINTPTR_T)(h) - 1)
56
57#endif
52 58
53#define INDEX_TO_BLOCK_INDEX(i) DIVIDE_BY_BLOCK_SIZE(i) 59#define INDEX_TO_BLOCK_INDEX(i) DIVIDE_BY_BLOCK_SIZE(i)
54#define BLOCK_INDEX_TO_INDEX(i) MULTIPLY_BY_BLOCK_SIZE(i) 60#define BLOCK_INDEX_TO_INDEX(i) MULTIPLY_BY_BLOCK_SIZE(i)
@@ -108,7 +114,11 @@ struct sHandleList
108{ 114{
109 IMG_UINT32 ui32Prev; 115 IMG_UINT32 ui32Prev;
110 IMG_UINT32 ui32Next; 116 IMG_UINT32 ui32Next;
117#if defined (SUPPORT_SID_INTERFACE)
118 IMG_SID hParent;
119#else
111 IMG_HANDLE hParent; 120 IMG_HANDLE hParent;
121#endif
112}; 122};
113 123
114enum ePVRSRVInternalHandleFlag 124enum ePVRSRVInternalHandleFlag
@@ -217,7 +227,11 @@ typedef IMG_UINTPTR_T HAND_KEY[HAND_KEY_LEN];
217#pragma inline(HandleListInit) 227#pragma inline(HandleListInit)
218#endif 228#endif
219static INLINE 229static INLINE
230#if defined (SUPPORT_SID_INTERFACE)
231IMG_VOID HandleListInit(IMG_UINT32 ui32Index, struct sHandleList *psList, IMG_SID hParent)
232#else
220IMG_VOID HandleListInit(IMG_UINT32 ui32Index, struct sHandleList *psList, IMG_HANDLE hParent) 233IMG_VOID HandleListInit(IMG_UINT32 ui32Index, struct sHandleList *psList, IMG_HANDLE hParent)
234#endif
221{ 235{
222 psList->ui32Next = ui32Index; 236 psList->ui32Next = ui32Index;
223 psList->ui32Prev = ui32Index; 237 psList->ui32Prev = ui32Index;
@@ -259,7 +273,7 @@ IMG_BOOL HandleListIsEmpty(IMG_UINT32 ui32Index, struct sHandleList *psList)
259 IMG_BOOL bIsEmpty2; 273 IMG_BOOL bIsEmpty2;
260 274
261 bIsEmpty2 = (IMG_BOOL)(psList->ui32Prev == ui32Index); 275 bIsEmpty2 = (IMG_BOOL)(psList->ui32Prev == ui32Index);
262 PVR_ASSERT(bIsEmpty == bIsEmpty2); 276 PVR_ASSERT(bIsEmpty == bIsEmpty2)
263 } 277 }
264#endif 278#endif
265 279
@@ -273,7 +287,7 @@ IMG_BOOL HandleListIsEmpty(IMG_UINT32 ui32Index, struct sHandleList *psList)
273static INLINE 287static INLINE
274IMG_BOOL NoChildren(struct sHandle *psHandle) 288IMG_BOOL NoChildren(struct sHandle *psHandle)
275{ 289{
276 PVR_ASSERT(psHandle->sChildren.hParent == HANDLE_PTR_TO_HANDLE(psHandle)); 290 PVR_ASSERT(psHandle->sChildren.hParent == HANDLE_PTR_TO_HANDLE(psHandle))
277 291
278 return HandleListIsEmpty(HANDLE_PTR_TO_INDEX(psHandle), &psHandle->sChildren); 292 return HandleListIsEmpty(HANDLE_PTR_TO_INDEX(psHandle), &psHandle->sChildren);
279} 293}
@@ -286,13 +300,13 @@ IMG_BOOL NoParent(struct sHandle *psHandle)
286{ 300{
287 if (HandleListIsEmpty(HANDLE_PTR_TO_INDEX(psHandle), &psHandle->sSiblings)) 301 if (HandleListIsEmpty(HANDLE_PTR_TO_INDEX(psHandle), &psHandle->sSiblings))
288 { 302 {
289 PVR_ASSERT(psHandle->sSiblings.hParent == IMG_NULL); 303 PVR_ASSERT(psHandle->sSiblings.hParent == IMG_NULL)
290 304
291 return IMG_TRUE; 305 return IMG_TRUE;
292 } 306 }
293 else 307 else
294 { 308 {
295 PVR_ASSERT(psHandle->sSiblings.hParent != IMG_NULL); 309 PVR_ASSERT(psHandle->sSiblings.hParent != IMG_NULL)
296 } 310 }
297 return IMG_FALSE; 311 return IMG_FALSE;
298} 312}
@@ -301,7 +315,11 @@ IMG_BOOL NoParent(struct sHandle *psHandle)
301#pragma inline(ParentHandle) 315#pragma inline(ParentHandle)
302#endif 316#endif
303static INLINE 317static INLINE
318#if defined (SUPPORT_SID_INTERFACE)
319IMG_SID ParentHandle(struct sHandle *psHandle)
320#else
304IMG_HANDLE ParentHandle(struct sHandle *psHandle) 321IMG_HANDLE ParentHandle(struct sHandle *psHandle)
322#endif
305{ 323{
306 return psHandle->sSiblings.hParent; 324 return psHandle->sSiblings.hParent;
307} 325}
@@ -318,9 +336,9 @@ IMG_VOID HandleListInsertBefore(PVRSRV_HANDLE_BASE *psBase, IMG_UINT32 ui32InsIn
318 336
319 struct sHandleList *psPrevIns = LIST_PTR_FROM_INDEX_AND_OFFSET(psBase, psIns->ui32Prev, ui32ParentIndex, uiParentOffset, uiEntryOffset); 337 struct sHandleList *psPrevIns = LIST_PTR_FROM_INDEX_AND_OFFSET(psBase, psIns->ui32Prev, ui32ParentIndex, uiParentOffset, uiEntryOffset);
320 338
321 PVR_ASSERT(psEntry->hParent == IMG_NULL); 339 PVR_ASSERT(psEntry->hParent == IMG_NULL)
322 PVR_ASSERT(ui32InsIndex == psPrevIns->ui32Next); 340 PVR_ASSERT(ui32InsIndex == psPrevIns->ui32Next)
323 PVR_ASSERT(LIST_PTR_FROM_INDEX_AND_OFFSET(psBase, ui32ParentIndex, ui32ParentIndex, uiParentOffset, uiParentOffset)->hParent == INDEX_TO_HANDLE(ui32ParentIndex)); 341 PVR_ASSERT(LIST_PTR_FROM_INDEX_AND_OFFSET(psBase, ui32ParentIndex, ui32ParentIndex, uiParentOffset, uiParentOffset)->hParent == INDEX_TO_HANDLE(ui32ParentIndex))
324 342
325 psEntry->ui32Prev = psIns->ui32Prev; 343 psEntry->ui32Prev = psIns->ui32Prev;
326 psIns->ui32Prev = ui32EntryIndex; 344 psIns->ui32Prev = ui32EntryIndex;
@@ -338,7 +356,7 @@ IMG_VOID AdoptChild(PVRSRV_HANDLE_BASE *psBase, struct sHandle *psParent, struct
338{ 356{
339 IMG_UINT32 ui32Parent = HANDLE_TO_INDEX(psParent->sChildren.hParent); 357 IMG_UINT32 ui32Parent = HANDLE_TO_INDEX(psParent->sChildren.hParent);
340 358
341 PVR_ASSERT(ui32Parent == HANDLE_PTR_TO_INDEX(psParent)); 359 PVR_ASSERT(ui32Parent == HANDLE_PTR_TO_INDEX(psParent))
342 360
343 HandleListInsertBefore(psBase, ui32Parent, &psParent->sChildren, offsetof(struct sHandle, sChildren), HANDLE_PTR_TO_INDEX(psChild), &psChild->sSiblings, offsetof(struct sHandle, sSiblings), ui32Parent); 361 HandleListInsertBefore(psBase, ui32Parent, &psParent->sChildren, offsetof(struct sHandle, sChildren), HANDLE_PTR_TO_INDEX(psChild), &psChild->sSiblings, offsetof(struct sHandle, sSiblings), ui32Parent);
344 362
@@ -357,7 +375,7 @@ IMG_VOID HandleListRemove(PVRSRV_HANDLE_BASE *psBase, IMG_UINT32 ui32EntryIndex,
357 struct sHandleList *psNext = LIST_PTR_FROM_INDEX_AND_OFFSET(psBase, psEntry->ui32Next, HANDLE_TO_INDEX(psEntry->hParent), uiParentOffset, uiEntryOffset); 375 struct sHandleList *psNext = LIST_PTR_FROM_INDEX_AND_OFFSET(psBase, psEntry->ui32Next, HANDLE_TO_INDEX(psEntry->hParent), uiParentOffset, uiEntryOffset);
358 376
359 377
360 PVR_ASSERT(psEntry->hParent != IMG_NULL); 378 PVR_ASSERT(psEntry->hParent != IMG_NULL)
361 379
362 psPrev->ui32Next = psEntry->ui32Next; 380 psPrev->ui32Next = psEntry->ui32Next;
363 psNext->ui32Prev = psEntry->ui32Prev; 381 psNext->ui32Prev = psEntry->ui32Prev;
@@ -384,7 +402,7 @@ PVRSRV_ERROR HandleListIterate(PVRSRV_HANDLE_BASE *psBase, struct sHandleList *p
384 IMG_UINT32 ui32Index; 402 IMG_UINT32 ui32Index;
385 IMG_UINT32 ui32Parent = HANDLE_TO_INDEX(psHead->hParent); 403 IMG_UINT32 ui32Parent = HANDLE_TO_INDEX(psHead->hParent);
386 404
387 PVR_ASSERT(psHead->hParent != IMG_NULL); 405 PVR_ASSERT(psHead->hParent != IMG_NULL)
388 406
389 407
390 for(ui32Index = psHead->ui32Next; ui32Index != ui32Parent; ) 408 for(ui32Index = psHead->ui32Next; ui32Index != ui32Parent; )
@@ -394,7 +412,7 @@ PVRSRV_ERROR HandleListIterate(PVRSRV_HANDLE_BASE *psBase, struct sHandleList *p
394 struct sHandleList *psEntry = LIST_PTR_FROM_INDEX_AND_OFFSET(psBase, ui32Index, ui32Parent, uiParentOffset, uiEntryOffset); 412 struct sHandleList *psEntry = LIST_PTR_FROM_INDEX_AND_OFFSET(psBase, ui32Index, ui32Parent, uiParentOffset, uiEntryOffset);
395 PVRSRV_ERROR eError; 413 PVRSRV_ERROR eError;
396 414
397 PVR_ASSERT(psEntry->hParent == psHead->hParent); 415 PVR_ASSERT(psEntry->hParent == psHead->hParent)
398 416
399 ui32Index = psEntry->ui32Next; 417 ui32Index = psEntry->ui32Next;
400 418
@@ -421,7 +439,11 @@ PVRSRV_ERROR IterateOverChildren(PVRSRV_HANDLE_BASE *psBase, struct sHandle *psP
421#pragma inline(GetHandleStructure) 439#pragma inline(GetHandleStructure)
422#endif 440#endif
423static INLINE 441static INLINE
442#if defined (SUPPORT_SID_INTERFACE)
443PVRSRV_ERROR GetHandleStructure(PVRSRV_HANDLE_BASE *psBase, struct sHandle **ppsHandle, IMG_SID hHandle, PVRSRV_HANDLE_TYPE eType)
444#else
424PVRSRV_ERROR GetHandleStructure(PVRSRV_HANDLE_BASE *psBase, struct sHandle **ppsHandle, IMG_HANDLE hHandle, PVRSRV_HANDLE_TYPE eType) 445PVRSRV_ERROR GetHandleStructure(PVRSRV_HANDLE_BASE *psBase, struct sHandle **ppsHandle, IMG_HANDLE hHandle, PVRSRV_HANDLE_TYPE eType)
446#endif
425{ 447{
426 IMG_UINT32 ui32Index = HANDLE_TO_INDEX(hHandle); 448 IMG_UINT32 ui32Index = HANDLE_TO_INDEX(hHandle);
427 struct sHandle *psHandle; 449 struct sHandle *psHandle;
@@ -430,6 +452,9 @@ PVRSRV_ERROR GetHandleStructure(PVRSRV_HANDLE_BASE *psBase, struct sHandle **pps
430 if (!INDEX_IS_VALID(psBase, ui32Index)) 452 if (!INDEX_IS_VALID(psBase, ui32Index))
431 { 453 {
432 PVR_DPF((PVR_DBG_ERROR, "GetHandleStructure: Handle index out of range (%u >= %u)", ui32Index, psBase->ui32TotalHandCount)); 454 PVR_DPF((PVR_DBG_ERROR, "GetHandleStructure: Handle index out of range (%u >= %u)", ui32Index, psBase->ui32TotalHandCount));
455#if defined (SUPPORT_SID_INTERFACE)
456 PVR_DBG_BREAK
457#endif
433 return PVRSRV_ERROR_HANDLE_INDEX_OUT_OF_RANGE; 458 return PVRSRV_ERROR_HANDLE_INDEX_OUT_OF_RANGE;
434 } 459 }
435 460
@@ -437,6 +462,9 @@ PVRSRV_ERROR GetHandleStructure(PVRSRV_HANDLE_BASE *psBase, struct sHandle **pps
437 if (psHandle->eType == PVRSRV_HANDLE_TYPE_NONE) 462 if (psHandle->eType == PVRSRV_HANDLE_TYPE_NONE)
438 { 463 {
439 PVR_DPF((PVR_DBG_ERROR, "GetHandleStructure: Handle not allocated (index: %u)", ui32Index)); 464 PVR_DPF((PVR_DBG_ERROR, "GetHandleStructure: Handle not allocated (index: %u)", ui32Index));
465#if defined (SUPPORT_SID_INTERFACE)
466 PVR_DBG_BREAK
467#endif
440 return PVRSRV_ERROR_HANDLE_NOT_ALLOCATED; 468 return PVRSRV_ERROR_HANDLE_NOT_ALLOCATED;
441 } 469 }
442 470
@@ -444,6 +472,9 @@ PVRSRV_ERROR GetHandleStructure(PVRSRV_HANDLE_BASE *psBase, struct sHandle **pps
444 if (eType != PVRSRV_HANDLE_TYPE_NONE && eType != psHandle->eType) 472 if (eType != PVRSRV_HANDLE_TYPE_NONE && eType != psHandle->eType)
445 { 473 {
446 PVR_DPF((PVR_DBG_ERROR, "GetHandleStructure: Handle type mismatch (%d != %d)", eType, psHandle->eType)); 474 PVR_DPF((PVR_DBG_ERROR, "GetHandleStructure: Handle type mismatch (%d != %d)", eType, psHandle->eType));
475#if defined (SUPPORT_SID_INTERFACE)
476 PVR_DBG_BREAK
477#endif
447 return PVRSRV_ERROR_HANDLE_TYPE_MISMATCH; 478 return PVRSRV_ERROR_HANDLE_TYPE_MISMATCH;
448 } 479 }
449 480
@@ -457,7 +488,11 @@ PVRSRV_ERROR GetHandleStructure(PVRSRV_HANDLE_BASE *psBase, struct sHandle **pps
457#pragma inline(ParentIfPrivate) 488#pragma inline(ParentIfPrivate)
458#endif 489#endif
459static INLINE 490static INLINE
491#if defined (SUPPORT_SID_INTERFACE)
492IMG_SID ParentIfPrivate(struct sHandle *psHandle)
493#else
460IMG_HANDLE ParentIfPrivate(struct sHandle *psHandle) 494IMG_HANDLE ParentIfPrivate(struct sHandle *psHandle)
495#endif
461{ 496{
462 return TEST_ALLOC_FLAG(psHandle, PVRSRV_HANDLE_ALLOC_FLAG_PRIVATE) ? 497 return TEST_ALLOC_FLAG(psHandle, PVRSRV_HANDLE_ALLOC_FLAG_PRIVATE) ?
463 ParentHandle(psHandle) : IMG_NULL; 498 ParentHandle(psHandle) : IMG_NULL;
@@ -467,7 +502,11 @@ IMG_HANDLE ParentIfPrivate(struct sHandle *psHandle)
467#pragma inline(InitKey) 502#pragma inline(InitKey)
468#endif 503#endif
469static INLINE 504static INLINE
505#if defined (SUPPORT_SID_INTERFACE)
506IMG_VOID InitKey(HAND_KEY aKey, PVRSRV_HANDLE_BASE *psBase, IMG_VOID *pvData, PVRSRV_HANDLE_TYPE eType, IMG_SID hParent)
507#else
470IMG_VOID InitKey(HAND_KEY aKey, PVRSRV_HANDLE_BASE *psBase, IMG_VOID *pvData, PVRSRV_HANDLE_TYPE eType, IMG_HANDLE hParent) 508IMG_VOID InitKey(HAND_KEY aKey, PVRSRV_HANDLE_BASE *psBase, IMG_VOID *pvData, PVRSRV_HANDLE_TYPE eType, IMG_HANDLE hParent)
509#endif
471{ 510{
472 PVR_UNREFERENCED_PARAMETER(psBase); 511 PVR_UNREFERENCED_PARAMETER(psBase);
473 512
@@ -502,8 +541,8 @@ PVRSRV_ERROR ReallocHandleArray(PVRSRV_HANDLE_BASE *psBase, IMG_UINT32 ui32NewCo
502 if (((ui32OldCount % HANDLE_BLOCK_SIZE) != 0) || 541 if (((ui32OldCount % HANDLE_BLOCK_SIZE) != 0) ||
503 ((ui32NewCount % HANDLE_BLOCK_SIZE) != 0)) 542 ((ui32NewCount % HANDLE_BLOCK_SIZE) != 0))
504 { 543 {
505 PVR_ASSERT((ui32OldCount % HANDLE_BLOCK_SIZE) == 0); 544 PVR_ASSERT((ui32OldCount % HANDLE_BLOCK_SIZE) == 0)
506 PVR_ASSERT((ui32NewCount % HANDLE_BLOCK_SIZE) == 0); 545 PVR_ASSERT((ui32NewCount % HANDLE_BLOCK_SIZE) == 0)
507 546
508 return PVRSRV_ERROR_INVALID_PARAMS; 547 return PVRSRV_ERROR_INVALID_PARAMS;
509 } 548 }
@@ -511,7 +550,7 @@ PVRSRV_ERROR ReallocHandleArray(PVRSRV_HANDLE_BASE *psBase, IMG_UINT32 ui32NewCo
511 if (ui32NewCount != 0) 550 if (ui32NewCount != 0)
512 { 551 {
513 552
514 eError = OSAllocMem(PVRSRV_OS_PAGEABLE_HEAP, 553 eError = OSAllocMem(PVRSRV_OS_NON_PAGEABLE_HEAP,
515 HANDLE_ARRAY_SIZE(ui32NewCount) * sizeof(struct sHandleIndex), 554 HANDLE_ARRAY_SIZE(ui32NewCount) * sizeof(struct sHandleIndex),
516 (IMG_VOID **)&psNewArray, 555 (IMG_VOID **)&psNewArray,
517 &hNewArrayBlockAlloc, 556 &hNewArrayBlockAlloc,
@@ -550,7 +589,7 @@ PVRSRV_ERROR ReallocHandleArray(PVRSRV_HANDLE_BASE *psBase, IMG_UINT32 ui32NewCo
550 589
551 struct sHandleIndex *psIndex = INDEX_TO_INDEX_STRUCT_PTR(psNewArray, ui32Index); 590 struct sHandleIndex *psIndex = INDEX_TO_INDEX_STRUCT_PTR(psNewArray, ui32Index);
552 591
553 eError = OSAllocMem(PVRSRV_OS_PAGEABLE_HEAP, 592 eError = OSAllocMem(PVRSRV_OS_NON_PAGEABLE_HEAP,
554 sizeof(struct sHandle) * HANDLE_BLOCK_SIZE, 593 sizeof(struct sHandle) * HANDLE_BLOCK_SIZE,
555 (IMG_VOID **)&psIndex->psHandle, 594 (IMG_VOID **)&psIndex->psHandle,
556 &psIndex->hBlockAlloc, 595 &psIndex->hBlockAlloc,
@@ -658,12 +697,12 @@ PVRSRV_ERROR ReallocHandleArray(PVRSRV_HANDLE_BASE *psBase, IMG_UINT32 ui32NewCo
658 } 697 }
659 } 698 }
660 699
661 PVR_ASSERT(psBase->ui32FirstFreeIndex <= psBase->ui32TotalHandCount); 700 PVR_ASSERT(psBase->ui32FirstFreeIndex <= psBase->ui32TotalHandCount)
662 701
663 return PVRSRV_OK; 702 return PVRSRV_OK;
664 703
665error: 704error:
666 PVR_ASSERT(eReturn != PVRSRV_OK); 705 PVR_ASSERT(eReturn != PVRSRV_OK)
667 706
668 if (psNewArray != IMG_NULL) 707 if (psNewArray != IMG_NULL)
669 { 708 {
@@ -714,11 +753,17 @@ static PVRSRV_ERROR FreeHandle(PVRSRV_HANDLE_BASE *psBase, struct sHandle *psHan
714 753
715 if (!TEST_ALLOC_FLAG(psHandle, PVRSRV_HANDLE_ALLOC_FLAG_MULTI) && !BATCHED_HANDLE_PARTIALLY_FREE(psHandle)) 754 if (!TEST_ALLOC_FLAG(psHandle, PVRSRV_HANDLE_ALLOC_FLAG_MULTI) && !BATCHED_HANDLE_PARTIALLY_FREE(psHandle))
716 { 755 {
756#if defined (SUPPORT_SID_INTERFACE)
757 IMG_SID hHandle;
758 hHandle = (IMG_SID) HASH_Remove_Extended(psBase->psHashTab, aKey);
759#else
717 IMG_HANDLE hHandle; 760 IMG_HANDLE hHandle;
718 hHandle = (IMG_HANDLE) HASH_Remove_Extended(psBase->psHashTab, aKey); 761 hHandle = (IMG_HANDLE) HASH_Remove_Extended(psBase->psHashTab, aKey);
719 762
720 PVR_ASSERT(hHandle != IMG_NULL); 763#endif
721 PVR_ASSERT(hHandle == INDEX_TO_HANDLE(ui32Index)); 764
765 PVR_ASSERT(hHandle != IMG_NULL)
766 PVR_ASSERT(hHandle == INDEX_TO_HANDLE(ui32Index))
722 PVR_UNREFERENCED_PARAMETER(hHandle); 767 PVR_UNREFERENCED_PARAMETER(hHandle);
723 } 768 }
724 769
@@ -749,20 +794,20 @@ static PVRSRV_ERROR FreeHandle(PVRSRV_HANDLE_BASE *psBase, struct sHandle *psHan
749 { 794 {
750 if (psBase->ui32FreeHandCount == 0) 795 if (psBase->ui32FreeHandCount == 0)
751 { 796 {
752 PVR_ASSERT(psBase->ui32FirstFreeIndex == 0); 797 PVR_ASSERT(psBase->ui32FirstFreeIndex == 0)
753 PVR_ASSERT(psBase->ui32LastFreeIndexPlusOne == 0); 798 PVR_ASSERT(psBase->ui32LastFreeIndexPlusOne == 0)
754 799
755 psBase->ui32FirstFreeIndex = ui32Index; 800 psBase->ui32FirstFreeIndex = ui32Index;
756 } 801 }
757 else 802 else
758 { 803 {
759 804
760 PVR_ASSERT(psBase->ui32LastFreeIndexPlusOne != 0); 805 PVR_ASSERT(psBase->ui32LastFreeIndexPlusOne != 0)
761 PVR_ASSERT(INDEX_TO_HANDLE_STRUCT_PTR(psBase, psBase->ui32LastFreeIndexPlusOne - 1)->ui32NextIndexPlusOne == 0); 806 PVR_ASSERT(INDEX_TO_HANDLE_STRUCT_PTR(psBase, psBase->ui32LastFreeIndexPlusOne - 1)->ui32NextIndexPlusOne == 0)
762 INDEX_TO_HANDLE_STRUCT_PTR(psBase, psBase->ui32LastFreeIndexPlusOne - 1)->ui32NextIndexPlusOne = ui32Index + 1; 807 INDEX_TO_HANDLE_STRUCT_PTR(psBase, psBase->ui32LastFreeIndexPlusOne - 1)->ui32NextIndexPlusOne = ui32Index + 1;
763 } 808 }
764 809
765 PVR_ASSERT(psHandle->ui32NextIndexPlusOne == 0); 810 PVR_ASSERT(psHandle->ui32NextIndexPlusOne == 0)
766 811
767 812
768 psBase->ui32LastFreeIndexPlusOne = ui32Index + 1; 813 psBase->ui32LastFreeIndexPlusOne = ui32Index + 1;
@@ -771,7 +816,7 @@ static PVRSRV_ERROR FreeHandle(PVRSRV_HANDLE_BASE *psBase, struct sHandle *psHan
771 psBase->ui32FreeHandCount++; 816 psBase->ui32FreeHandCount++;
772 INDEX_TO_FREE_HAND_BLOCK_COUNT(psBase, ui32Index)++; 817 INDEX_TO_FREE_HAND_BLOCK_COUNT(psBase, ui32Index)++;
773 818
774 PVR_ASSERT(INDEX_TO_FREE_HAND_BLOCK_COUNT(psBase, ui32Index)<= HANDLE_BLOCK_SIZE); 819 PVR_ASSERT(INDEX_TO_FREE_HAND_BLOCK_COUNT(psBase, ui32Index)<= HANDLE_BLOCK_SIZE)
775 820
776#ifdef DEBUG 821#ifdef DEBUG
777 { 822 {
@@ -783,7 +828,7 @@ static PVRSRV_ERROR FreeHandle(PVRSRV_HANDLE_BASE *psBase, struct sHandle *psHan
783 ui32FreeHandCount += INDEX_TO_FREE_HAND_BLOCK_COUNT(psBase, ui32BlockedIndex); 828 ui32FreeHandCount += INDEX_TO_FREE_HAND_BLOCK_COUNT(psBase, ui32BlockedIndex);
784 } 829 }
785 830
786 PVR_ASSERT(ui32FreeHandCount == psBase->ui32FreeHandCount); 831 PVR_ASSERT(ui32FreeHandCount == psBase->ui32FreeHandCount)
787 } 832 }
788#endif 833#endif
789 834
@@ -875,15 +920,23 @@ static PVRSRV_ERROR FreeHandleBase(PVRSRV_HANDLE_BASE *psBase)
875#pragma inline(FindHandle) 920#pragma inline(FindHandle)
876#endif 921#endif
877static INLINE 922static INLINE
923#if defined (SUPPORT_SID_INTERFACE)
924IMG_SID FindHandle(PVRSRV_HANDLE_BASE *psBase, IMG_VOID *pvData, PVRSRV_HANDLE_TYPE eType, IMG_SID hParent)
925#else
878IMG_HANDLE FindHandle(PVRSRV_HANDLE_BASE *psBase, IMG_VOID *pvData, PVRSRV_HANDLE_TYPE eType, IMG_HANDLE hParent) 926IMG_HANDLE FindHandle(PVRSRV_HANDLE_BASE *psBase, IMG_VOID *pvData, PVRSRV_HANDLE_TYPE eType, IMG_HANDLE hParent)
927#endif
879{ 928{
880 HAND_KEY aKey; 929 HAND_KEY aKey;
881 930
882 PVR_ASSERT(eType != PVRSRV_HANDLE_TYPE_NONE); 931 PVR_ASSERT(eType != PVRSRV_HANDLE_TYPE_NONE)
883 932
884 InitKey(aKey, psBase, pvData, eType, hParent); 933 InitKey(aKey, psBase, pvData, eType, hParent);
885 934
935#if defined (SUPPORT_SID_INTERFACE)
936 return (IMG_SID) HASH_Retrieve_Extended(psBase->psHashTab, aKey);
937#else
886 return (IMG_HANDLE) HASH_Retrieve_Extended(psBase->psHashTab, aKey); 938 return (IMG_HANDLE) HASH_Retrieve_Extended(psBase->psHashTab, aKey);
939#endif
887} 940}
888 941
889static PVRSRV_ERROR IncreaseHandleArraySize(PVRSRV_HANDLE_BASE *psBase, IMG_UINT32 ui32Delta) 942static PVRSRV_ERROR IncreaseHandleArraySize(PVRSRV_HANDLE_BASE *psBase, IMG_UINT32 ui32Delta)
@@ -893,7 +946,7 @@ static PVRSRV_ERROR IncreaseHandleArraySize(PVRSRV_HANDLE_BASE *psBase, IMG_UINT
893 IMG_UINT32 ui32NewTotalHandCount = psBase->ui32TotalHandCount + ui32DeltaAdjusted; 946 IMG_UINT32 ui32NewTotalHandCount = psBase->ui32TotalHandCount + ui32DeltaAdjusted;
894; 947;
895 948
896 PVR_ASSERT(ui32Delta != 0); 949 PVR_ASSERT(ui32Delta != 0)
897 950
898 951
899 if (ui32NewTotalHandCount > psBase->ui32MaxIndexPlusOne || ui32NewTotalHandCount <= psBase->ui32TotalHandCount) 952 if (ui32NewTotalHandCount > psBase->ui32MaxIndexPlusOne || ui32NewTotalHandCount <= psBase->ui32TotalHandCount)
@@ -909,7 +962,7 @@ static PVRSRV_ERROR IncreaseHandleArraySize(PVRSRV_HANDLE_BASE *psBase, IMG_UINT
909 } 962 }
910 } 963 }
911 964
912 PVR_ASSERT(ui32DeltaAdjusted >= ui32Delta); 965 PVR_ASSERT(ui32DeltaAdjusted >= ui32Delta)
913 966
914 967
915 eError = ReallocHandleArray(psBase, ui32NewTotalHandCount); 968 eError = ReallocHandleArray(psBase, ui32NewTotalHandCount);
@@ -941,28 +994,36 @@ static PVRSRV_ERROR EnsureFreeHandles(PVRSRV_HANDLE_BASE *psBase, IMG_UINT32 ui3
941 return PVRSRV_OK; 994 return PVRSRV_OK;
942} 995}
943 996
997#if defined (SUPPORT_SID_INTERFACE)
998static PVRSRV_ERROR AllocHandle(PVRSRV_HANDLE_BASE *psBase, IMG_SID *phHandle, IMG_VOID *pvData, PVRSRV_HANDLE_TYPE eType, PVRSRV_HANDLE_ALLOC_FLAG eFlag, IMG_SID hParent)
999#else
944static PVRSRV_ERROR AllocHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE *phHandle, IMG_VOID *pvData, PVRSRV_HANDLE_TYPE eType, PVRSRV_HANDLE_ALLOC_FLAG eFlag, IMG_HANDLE hParent) 1000static PVRSRV_ERROR AllocHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE *phHandle, IMG_VOID *pvData, PVRSRV_HANDLE_TYPE eType, PVRSRV_HANDLE_ALLOC_FLAG eFlag, IMG_HANDLE hParent)
1001#endif
945{ 1002{
946 IMG_UINT32 ui32NewIndex = DEFAULT_MAX_INDEX_PLUS_ONE; 1003 IMG_UINT32 ui32NewIndex = DEFAULT_MAX_INDEX_PLUS_ONE;
947 struct sHandle *psNewHandle = IMG_NULL; 1004 struct sHandle *psNewHandle = IMG_NULL;
1005#if defined (SUPPORT_SID_INTERFACE)
1006 IMG_SID hHandle;
1007#else
948 IMG_HANDLE hHandle; 1008 IMG_HANDLE hHandle;
1009#endif
949 HAND_KEY aKey; 1010 HAND_KEY aKey;
950 PVRSRV_ERROR eError; 1011 PVRSRV_ERROR eError;
951 1012
952 1013
953 PVR_ASSERT(eType != PVRSRV_HANDLE_TYPE_NONE); 1014 PVR_ASSERT(eType != PVRSRV_HANDLE_TYPE_NONE)
954 PVR_ASSERT(psBase != IMG_NULL); 1015 PVR_ASSERT(psBase != IMG_NULL)
955 PVR_ASSERT(psBase->psHashTab != IMG_NULL); 1016 PVR_ASSERT(psBase->psHashTab != IMG_NULL)
956 1017
957 if (!TEST_FLAG(eFlag, PVRSRV_HANDLE_ALLOC_FLAG_MULTI)) 1018 if (!TEST_FLAG(eFlag, PVRSRV_HANDLE_ALLOC_FLAG_MULTI))
958 { 1019 {
959 1020
960 PVR_ASSERT(FindHandle(psBase, pvData, eType, hParent) == IMG_NULL); 1021 PVR_ASSERT(FindHandle(psBase, pvData, eType, hParent) == IMG_NULL)
961 } 1022 }
962 1023
963 if (psBase->ui32FreeHandCount == 0 && HANDLES_BATCHED(psBase)) 1024 if (psBase->ui32FreeHandCount == 0 && HANDLES_BATCHED(psBase))
964 { 1025 {
965 PVR_DPF((PVR_DBG_WARNING, "AllocHandle: Handle batch size (%u) was too small, allocating additional space", psBase->ui32HandBatchSize)); 1026 PVR_DPF((PVR_DBG_WARNING, "AllocHandle: Handle batch size (%u) was too small, allocating additional space", psBase->ui32HandBatchSize));
966 } 1027 }
967 1028
968 1029
@@ -988,7 +1049,7 @@ static PVRSRV_ERROR AllocHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE *phHandle
988 1049
989 1050
990 1051
991 PVR_ASSERT((psBase->ui32FirstFreeIndex % HANDLE_BLOCK_SIZE) == 0); 1052 PVR_ASSERT((psBase->ui32FirstFreeIndex % HANDLE_BLOCK_SIZE) == 0)
992 1053
993 for (ui32BlockedIndex = ROUND_DOWN_TO_MULTIPLE_OF_BLOCK_SIZE(psBase->ui32FirstFreeIndex); ui32BlockedIndex < psBase->ui32TotalHandCount; ui32BlockedIndex += HANDLE_BLOCK_SIZE) 1054 for (ui32BlockedIndex = ROUND_DOWN_TO_MULTIPLE_OF_BLOCK_SIZE(psBase->ui32FirstFreeIndex); ui32BlockedIndex < psBase->ui32TotalHandCount; ui32BlockedIndex += HANDLE_BLOCK_SIZE)
994 { 1055 {
@@ -1009,9 +1070,9 @@ static PVRSRV_ERROR AllocHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE *phHandle
1009 } 1070 }
1010 } 1071 }
1011 psBase->ui32FirstFreeIndex = 0; 1072 psBase->ui32FirstFreeIndex = 0;
1012 PVR_ASSERT(ui32NewIndex < psBase->ui32TotalHandCount); 1073 PVR_ASSERT(ui32NewIndex < psBase->ui32TotalHandCount)
1013 } 1074 }
1014 PVR_ASSERT(psNewHandle != IMG_NULL); 1075 PVR_ASSERT(psNewHandle != IMG_NULL)
1015 1076
1016 1077
1017 hHandle = INDEX_TO_HANDLE(ui32NewIndex); 1078 hHandle = INDEX_TO_HANDLE(ui32NewIndex);
@@ -1033,8 +1094,8 @@ static PVRSRV_ERROR AllocHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE *phHandle
1033 1094
1034 psBase->ui32FreeHandCount--; 1095 psBase->ui32FreeHandCount--;
1035 1096
1036 PVR_ASSERT(INDEX_TO_FREE_HAND_BLOCK_COUNT(psBase, ui32NewIndex) <= HANDLE_BLOCK_SIZE); 1097 PVR_ASSERT(INDEX_TO_FREE_HAND_BLOCK_COUNT(psBase, ui32NewIndex) <= HANDLE_BLOCK_SIZE)
1037 PVR_ASSERT(INDEX_TO_FREE_HAND_BLOCK_COUNT(psBase, ui32NewIndex) > 0); 1098 PVR_ASSERT(INDEX_TO_FREE_HAND_BLOCK_COUNT(psBase, ui32NewIndex) > 0)
1038 1099
1039 INDEX_TO_FREE_HAND_BLOCK_COUNT(psBase, ui32NewIndex)--; 1100 INDEX_TO_FREE_HAND_BLOCK_COUNT(psBase, ui32NewIndex)--;
1040 1101
@@ -1044,8 +1105,8 @@ static PVRSRV_ERROR AllocHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE *phHandle
1044 1105
1045 if (psBase->ui32FreeHandCount == 0) 1106 if (psBase->ui32FreeHandCount == 0)
1046 { 1107 {
1047 PVR_ASSERT(psBase->ui32FirstFreeIndex == ui32NewIndex); 1108 PVR_ASSERT(psBase->ui32FirstFreeIndex == ui32NewIndex)
1048 PVR_ASSERT(psBase->ui32LastFreeIndexPlusOne == (ui32NewIndex + 1)); 1109 PVR_ASSERT(psBase->ui32LastFreeIndexPlusOne == (ui32NewIndex + 1))
1049 1110
1050 psBase->ui32LastFreeIndexPlusOne = 0; 1111 psBase->ui32LastFreeIndexPlusOne = 0;
1051 psBase->ui32FirstFreeIndex = 0; 1112 psBase->ui32FirstFreeIndex = 0;
@@ -1060,7 +1121,7 @@ static PVRSRV_ERROR AllocHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE *phHandle
1060 } 1121 }
1061 1122
1062 1123
1063 PVR_ASSERT(psNewHandle->ui32Index == ui32NewIndex); 1124 PVR_ASSERT(psNewHandle->ui32Index == ui32NewIndex)
1064 1125
1065 1126
1066 psNewHandle->eType = eType; 1127 psNewHandle->eType = eType;
@@ -1070,12 +1131,12 @@ static PVRSRV_ERROR AllocHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE *phHandle
1070 1131
1071 InitParentList(psNewHandle); 1132 InitParentList(psNewHandle);
1072#if defined(DEBUG) 1133#if defined(DEBUG)
1073 PVR_ASSERT(NoChildren(psNewHandle)); 1134 PVR_ASSERT(NoChildren(psNewHandle))
1074#endif 1135#endif
1075 1136
1076 InitChildEntry(psNewHandle); 1137 InitChildEntry(psNewHandle);
1077#if defined(DEBUG) 1138#if defined(DEBUG)
1078 PVR_ASSERT(NoParent(psNewHandle)); 1139 PVR_ASSERT(NoParent(psNewHandle))
1079#endif 1140#endif
1080 1141
1081 if (HANDLES_BATCHED(psBase)) 1142 if (HANDLES_BATCHED(psBase))
@@ -1099,12 +1160,24 @@ static PVRSRV_ERROR AllocHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE *phHandle
1099 return PVRSRV_OK; 1160 return PVRSRV_OK;
1100} 1161}
1101 1162
1163#if defined (SUPPORT_SID_INTERFACE)
1164PVRSRV_ERROR PVRSRVAllocHandle(PVRSRV_HANDLE_BASE *psBase, IMG_SID *phHandle, IMG_VOID *pvData, PVRSRV_HANDLE_TYPE eType, PVRSRV_HANDLE_ALLOC_FLAG eFlag)
1165#else
1102PVRSRV_ERROR PVRSRVAllocHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE *phHandle, IMG_VOID *pvData, PVRSRV_HANDLE_TYPE eType, PVRSRV_HANDLE_ALLOC_FLAG eFlag) 1166PVRSRV_ERROR PVRSRVAllocHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE *phHandle, IMG_VOID *pvData, PVRSRV_HANDLE_TYPE eType, PVRSRV_HANDLE_ALLOC_FLAG eFlag)
1167#endif
1103{ 1168{
1169#if defined (SUPPORT_SID_INTERFACE)
1170 IMG_SID hHandle;
1171#else
1104 IMG_HANDLE hHandle; 1172 IMG_HANDLE hHandle;
1173#endif
1105 PVRSRV_ERROR eError; 1174 PVRSRV_ERROR eError;
1106 1175
1176#if defined (SUPPORT_SID_INTERFACE)
1177 *phHandle = 0;
1178#else
1107 *phHandle = IMG_NULL; 1179 *phHandle = IMG_NULL;
1180#endif
1108 1181
1109 if (HANDLES_BATCHED(psBase)) 1182 if (HANDLES_BATCHED(psBase))
1110 { 1183 {
@@ -1113,13 +1186,17 @@ PVRSRV_ERROR PVRSRVAllocHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE *phHandle,
1113 } 1186 }
1114 1187
1115 1188
1116 PVR_ASSERT(eType != PVRSRV_HANDLE_TYPE_NONE); 1189 PVR_ASSERT(eType != PVRSRV_HANDLE_TYPE_NONE)
1117 1190
1118 if (!TEST_FLAG(eFlag, PVRSRV_HANDLE_ALLOC_FLAG_MULTI)) 1191 if (!TEST_FLAG(eFlag, PVRSRV_HANDLE_ALLOC_FLAG_MULTI))
1119 { 1192 {
1120 1193
1121 hHandle = FindHandle(psBase, pvData, eType, IMG_NULL); 1194 hHandle = FindHandle(psBase, pvData, eType, IMG_NULL);
1195#if defined (SUPPORT_SID_INTERFACE)
1196 if (hHandle != 0)
1197#else
1122 if (hHandle != IMG_NULL) 1198 if (hHandle != IMG_NULL)
1199#endif
1123 { 1200 {
1124 struct sHandle *psHandle; 1201 struct sHandle *psHandle;
1125 1202
@@ -1137,12 +1214,16 @@ PVRSRV_ERROR PVRSRVAllocHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE *phHandle,
1137 eError = PVRSRV_OK; 1214 eError = PVRSRV_OK;
1138 goto exit_ok; 1215 goto exit_ok;
1139 } 1216 }
1217
1218#if defined (SUPPORT_SID_INTERFACE)
1219 PVR_DBG_BREAK
1220#endif
1140 return PVRSRV_ERROR_HANDLE_NOT_SHAREABLE; 1221 return PVRSRV_ERROR_HANDLE_NOT_SHAREABLE;
1141 } 1222 }
1142 } 1223 }
1143 1224
1144 eError = AllocHandle(psBase, phHandle, pvData, eType, eFlag, IMG_NULL); 1225 eError = AllocHandle(psBase, phHandle, pvData, eType, eFlag, IMG_NULL);
1145 1226
1146exit_ok: 1227exit_ok:
1147 if (HANDLES_BATCHED(psBase) && (eError == PVRSRV_OK)) 1228 if (HANDLES_BATCHED(psBase) && (eError == PVRSRV_OK))
1148 { 1229 {
@@ -1152,15 +1233,26 @@ exit_ok:
1152 return eError; 1233 return eError;
1153} 1234}
1154 1235
1236#if defined (SUPPORT_SID_INTERFACE)
1237PVRSRV_ERROR PVRSRVAllocSubHandle(PVRSRV_HANDLE_BASE *psBase, IMG_SID *phHandle, IMG_VOID *pvData, PVRSRV_HANDLE_TYPE eType, PVRSRV_HANDLE_ALLOC_FLAG eFlag, IMG_SID hParent)
1238#else
1155PVRSRV_ERROR PVRSRVAllocSubHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE *phHandle, IMG_VOID *pvData, PVRSRV_HANDLE_TYPE eType, PVRSRV_HANDLE_ALLOC_FLAG eFlag, IMG_HANDLE hParent) 1239PVRSRV_ERROR PVRSRVAllocSubHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE *phHandle, IMG_VOID *pvData, PVRSRV_HANDLE_TYPE eType, PVRSRV_HANDLE_ALLOC_FLAG eFlag, IMG_HANDLE hParent)
1240#endif
1156{ 1241{
1157 struct sHandle *psPHand; 1242 struct sHandle *psPHand;
1158 struct sHandle *psCHand; 1243 struct sHandle *psCHand;
1159 PVRSRV_ERROR eError; 1244 PVRSRV_ERROR eError;
1245#if defined (SUPPORT_SID_INTERFACE)
1246 IMG_SID hParentKey;
1247 IMG_SID hHandle;
1248
1249 *phHandle = 0;
1250#else
1160 IMG_HANDLE hParentKey; 1251 IMG_HANDLE hParentKey;
1161 IMG_HANDLE hHandle; 1252 IMG_HANDLE hHandle;
1162 1253
1163 *phHandle = IMG_NULL; 1254 *phHandle = IMG_NULL;
1255#endif
1164 1256
1165 if (HANDLES_BATCHED(psBase)) 1257 if (HANDLES_BATCHED(psBase))
1166 { 1258 {
@@ -1169,7 +1261,7 @@ PVRSRV_ERROR PVRSRVAllocSubHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE *phHand
1169 } 1261 }
1170 1262
1171 1263
1172 PVR_ASSERT(eType != PVRSRV_HANDLE_TYPE_NONE); 1264 PVR_ASSERT(eType != PVRSRV_HANDLE_TYPE_NONE)
1173 1265
1174 hParentKey = TEST_FLAG(eFlag, PVRSRV_HANDLE_ALLOC_FLAG_PRIVATE) ? 1266 hParentKey = TEST_FLAG(eFlag, PVRSRV_HANDLE_ALLOC_FLAG_PRIVATE) ?
1175 hParent : IMG_NULL; 1267 hParent : IMG_NULL;
@@ -1185,7 +1277,11 @@ PVRSRV_ERROR PVRSRVAllocSubHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE *phHand
1185 { 1277 {
1186 1278
1187 hHandle = FindHandle(psBase, pvData, eType, hParentKey); 1279 hHandle = FindHandle(psBase, pvData, eType, hParentKey);
1280#if defined (SUPPORT_SID_INTERFACE)
1281 if (hHandle != 0)
1282#else
1188 if (hHandle != IMG_NULL) 1283 if (hHandle != IMG_NULL)
1284#endif
1189 { 1285 {
1190 struct sHandle *psCHandle; 1286 struct sHandle *psCHandle;
1191 PVRSRV_ERROR eErr; 1287 PVRSRV_ERROR eErr;
@@ -1197,7 +1293,7 @@ PVRSRV_ERROR PVRSRVAllocSubHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE *phHand
1197 return eErr; 1293 return eErr;
1198 } 1294 }
1199 1295
1200 PVR_ASSERT(hParentKey != IMG_NULL && ParentHandle(HANDLE_TO_HANDLE_STRUCT_PTR(psBase, hHandle)) == hParent); 1296 PVR_ASSERT(hParentKey != IMG_NULL && ParentHandle(HANDLE_TO_HANDLE_STRUCT_PTR(psBase, hHandle)) == hParent)
1201 1297
1202 1298
1203 if (TEST_FLAG(psCHandle->eFlag & eFlag, PVRSRV_HANDLE_ALLOC_FLAG_SHARED) && ParentHandle(HANDLE_TO_HANDLE_STRUCT_PTR(psBase, hHandle)) == hParent) 1299 if (TEST_FLAG(psCHandle->eFlag & eFlag, PVRSRV_HANDLE_ALLOC_FLAG_SHARED) && ParentHandle(HANDLE_TO_HANDLE_STRUCT_PTR(psBase, hHandle)) == hParent)
@@ -1205,6 +1301,9 @@ PVRSRV_ERROR PVRSRVAllocSubHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE *phHand
1205 *phHandle = hHandle; 1301 *phHandle = hHandle;
1206 goto exit_ok; 1302 goto exit_ok;
1207 } 1303 }
1304#if defined (SUPPORT_SID_INTERFACE)
1305 PVR_DBG_BREAK
1306#endif
1208 return PVRSRV_ERROR_HANDLE_NOT_SHAREABLE; 1307 return PVRSRV_ERROR_HANDLE_NOT_SHAREABLE;
1209 } 1308 }
1210 } 1309 }
@@ -1233,14 +1332,26 @@ exit_ok:
1233 return PVRSRV_OK; 1332 return PVRSRV_OK;
1234} 1333}
1235 1334
1335#if defined (SUPPORT_SID_INTERFACE)
1336PVRSRV_ERROR PVRSRVFindHandle(PVRSRV_HANDLE_BASE *psBase, IMG_SID *phHandle, IMG_VOID *pvData, PVRSRV_HANDLE_TYPE eType)
1337#else
1236PVRSRV_ERROR PVRSRVFindHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE *phHandle, IMG_VOID *pvData, PVRSRV_HANDLE_TYPE eType) 1338PVRSRV_ERROR PVRSRVFindHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE *phHandle, IMG_VOID *pvData, PVRSRV_HANDLE_TYPE eType)
1339#endif
1237{ 1340{
1341#if defined (SUPPORT_SID_INTERFACE)
1342 IMG_SID hHandle;
1343#else
1238 IMG_HANDLE hHandle; 1344 IMG_HANDLE hHandle;
1345#endif
1239 1346
1240 PVR_ASSERT(eType != PVRSRV_HANDLE_TYPE_NONE); 1347 PVR_ASSERT(eType != PVRSRV_HANDLE_TYPE_NONE)
1241 1348
1242 1349
1350#if defined (SUPPORT_SID_INTERFACE)
1351 hHandle = (IMG_SID) FindHandle(psBase, pvData, eType, IMG_NULL);
1352#else
1243 hHandle = (IMG_HANDLE) FindHandle(psBase, pvData, eType, IMG_NULL); 1353 hHandle = (IMG_HANDLE) FindHandle(psBase, pvData, eType, IMG_NULL);
1354#endif
1244 if (hHandle == IMG_NULL) 1355 if (hHandle == IMG_NULL)
1245 { 1356 {
1246 return PVRSRV_ERROR_HANDLE_NOT_FOUND; 1357 return PVRSRV_ERROR_HANDLE_NOT_FOUND;
@@ -1251,7 +1362,11 @@ PVRSRV_ERROR PVRSRVFindHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE *phHandle,
1251 return PVRSRV_OK; 1362 return PVRSRV_OK;
1252} 1363}
1253 1364
1365#if defined (SUPPORT_SID_INTERFACE)
1366PVRSRV_ERROR PVRSRVLookupHandleAnyType(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *ppvData, PVRSRV_HANDLE_TYPE *peType, IMG_SID hHandle)
1367#else
1254PVRSRV_ERROR PVRSRVLookupHandleAnyType(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *ppvData, PVRSRV_HANDLE_TYPE *peType, IMG_HANDLE hHandle) 1368PVRSRV_ERROR PVRSRVLookupHandleAnyType(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *ppvData, PVRSRV_HANDLE_TYPE *peType, IMG_HANDLE hHandle)
1369#endif
1255{ 1370{
1256 struct sHandle *psHandle; 1371 struct sHandle *psHandle;
1257 PVRSRV_ERROR eError; 1372 PVRSRV_ERROR eError;
@@ -1260,6 +1375,9 @@ PVRSRV_ERROR PVRSRVLookupHandleAnyType(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *pp
1260 if (eError != PVRSRV_OK) 1375 if (eError != PVRSRV_OK)
1261 { 1376 {
1262 PVR_DPF((PVR_DBG_ERROR, "PVRSRVLookupHandleAnyType: Error looking up handle (%d)", eError)); 1377 PVR_DPF((PVR_DBG_ERROR, "PVRSRVLookupHandleAnyType: Error looking up handle (%d)", eError));
1378#if defined (SUPPORT_SID_INTERFACE)
1379 PVR_DBG_BREAK
1380#endif
1263 return eError; 1381 return eError;
1264 } 1382 }
1265 1383
@@ -1269,17 +1387,27 @@ PVRSRV_ERROR PVRSRVLookupHandleAnyType(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *pp
1269 return PVRSRV_OK; 1387 return PVRSRV_OK;
1270} 1388}
1271 1389
1390#if defined (SUPPORT_SID_INTERFACE)
1391PVRSRV_ERROR PVRSRVLookupHandle(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *ppvData, IMG_SID hHandle, PVRSRV_HANDLE_TYPE eType)
1392#else
1272PVRSRV_ERROR PVRSRVLookupHandle(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *ppvData, IMG_HANDLE hHandle, PVRSRV_HANDLE_TYPE eType) 1393PVRSRV_ERROR PVRSRVLookupHandle(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *ppvData, IMG_HANDLE hHandle, PVRSRV_HANDLE_TYPE eType)
1394#endif
1273{ 1395{
1274 struct sHandle *psHandle; 1396 struct sHandle *psHandle;
1275 PVRSRV_ERROR eError; 1397 PVRSRV_ERROR eError;
1276 1398
1277 PVR_ASSERT(eType != PVRSRV_HANDLE_TYPE_NONE); 1399 PVR_ASSERT(eType != PVRSRV_HANDLE_TYPE_NONE)
1400#if defined (SUPPORT_SID_INTERFACE)
1401 PVR_ASSERT(hHandle != 0)
1402#endif
1278 1403
1279 eError = GetHandleStructure(psBase, &psHandle, hHandle, eType); 1404 eError = GetHandleStructure(psBase, &psHandle, hHandle, eType);
1280 if (eError != PVRSRV_OK) 1405 if (eError != PVRSRV_OK)
1281 { 1406 {
1282 PVR_DPF((PVR_DBG_ERROR, "PVRSRVLookupHandle: Error looking up handle (%d)", eError)); 1407 PVR_DPF((PVR_DBG_ERROR, "PVRSRVLookupHandle: Error looking up handle (%d)", eError));
1408#if defined (SUPPORT_SID_INTERFACE)
1409 PVR_DBG_BREAK
1410#endif
1283 return eError; 1411 return eError;
1284 } 1412 }
1285 1413
@@ -1288,13 +1416,20 @@ PVRSRV_ERROR PVRSRVLookupHandle(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *ppvData,
1288 return PVRSRV_OK; 1416 return PVRSRV_OK;
1289} 1417}
1290 1418
1419#if defined (SUPPORT_SID_INTERFACE)
1420PVRSRV_ERROR PVRSRVLookupSubHandle(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *ppvData, IMG_SID hHandle, PVRSRV_HANDLE_TYPE eType, IMG_SID hAncestor)
1421#else
1291PVRSRV_ERROR PVRSRVLookupSubHandle(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *ppvData, IMG_HANDLE hHandle, PVRSRV_HANDLE_TYPE eType, IMG_HANDLE hAncestor) 1422PVRSRV_ERROR PVRSRVLookupSubHandle(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *ppvData, IMG_HANDLE hHandle, PVRSRV_HANDLE_TYPE eType, IMG_HANDLE hAncestor)
1423#endif
1292{ 1424{
1293 struct sHandle *psPHand; 1425 struct sHandle *psPHand;
1294 struct sHandle *psCHand; 1426 struct sHandle *psCHand;
1295 PVRSRV_ERROR eError; 1427 PVRSRV_ERROR eError;
1296 1428
1297 PVR_ASSERT(eType != PVRSRV_HANDLE_TYPE_NONE); 1429 PVR_ASSERT(eType != PVRSRV_HANDLE_TYPE_NONE)
1430#if defined (SUPPORT_SID_INTERFACE)
1431 PVR_ASSERT(hHandle != 0)
1432#endif
1298 1433
1299 eError = GetHandleStructure(psBase, &psCHand, hHandle, eType); 1434 eError = GetHandleStructure(psBase, &psCHand, hHandle, eType);
1300 if (eError != PVRSRV_OK) 1435 if (eError != PVRSRV_OK)
@@ -1319,12 +1454,16 @@ PVRSRV_ERROR PVRSRVLookupSubHandle(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *ppvDat
1319 return PVRSRV_OK; 1454 return PVRSRV_OK;
1320} 1455}
1321 1456
1457#if defined (SUPPORT_SID_INTERFACE)
1458PVRSRV_ERROR PVRSRVGetParentHandle(PVRSRV_HANDLE_BASE *psBase, IMG_SID *phParent, IMG_SID hHandle, PVRSRV_HANDLE_TYPE eType)
1459#else
1322PVRSRV_ERROR PVRSRVGetParentHandle(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *phParent, IMG_HANDLE hHandle, PVRSRV_HANDLE_TYPE eType) 1460PVRSRV_ERROR PVRSRVGetParentHandle(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *phParent, IMG_HANDLE hHandle, PVRSRV_HANDLE_TYPE eType)
1461#endif
1323{ 1462{
1324 struct sHandle *psHandle; 1463 struct sHandle *psHandle;
1325 PVRSRV_ERROR eError; 1464 PVRSRV_ERROR eError;
1326 1465
1327 PVR_ASSERT(eType != PVRSRV_HANDLE_TYPE_NONE); 1466 PVR_ASSERT(eType != PVRSRV_HANDLE_TYPE_NONE)
1328 1467
1329 eError = GetHandleStructure(psBase, &psHandle, hHandle, eType); 1468 eError = GetHandleStructure(psBase, &psHandle, hHandle, eType);
1330 if (eError != PVRSRV_OK) 1469 if (eError != PVRSRV_OK)
@@ -1338,17 +1477,24 @@ PVRSRV_ERROR PVRSRVGetParentHandle(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *phPare
1338 return PVRSRV_OK; 1477 return PVRSRV_OK;
1339} 1478}
1340 1479
1480#if defined (SUPPORT_SID_INTERFACE)
1481PVRSRV_ERROR PVRSRVLookupAndReleaseHandle(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *ppvData, IMG_SID hHandle, PVRSRV_HANDLE_TYPE eType)
1482#else
1341PVRSRV_ERROR PVRSRVLookupAndReleaseHandle(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *ppvData, IMG_HANDLE hHandle, PVRSRV_HANDLE_TYPE eType) 1483PVRSRV_ERROR PVRSRVLookupAndReleaseHandle(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *ppvData, IMG_HANDLE hHandle, PVRSRV_HANDLE_TYPE eType)
1484#endif
1342{ 1485{
1343 struct sHandle *psHandle; 1486 struct sHandle *psHandle;
1344 PVRSRV_ERROR eError; 1487 PVRSRV_ERROR eError;
1345 1488
1346 PVR_ASSERT(eType != PVRSRV_HANDLE_TYPE_NONE); 1489 PVR_ASSERT(eType != PVRSRV_HANDLE_TYPE_NONE)
1347 1490
1348 eError = GetHandleStructure(psBase, &psHandle, hHandle, eType); 1491 eError = GetHandleStructure(psBase, &psHandle, hHandle, eType);
1349 if (eError != PVRSRV_OK) 1492 if (eError != PVRSRV_OK)
1350 { 1493 {
1351 PVR_DPF((PVR_DBG_ERROR, "PVRSRVLookupAndReleaseHandle: Error looking up handle (%d)", eError)); 1494 PVR_DPF((PVR_DBG_ERROR, "PVRSRVLookupAndReleaseHandle: Error looking up handle (%d)", eError));
1495#if defined (SUPPORT_SID_INTERFACE)
1496 PVR_DBG_BREAK
1497#endif
1352 return eError; 1498 return eError;
1353 } 1499 }
1354 1500
@@ -1359,12 +1505,16 @@ PVRSRV_ERROR PVRSRVLookupAndReleaseHandle(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID
1359 return eError; 1505 return eError;
1360} 1506}
1361 1507
1508#if defined (SUPPORT_SID_INTERFACE)
1509PVRSRV_ERROR PVRSRVReleaseHandle(PVRSRV_HANDLE_BASE *psBase, IMG_SID hHandle, PVRSRV_HANDLE_TYPE eType)
1510#else
1362PVRSRV_ERROR PVRSRVReleaseHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE hHandle, PVRSRV_HANDLE_TYPE eType) 1511PVRSRV_ERROR PVRSRVReleaseHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE hHandle, PVRSRV_HANDLE_TYPE eType)
1512#endif
1363{ 1513{
1364 struct sHandle *psHandle; 1514 struct sHandle *psHandle;
1365 PVRSRV_ERROR eError; 1515 PVRSRV_ERROR eError;
1366 1516
1367 PVR_ASSERT(eType != PVRSRV_HANDLE_TYPE_NONE); 1517 PVR_ASSERT(eType != PVRSRV_HANDLE_TYPE_NONE)
1368 1518
1369 eError = GetHandleStructure(psBase, &psHandle, hHandle, eType); 1519 eError = GetHandleStructure(psBase, &psHandle, hHandle, eType);
1370 if (eError != PVRSRV_OK) 1520 if (eError != PVRSRV_OK)
@@ -1406,11 +1556,11 @@ PVRSRV_ERROR PVRSRVNewHandleBatch(PVRSRV_HANDLE_BASE *psBase, IMG_UINT32 ui32Bat
1406 1556
1407 psBase->ui32TotalHandCountPreBatch = psBase->ui32TotalHandCount; 1557 psBase->ui32TotalHandCountPreBatch = psBase->ui32TotalHandCount;
1408 1558
1409 PVR_ASSERT(psBase->ui32BatchHandAllocFailures == 0); 1559 PVR_ASSERT(psBase->ui32BatchHandAllocFailures == 0)
1410 1560
1411 PVR_ASSERT(psBase->ui32FirstBatchIndexPlusOne == 0); 1561 PVR_ASSERT(psBase->ui32FirstBatchIndexPlusOne == 0)
1412 1562
1413 PVR_ASSERT(HANDLES_BATCHED(psBase)); 1563 PVR_ASSERT(HANDLES_BATCHED(psBase))
1414 1564
1415 return PVRSRV_OK; 1565 return PVRSRV_OK;
1416} 1566}
@@ -1437,14 +1587,14 @@ static PVRSRV_ERROR PVRSRVHandleBatchCommitOrRelease(PVRSRV_HANDLE_BASE *psBase,
1437 bCommitBatch = IMG_FALSE; 1587 bCommitBatch = IMG_FALSE;
1438 } 1588 }
1439 1589
1440 PVR_ASSERT(psBase->ui32BatchHandAllocFailures == 0 || !bCommit); 1590 PVR_ASSERT(psBase->ui32BatchHandAllocFailures == 0 || !bCommit)
1441 1591
1442 ui32IndexPlusOne = psBase->ui32FirstBatchIndexPlusOne; 1592 ui32IndexPlusOne = psBase->ui32FirstBatchIndexPlusOne;
1443 while(ui32IndexPlusOne != 0) 1593 while(ui32IndexPlusOne != 0)
1444 { 1594 {
1445 struct sHandle *psHandle = INDEX_TO_HANDLE_STRUCT_PTR(psBase, ui32IndexPlusOne - 1); 1595 struct sHandle *psHandle = INDEX_TO_HANDLE_STRUCT_PTR(psBase, ui32IndexPlusOne - 1);
1446 IMG_UINT32 ui32NextIndexPlusOne = psHandle->ui32NextIndexPlusOne; 1596 IMG_UINT32 ui32NextIndexPlusOne = psHandle->ui32NextIndexPlusOne;
1447 PVR_ASSERT(BATCHED_HANDLE(psHandle)); 1597 PVR_ASSERT(BATCHED_HANDLE(psHandle))
1448 1598
1449 psHandle->ui32NextIndexPlusOne = 0; 1599 psHandle->ui32NextIndexPlusOne = 0;
1450 1600
@@ -1464,7 +1614,7 @@ static PVRSRV_ERROR PVRSRVHandleBatchCommitOrRelease(PVRSRV_HANDLE_BASE *psBase,
1464 { 1614 {
1465 PVR_DPF((PVR_DBG_ERROR, "PVRSRVHandleBatchCommitOrRelease: Error freeing handle (%d)", eError)); 1615 PVR_DPF((PVR_DBG_ERROR, "PVRSRVHandleBatchCommitOrRelease: Error freeing handle (%d)", eError));
1466 } 1616 }
1467 PVR_ASSERT(eError == PVRSRV_OK); 1617 PVR_ASSERT(eError == PVRSRV_OK)
1468 } 1618 }
1469 else 1619 else
1470 { 1620 {
@@ -1480,7 +1630,7 @@ static PVRSRV_ERROR PVRSRVHandleBatchCommitOrRelease(PVRSRV_HANDLE_BASE *psBase,
1480 { 1630 {
1481 IMG_UINT32 ui32Delta = psBase->ui32TotalHandCount - psBase->ui32TotalHandCountPreBatch; 1631 IMG_UINT32 ui32Delta = psBase->ui32TotalHandCount - psBase->ui32TotalHandCountPreBatch;
1482 1632
1483 PVR_ASSERT(psBase->ui32TotalHandCount > psBase->ui32TotalHandCountPreBatch); 1633 PVR_ASSERT(psBase->ui32TotalHandCount > psBase->ui32TotalHandCountPreBatch)
1484 1634
1485 PVR_DPF((PVR_DBG_WARNING, "PVRSRVHandleBatchCommitOrRelease: The batch size was too small. Batch size was %u, but needs to be %u", psBase->ui32HandBatchSize, psBase->ui32HandBatchSize + ui32Delta)); 1635 PVR_DPF((PVR_DBG_WARNING, "PVRSRVHandleBatchCommitOrRelease: The batch size was too small. Batch size was %u, but needs to be %u", psBase->ui32HandBatchSize, psBase->ui32HandBatchSize + ui32Delta));
1486 1636
@@ -1494,7 +1644,7 @@ static PVRSRV_ERROR PVRSRVHandleBatchCommitOrRelease(PVRSRV_HANDLE_BASE *psBase,
1494 1644
1495 if (psBase->ui32BatchHandAllocFailures != 0 && bCommit) 1645 if (psBase->ui32BatchHandAllocFailures != 0 && bCommit)
1496 { 1646 {
1497 PVR_ASSERT(!bCommitBatch); 1647 PVR_ASSERT(!bCommitBatch)
1498 1648
1499 return PVRSRV_ERROR_HANDLE_BATCH_COMMIT_FAILURE; 1649 return PVRSRV_ERROR_HANDLE_BATCH_COMMIT_FAILURE;
1500 } 1650 }
@@ -1546,9 +1696,9 @@ PVRSRV_ERROR PVRSRVSetMaxHandle(PVRSRV_HANDLE_BASE *psBase, IMG_UINT32 ui32MaxHa
1546 psBase->ui32MaxIndexPlusOne = ui32MaxHandleRounded; 1696 psBase->ui32MaxIndexPlusOne = ui32MaxHandleRounded;
1547 } 1697 }
1548 1698
1549 PVR_ASSERT(psBase->ui32MaxIndexPlusOne != 0); 1699 PVR_ASSERT(psBase->ui32MaxIndexPlusOne != 0)
1550 PVR_ASSERT(psBase->ui32MaxIndexPlusOne <= DEFAULT_MAX_INDEX_PLUS_ONE); 1700 PVR_ASSERT(psBase->ui32MaxIndexPlusOne <= DEFAULT_MAX_INDEX_PLUS_ONE)
1551 PVR_ASSERT((psBase->ui32MaxIndexPlusOne % HANDLE_BLOCK_SIZE) == 0); 1701 PVR_ASSERT((psBase->ui32MaxIndexPlusOne % HANDLE_BLOCK_SIZE) == 0)
1552 1702
1553 return PVRSRV_OK; 1703 return PVRSRV_OK;
1554} 1704}
@@ -1595,7 +1745,7 @@ PVRSRV_ERROR PVRSRVPurgeHandles(PVRSRV_HANDLE_BASE *psBase)
1595 return PVRSRV_ERROR_INVALID_PARAMS; 1745 return PVRSRV_ERROR_INVALID_PARAMS;
1596 } 1746 }
1597 1747
1598 PVR_ASSERT((psBase->ui32TotalHandCount % HANDLE_BLOCK_SIZE) == 0); 1748 PVR_ASSERT((psBase->ui32TotalHandCount % HANDLE_BLOCK_SIZE) == 0)
1599 1749
1600 for (ui32BlockIndex = INDEX_TO_BLOCK_INDEX(psBase->ui32TotalHandCount); ui32BlockIndex != 0; ui32BlockIndex--) 1750 for (ui32BlockIndex = INDEX_TO_BLOCK_INDEX(psBase->ui32TotalHandCount); ui32BlockIndex != 0; ui32BlockIndex--)
1601 { 1751 {
@@ -1629,7 +1779,7 @@ PVRSRV_ERROR PVRSRVAllocHandleBase(PVRSRV_HANDLE_BASE **ppsBase)
1629 IMG_HANDLE hBlockAlloc; 1779 IMG_HANDLE hBlockAlloc;
1630 PVRSRV_ERROR eError; 1780 PVRSRV_ERROR eError;
1631 1781
1632 eError = OSAllocMem(PVRSRV_OS_PAGEABLE_HEAP, 1782 eError = OSAllocMem(PVRSRV_OS_NON_PAGEABLE_HEAP,
1633 sizeof(*psBase), 1783 sizeof(*psBase),
1634 (IMG_PVOID *)&psBase, 1784 (IMG_PVOID *)&psBase,
1635 &hBlockAlloc, 1785 &hBlockAlloc,
@@ -1663,7 +1813,7 @@ PVRSRV_ERROR PVRSRVFreeHandleBase(PVRSRV_HANDLE_BASE *psBase)
1663{ 1813{
1664 PVRSRV_ERROR eError; 1814 PVRSRV_ERROR eError;
1665 1815
1666 PVR_ASSERT(psBase != gpsKernelHandleBase); 1816 PVR_ASSERT(psBase != gpsKernelHandleBase)
1667 1817
1668 eError = FreeHandleBase(psBase); 1818 eError = FreeHandleBase(psBase);
1669 if (eError != PVRSRV_OK) 1819 if (eError != PVRSRV_OK)
@@ -1678,7 +1828,7 @@ PVRSRV_ERROR PVRSRVHandleInit(IMG_VOID)
1678{ 1828{
1679 PVRSRV_ERROR eError; 1829 PVRSRV_ERROR eError;
1680 1830
1681 PVR_ASSERT(gpsKernelHandleBase == IMG_NULL); 1831 PVR_ASSERT(gpsKernelHandleBase == IMG_NULL)
1682 1832
1683 eError = PVRSRVAllocHandleBase(&gpsKernelHandleBase); 1833 eError = PVRSRVAllocHandleBase(&gpsKernelHandleBase);
1684 if (eError != PVRSRV_OK) 1834 if (eError != PVRSRV_OK)