Files
pspsdk/src/gu/vram.c
Francisco Javier Trujillo Mata 55714928f0 Some clean ups and defines
2025-05-10 19:17:10 +02:00

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()));
}