Cleanup Xbox 360 code from d3d_ctx

This commit is contained in:
twinaphex 2018-03-02 17:03:34 +01:00
parent dbf2fae5c1
commit dfdbc00a84
2 changed files with 49 additions and 95 deletions

View File

@ -46,6 +46,7 @@
#ifndef _XBOX #ifndef _XBOX
#define HAVE_MONITOR #define HAVE_MONITOR
#define HAVE_WINDOW #define HAVE_WINDOW
#define D3D9_PRESENTATIONINTERVAL D3DRS_PRESENTINTERVAL
#endif #endif
#ifdef HAVE_MENU #ifdef HAVE_MENU
@ -62,6 +63,10 @@ static LPDIRECT3D9 g_pD3D9;
void *dinput; void *dinput;
#ifdef _XBOX
static bool d3d9_widescreen_mode = false;
#endif
static bool d3d9_set_resize(d3d_video_t *d3d, static bool d3d9_set_resize(d3d_video_t *d3d,
unsigned new_width, unsigned new_height) unsigned new_width, unsigned new_height)
{ {
@ -603,7 +608,7 @@ static void d3d9_get_video_size(d3d_video_t *d3d,
*height = 480; *height = 480;
} }
widescreen_mode = video_mode.fIsWideScreen; d3d9_widescreen_mode = video_mode.fIsWideScreen;
} }
#endif #endif
@ -679,10 +684,8 @@ void d3d_make_d3dpp(void *data,
#ifdef _XBOX #ifdef _XBOX
d3dpp->MultiSampleType = D3DMULTISAMPLE_NONE; d3dpp->MultiSampleType = D3DMULTISAMPLE_NONE;
d3dpp->EnableAutoDepthStencil = FALSE; d3dpp->EnableAutoDepthStencil = FALSE;
#if 0 if (!d3d9_widescreen_mode)
if (!widescreen_mode)
d3dpp->Flags |= D3DPRESENTFLAG_NO_LETTERBOX; d3dpp->Flags |= D3DPRESENTFLAG_NO_LETTERBOX;
#endif
d3dpp->MultiSampleQuality = 0; d3dpp->MultiSampleQuality = 0;
#endif #endif
} }
@ -960,7 +963,7 @@ static void d3d9_set_nonblock_state(void *data, bool state)
#ifdef _XBOX #ifdef _XBOX
d3d_set_render_state(d3d->dev, d3d_set_render_state(d3d->dev,
XBOX_PRESENTATIONINTERVAL, D3D9_PRESENTATIONINTERVAL,
interval ? interval ?
D3DPRESENT_INTERVAL_ONE : D3DPRESENT_INTERVAL_IMMEDIATE D3DPRESENT_INTERVAL_ONE : D3DPRESENT_INTERVAL_IMMEDIATE
); );

View File

@ -36,26 +36,13 @@
#ifdef _MSC_VER #ifdef _MSC_VER
#ifndef _XBOX #ifndef _XBOX
#ifndef HAVE_DYLIB
#pragma comment( lib, "d3d9" )
#pragma comment( lib, "d3dx9" )
#endif
#ifdef HAVE_CG
#pragma comment( lib, "cgd3d9" )
#endif
#pragma comment( lib, "dxguid" ) #pragma comment( lib, "dxguid" )
#endif #endif
#endif #endif
#if defined(_XBOX1) #if defined(_XBOX)
#define XBOX_PRESENTATIONINTERVAL D3DRS_PRESENTATIONINTERVAL #define XBOX_PRESENTATIONINTERVAL D3DRS_PRESENTATIONINTERVAL
#define PresentationInterval FullScreen_PresentationInterval #define PresentationInterval FullScreen_PresentationInterval
#elif defined(_XBOX360)
#define XBOX_PRESENTATIONINTERVAL D3DRS_PRESENTINTERVAL
#endif
#ifdef _XBOX
static bool widescreen_mode = false;
#endif #endif
typedef struct gfx_ctx_d3d_data typedef struct gfx_ctx_d3d_data
@ -200,10 +187,6 @@ static bool gfx_ctx_d3d_bind_api(void *data,
if (api == GFX_CTX_DIRECT3D8_API) if (api == GFX_CTX_DIRECT3D8_API)
return true; return true;
break; break;
case GFX_CTX_DIRECT3D9_API:
if (api == GFX_CTX_DIRECT3D9_API)
return true;
break;
default: default:
break; break;
} }
@ -281,97 +264,65 @@ static void gfx_ctx_d3d_get_video_size(void *data,
unsigned *width, unsigned *height) unsigned *width, unsigned *height)
{ {
#ifdef _XBOX #ifdef _XBOX
#ifdef _XBOX360
XVIDEO_MODE video_mode;
#endif
d3d_video_t *d3d = (d3d_video_t*)data; d3d_video_t *d3d = (d3d_video_t*)data;
DWORD video_mode = XGetVideoFlags();
(void)width; *width = 640;
(void)height; *height = 480;
#if defined(_XBOX360) widescreen_mode = false;
XGetVideoMode(&video_mode);
*width = video_mode.dwDisplayWidth; /* Only valid in PAL mode, not valid for HDTV modes! */
*height = video_mode.dwDisplayHeight;
d3d->resolution_hd_enable = false; if(XGetVideoStandard() == XC_VIDEO_STANDARD_PAL_I)
if(video_mode.fIsHiDef)
{ {
*width = 1280; /* Check for 16:9 mode (PAL REGION) */
*height = 720; if(video_mode & XC_VIDEO_FLAGS_WIDESCREEN)
d3d->resolution_hd_enable = true; {
*width = 720;
//60 Hz, 720x480i
if(video_mode & XC_VIDEO_FLAGS_PAL_60Hz)
*height = 480;
else //50 Hz, 720x576i
*height = 576;
widescreen_mode = true;
}
} }
else else
{ {
*width = 640; /* Check for 16:9 mode (NTSC REGIONS) */
*height = 480; if(video_mode & XC_VIDEO_FLAGS_WIDESCREEN)
{
*width = 720;
*height = 480;
widescreen_mode = true;
}
} }
widescreen_mode = video_mode.fIsWideScreen; if(XGetAVPack() == XC_AV_PACK_HDTV)
#elif defined(_XBOX1)
{ {
DWORD video_mode = XGetVideoFlags(); if(video_mode & XC_VIDEO_FLAGS_HDTV_480p)
*width = 640;
*height = 480;
widescreen_mode = false;
/* Only valid in PAL mode, not valid for HDTV modes! */
if(XGetVideoStandard() == XC_VIDEO_STANDARD_PAL_I)
{ {
/* Check for 16:9 mode (PAL REGION) */ *width = 640;
if(video_mode & XC_VIDEO_FLAGS_WIDESCREEN) *height = 480;
{ widescreen_mode = false;
*width = 720; d3d->resolution_hd_enable = true;
//60 Hz, 720x480i
if(video_mode & XC_VIDEO_FLAGS_PAL_60Hz)
*height = 480;
else //50 Hz, 720x576i
*height = 576;
widescreen_mode = true;
}
} }
else else if(video_mode & XC_VIDEO_FLAGS_HDTV_720p)
{ {
/* Check for 16:9 mode (NTSC REGIONS) */ *width = 1280;
if(video_mode & XC_VIDEO_FLAGS_WIDESCREEN) *height = 720;
{ widescreen_mode = true;
*width = 720; d3d->resolution_hd_enable = true;
*height = 480;
widescreen_mode = true;
}
} }
else if(video_mode & XC_VIDEO_FLAGS_HDTV_1080i)
if(XGetAVPack() == XC_AV_PACK_HDTV)
{ {
if(video_mode & XC_VIDEO_FLAGS_HDTV_480p) *width = 1920;
{ *height = 1080;
*width = 640; widescreen_mode = true;
*height = 480; d3d->resolution_hd_enable = true;
widescreen_mode = false;
d3d->resolution_hd_enable = true;
}
else if(video_mode & XC_VIDEO_FLAGS_HDTV_720p)
{
*width = 1280;
*height = 720;
widescreen_mode = true;
d3d->resolution_hd_enable = true;
}
else if(video_mode & XC_VIDEO_FLAGS_HDTV_1080i)
{
*width = 1920;
*height = 1080;
widescreen_mode = true;
d3d->resolution_hd_enable = true;
}
} }
} }
#endif #endif
#endif
} }
static void gfx_ctx_d3d_swap_interval(void *data, unsigned interval) static void gfx_ctx_d3d_swap_interval(void *data, unsigned interval)