gxm: msaa support, fix wrong file path

This commit is contained in:
olebeck 2025-08-12 21:40:20 +02:00
parent 81c030d379
commit 0d04ba60bf
6 changed files with 18 additions and 15 deletions

View File

@ -7,6 +7,6 @@ void VITA_SetupDefaultConfigOverrides(dictionary* p_dictionary)
{
SDL_Log("Overriding default config for VITA");
iniparser_set(p_dictionary, "isle:diskpath", "ux0:data/isledecompile/DATA/disk");
iniparser_set(p_dictionary, "isle:cdpath", "ux0:data/isledecompile/");
iniparser_set(p_dictionary, "isle:diskpath", "ux0:data/isledecomp/DATA/disk");
iniparser_set(p_dictionary, "isle:cdpath", "ux0:data/isledecomp/");
}

View File

@ -30,7 +30,7 @@ bool Vita_ShowSimpleMessageBox(SDL_MessageBoxFlags flags, const char* title, con
if (!gxm) {
gxm = (GXMContext*) SDL_malloc(sizeof(GXMContext));
}
if (ret = gxm->init(); ret < 0) {
if (ret = gxm->init(SCE_GXM_MULTISAMPLE_NONE); ret < 0) {
return false;
}

View File

@ -76,7 +76,7 @@ typedef struct GXMContext {
void swap_display();
void copy_frontbuffer();
int init();
int init(SceGxmMultisampleMode msaaMode);
void destroy();
void clear(float r, float g, float b, bool new_scene);
void* alloc(size_t size, size_t align);

View File

@ -36,7 +36,6 @@ extern bool g_dpadRight;
#define VITA_GXM_COLOR_FORMAT SCE_GXM_COLOR_FORMAT_A8B8G8R8
#define VITA_GXM_PIXEL_FORMAT SCE_DISPLAY_PIXELFORMAT_A8B8G8R8
const SceGxmMultisampleMode msaaMode = SCE_GXM_MULTISAMPLE_NONE;
#define SCE_GXM_PRECOMPUTED_ALIGNMENT 16
@ -181,7 +180,7 @@ int gxm_library_init()
GXMContext* gxm;
int GXMContext::init()
int GXMContext::init(SceGxmMultisampleMode msaaMode)
{
if (this->context) {
return 0;
@ -475,7 +474,7 @@ int GXMContext::init()
this->shaderPatcher,
this->colorFragmentProgramId,
SCE_GXM_OUTPUT_REGISTER_FORMAT_UCHAR4,
SCE_GXM_MULTISAMPLE_NONE,
msaaMode,
NULL,
planeVertexProgramGxp,
&this->colorFragmentProgram
@ -489,7 +488,7 @@ int GXMContext::init()
this->shaderPatcher,
this->imageFragmentProgramId,
SCE_GXM_OUTPUT_REGISTER_FORMAT_UCHAR4,
SCE_GXM_MULTISAMPLE_NONE,
msaaMode,
&blendInfoTransparent,
planeVertexProgramGxp,
&this->imageFragmentProgram
@ -669,27 +668,31 @@ void GXMContext::swap_display()
this->backBufferIndex = (this->backBufferIndex + 1) % GXM_DISPLAY_BUFFER_COUNT;
}
Direct3DRMRenderer* GXMRenderer::Create(DWORD width, DWORD height)
Direct3DRMRenderer* GXMRenderer::Create(DWORD width, DWORD height, DWORD msaaSamples)
{
int ret = gxm_library_init();
if (ret < 0) {
return nullptr;
}
return new GXMRenderer(width, height);
return new GXMRenderer(width, height, msaaSamples);
}
GXMRenderer::GXMRenderer(DWORD width, DWORD height)
GXMRenderer::GXMRenderer(DWORD width, DWORD height, DWORD msaaSamples)
{
m_width = VITA_GXM_SCREEN_WIDTH;
m_height = VITA_GXM_SCREEN_HEIGHT;
m_virtualWidth = width;
m_virtualHeight = height;
SceGxmMultisampleMode msaaMode = SCE_GXM_MULTISAMPLE_NONE;
if(msaaSamples == 2) msaaSamples = SCE_GXM_MULTISAMPLE_2X;
if(msaaSamples == 4) msaaSamples = SCE_GXM_MULTISAMPLE_4X;
int ret;
if (!gxm) {
gxm = (GXMContext*) SDL_malloc(sizeof(GXMContext));
}
ret = SCE_ERR(gxm->init);
ret = SCE_ERR(gxm->init, msaaMode);
if (ret < 0) {
return;
}

View File

@ -64,7 +64,7 @@ Direct3DRMRenderer* CreateDirect3DRMRenderer(
#endif
#ifdef USE_GXM
if (SDL_memcmp(guid, &GXM_GUID, sizeof(GUID)) == 0) {
return GXMRenderer::Create(DDSDesc.dwWidth, DDSDesc.dwHeight);
return GXMRenderer::Create(DDSDesc.dwWidth, DDSDesc.dwHeight, d3d->GetMSAASamples());
}
#endif
return nullptr;

View File

@ -51,8 +51,8 @@ struct GXMSceneLightUniform {
class GXMRenderer : public Direct3DRMRenderer {
public:
static Direct3DRMRenderer* Create(DWORD width, DWORD height);
GXMRenderer(DWORD width, DWORD height);
static Direct3DRMRenderer* Create(DWORD width, DWORD height, DWORD msaaSamples);
GXMRenderer(DWORD width, DWORD height, DWORD msaaSamples);
~GXMRenderer() override;
void PushLights(const SceneLight* lightsArray, size_t count) override;