(XDK) Move xdk_d3d_generate_pp to xdk_ctx.c

This commit is contained in:
twinaphex 2014-01-09 13:40:17 +01:00
parent 5c5948b42b
commit 64474142dd
2 changed files with 78 additions and 77 deletions

View File

@ -34,6 +34,84 @@
#define XBOX_PRESENTATIONINTERVAL D3DRS_PRESENTINTERVAL
#endif
void xdk_d3d_generate_pp(D3DPRESENT_PARAMETERS *d3dpp, const video_info_t *video)
{
xdk_d3d_video_t *d3d = (xdk_d3d_video_t*)driver.video_data;
memset(d3dpp, 0, sizeof(*d3dpp));
d3d->texture_fmt = video->rgb32 ? D3DFMT_X8R8G8B8 : D3DFMT_LIN_R5G6B5;
d3d->base_size = video->rgb32 ? sizeof(uint32_t) : sizeof(uint16_t);
unsigned width, height;
width = 0;
height = 0;
if (d3d->ctx_driver)
d3d->ctx_driver->get_video_size(&width, &height);
d3dpp->BackBufferWidth = d3d->win_width = width;
d3dpp->BackBufferHeight = d3d->win_height = height;
#if defined(_XBOX1)
// Get the "video mode"
DWORD video_mode = XGetVideoFlags();
// Check if we are able to use progressive mode
if (video_mode & XC_VIDEO_FLAGS_HDTV_480p)
d3dpp->Flags = D3DPRESENTFLAG_PROGRESSIVE;
else
d3dpp->Flags = D3DPRESENTFLAG_INTERLACED;
// Only valid in PAL mode, not valid for HDTV modes!
if (XGetVideoStandard() == XC_VIDEO_STANDARD_PAL_I)
{
if (video_mode & XC_VIDEO_FLAGS_PAL_60Hz)
d3dpp->FullScreen_RefreshRateInHz = 60;
else
d3dpp->FullScreen_RefreshRateInHz = 50;
}
if (XGetAVPack() == XC_AV_PACK_HDTV)
{
if (video_mode & XC_VIDEO_FLAGS_HDTV_480p)
d3dpp->Flags = D3DPRESENTFLAG_PROGRESSIVE;
else if (video_mode & XC_VIDEO_FLAGS_HDTV_720p)
d3dpp->Flags = D3DPRESENTFLAG_PROGRESSIVE;
else if (video_mode & XC_VIDEO_FLAGS_HDTV_1080i)
d3dpp->Flags = D3DPRESENTFLAG_INTERLACED;
}
if (g_extern.lifecycle_state & MODE_MENU_WIDESCREEN)
d3dpp->Flags |= D3DPRESENTFLAG_WIDESCREEN;
d3dpp->BackBufferFormat = D3DFMT_X8R8G8B8;
d3dpp->FullScreen_PresentationInterval = d3d->vsync ? D3DPRESENT_INTERVAL_ONE : D3DPRESENT_INTERVAL_IMMEDIATE;
d3dpp->SwapEffect = D3DSWAPEFFECT_COPY;
#elif defined(_XBOX360)
if (!(g_extern.lifecycle_state & (1ULL << MODE_MENU_WIDESCREEN)))
d3dpp->Flags |= D3DPRESENTFLAG_NO_LETTERBOX;
if (g_extern.console.screen.gamma_correction)
{
d3dpp->BackBufferFormat = (D3DFORMAT)MAKESRGBFMT(d3d->texture_fmt);
d3dpp->FrontBufferFormat = (D3DFORMAT)MAKESRGBFMT(D3DFMT_LE_X8R8G8B8);
}
else
{
d3dpp->BackBufferFormat = d3d->texture_fmt;
d3dpp->FrontBufferFormat = D3DFMT_LE_X8R8G8B8;
}
d3dpp->MultiSampleQuality = 0;
d3dpp->PresentationInterval = d3d->vsync ? D3DPRESENT_INTERVAL_ONE : D3DPRESENT_INTERVAL_IMMEDIATE;
d3dpp->SwapEffect = D3DSWAPEFFECT_DISCARD;
#endif
d3dpp->BackBufferCount = 2;
d3dpp->MultiSampleType = D3DMULTISAMPLE_NONE;
d3dpp->EnableAutoDepthStencil = FALSE;
}
static void gfx_ctx_xdk_set_swap_interval(unsigned interval)
{
#ifdef _XBOX

View File

@ -371,83 +371,6 @@ static bool xdk_d3d_set_shader(void *data, enum rarch_shader_type type, const ch
return true;
}
void xdk_d3d_generate_pp(D3DPRESENT_PARAMETERS *d3dpp, const video_info_t *video)
{
xdk_d3d_video_t *d3d = (xdk_d3d_video_t*)driver.video_data;
memset(d3dpp, 0, sizeof(*d3dpp));
d3d->texture_fmt = video->rgb32 ? D3DFMT_X8R8G8B8 : D3DFMT_LIN_R5G6B5;
d3d->base_size = video->rgb32 ? sizeof(uint32_t) : sizeof(uint16_t);
unsigned width, height;
width = 0;
height = 0;
if (d3d->ctx_driver)
d3d->ctx_driver->get_video_size(&width, &height);
d3dpp->BackBufferWidth = d3d->win_width = width;
d3dpp->BackBufferHeight = d3d->win_height = height;
#if defined(_XBOX1)
// Get the "video mode"
DWORD video_mode = XGetVideoFlags();
// Check if we are able to use progressive mode
if (video_mode & XC_VIDEO_FLAGS_HDTV_480p)
d3dpp->Flags = D3DPRESENTFLAG_PROGRESSIVE;
else
d3dpp->Flags = D3DPRESENTFLAG_INTERLACED;
// Only valid in PAL mode, not valid for HDTV modes!
if (XGetVideoStandard() == XC_VIDEO_STANDARD_PAL_I)
{
if (video_mode & XC_VIDEO_FLAGS_PAL_60Hz)
d3dpp->FullScreen_RefreshRateInHz = 60;
else
d3dpp->FullScreen_RefreshRateInHz = 50;
}
if (XGetAVPack() == XC_AV_PACK_HDTV)
{
if (video_mode & XC_VIDEO_FLAGS_HDTV_480p)
d3dpp->Flags = D3DPRESENTFLAG_PROGRESSIVE;
else if (video_mode & XC_VIDEO_FLAGS_HDTV_720p)
d3dpp->Flags = D3DPRESENTFLAG_PROGRESSIVE;
else if (video_mode & XC_VIDEO_FLAGS_HDTV_1080i)
d3dpp->Flags = D3DPRESENTFLAG_INTERLACED;
}
if (g_extern.lifecycle_state & MODE_MENU_WIDESCREEN)
d3dpp->Flags |= D3DPRESENTFLAG_WIDESCREEN;
d3dpp->BackBufferFormat = D3DFMT_X8R8G8B8;
d3dpp->FullScreen_PresentationInterval = d3d->vsync ? D3DPRESENT_INTERVAL_ONE : D3DPRESENT_INTERVAL_IMMEDIATE;
d3dpp->SwapEffect = D3DSWAPEFFECT_COPY;
#elif defined(_XBOX360)
if (!(g_extern.lifecycle_state & (1ULL << MODE_MENU_WIDESCREEN)))
d3dpp->Flags |= D3DPRESENTFLAG_NO_LETTERBOX;
if (g_extern.console.screen.gamma_correction)
{
d3dpp->BackBufferFormat = (D3DFORMAT)MAKESRGBFMT(d3d->texture_fmt);
d3dpp->FrontBufferFormat = (D3DFORMAT)MAKESRGBFMT(D3DFMT_LE_X8R8G8B8);
}
else
{
d3dpp->BackBufferFormat = d3d->texture_fmt;
d3dpp->FrontBufferFormat = D3DFMT_LE_X8R8G8B8;
}
d3dpp->MultiSampleQuality = 0;
d3dpp->PresentationInterval = d3d->vsync ? D3DPRESENT_INTERVAL_ONE : D3DPRESENT_INTERVAL_IMMEDIATE;
d3dpp->SwapEffect = D3DSWAPEFFECT_DISCARD;
#endif
d3dpp->BackBufferCount = 2;
d3dpp->MultiSampleType = D3DMULTISAMPLE_NONE;
d3dpp->EnableAutoDepthStencil = FALSE;
}
static void xdk_d3d_init_textures(void *data, const video_info_t *video)
{
HRESULT ret;