if((physAddr & 0x80000000) || ((physAddr + Bytes) & 0x80000000))
{
- gckOS_Print("gpu virtual memory 0x%x cannot be allocated for external use !\n", physAddr);
+ gckOS_Print("gpu virtual memory 0x%x cannot be allocated in force contiguous request!\n", physAddr);
gckVIDMEM_Free(node);
gctUINT32 alignment;
gctINT bank, i;
gctBOOL acquired = gcvFALSE;
+#if gcdSMALL_BLOCK_SIZE
+ gctBOOL force_allocate = (Type == gcvSURF_TILE_STATUS) || (Type & gcvSURF_VG);
+#endif
gcmkHEADER_ARG("Memory=0x%x Bytes=%lu Alignment=%u Type=%d",
Memory, Bytes, Alignment, Type);
+ Type &= ~gcvSURF_VG;
/* Verify the arguments. */
gcmkVERIFY_OBJECT(Memory, gcvOBJ_VIDMEM);
gcmkVERIFY_ARGUMENT(Bytes > 0);
#endif
#if gcdSMALL_BLOCK_SIZE
- if ((Memory->freeBytes < (Memory->bytes/gcdRATIO_FOR_SMALL_MEMORY))
+ if ((!force_allocate) && (Memory->freeBytes < (Memory->bytes/gcdRATIO_FOR_SMALL_MEMORY))
&& (Bytes >= gcdSMALL_BLOCK_SIZE)
)
{