mirror of
https://github.com/pspdev/pspsdk.git
synced 2026-01-11 16:28:41 +00:00
52 lines
1.3 KiB
C
52 lines
1.3 KiB
C
/*
|
|
* PSP Software Development Kit - https://github.com/pspdev
|
|
* -----------------------------------------------------------------------
|
|
* Licensed under the BSD license, see LICENSE in PSPSDK root for details.
|
|
*
|
|
* Copyright (c) 2010 Dan Peori
|
|
*/
|
|
|
|
#include <pspge.h>
|
|
#include <pspgu.h>
|
|
|
|
#define ALIGNMENT 16
|
|
|
|
static unsigned int staticOffset = 0;
|
|
|
|
static unsigned int getMemorySize(unsigned int width, unsigned int height, unsigned int psm)
|
|
{
|
|
switch (psm)
|
|
{
|
|
case GU_PSM_T4:
|
|
return (width * height) >> 1;
|
|
case GU_PSM_T8:
|
|
return width * height;
|
|
case GU_PSM_5650:
|
|
case GU_PSM_5551:
|
|
case GU_PSM_4444:
|
|
case GU_PSM_T16:
|
|
return 2 * width * height;
|
|
case GU_PSM_8888:
|
|
case GU_PSM_T32:
|
|
return 4 * width * height;
|
|
default:
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
void *guGetStaticVramBuffer(unsigned int width, unsigned int height, unsigned int psm)
|
|
{
|
|
unsigned int memSize = getMemorySize(width, height, psm);
|
|
staticOffset = (staticOffset + (ALIGNMENT - 1)) & ~(ALIGNMENT - 1);
|
|
void *result = (void *)staticOffset;
|
|
staticOffset += memSize;
|
|
|
|
return result;
|
|
}
|
|
|
|
void *guGetStaticVramTexture(unsigned int width, unsigned int height, unsigned int psm)
|
|
{
|
|
void *result = guGetStaticVramBuffer(width, height, psm);
|
|
return (void *)(((unsigned int)result) + ((unsigned int)sceGeEdramGetAddr()));
|
|
}
|