mirror of
https://github.com/libretro/RetroArch
synced 2025-03-30 07:20:36 +00:00
(360) Add some FBO reiniting logic
This commit is contained in:
parent
c3db8e8c8f
commit
881e440ea6
@ -474,7 +474,11 @@ HRESULT CRetroArchSettings::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled
|
||||
case SETTING_SCALE_ENABLED:
|
||||
g_settings.video.render_to_texture = !g_settings.video.render_to_texture;
|
||||
m_settingslist.SetText(SETTING_SCALE_ENABLED, g_settings.video.render_to_texture ? L"Custom Scaling/Dual Shaders: ON" : L"Custom Scaling/Dual Shaders: OFF");
|
||||
device_ptr->ctx_driver->set_fbo(g_settings.video.render_to_texture);
|
||||
|
||||
if(g_settings.video.render_to_texture)
|
||||
device_ptr->ctx_driver->set_fbo(FBO_INIT);
|
||||
else
|
||||
device_ptr->ctx_driver->set_fbo(FBO_DEINIT);
|
||||
break;
|
||||
case SETTING_ZIP_EXTRACT:
|
||||
if(g_extern.file_state.zip_extract_mode < ZIP_EXTRACT_TO_CACHE_DIR)
|
||||
@ -536,7 +540,7 @@ HRESULT CRetroArchSettings::OnControlNavigate(XUIMessageControlNavigate *pContro
|
||||
if((g_settings.video.fbo.scale_x > MIN_SCALING_FACTOR))
|
||||
{
|
||||
rarch_settings_change(S_SCALE_FACTOR_DECREMENT);
|
||||
//xdk360_gfx_init_fbo(vid);
|
||||
device_ptr->ctx_driver->set_fbo(FBO_REINIT);
|
||||
rarch_settings_create_menu_item_label_w(strw_buffer, S_LBL_SCALE_FACTOR, sizeof(strw_buffer));
|
||||
m_settingslist.SetText(SETTING_SCALE_FACTOR, strw_buffer);
|
||||
}
|
||||
@ -559,7 +563,10 @@ HRESULT CRetroArchSettings::OnControlNavigate(XUIMessageControlNavigate *pContro
|
||||
case SETTING_SCALE_ENABLED:
|
||||
g_settings.video.render_to_texture = !g_settings.video.render_to_texture;
|
||||
m_settingslist.SetText(SETTING_SCALE_ENABLED, g_settings.video.render_to_texture ? L"Custom Scaling/Dual Shaders: ON" : L"Custom Scaling/Dual Shaders: OFF");
|
||||
device_ptr->ctx_driver->set_fbo(g_settings.video.render_to_texture);
|
||||
if(g_settings.video.render_to_texture)
|
||||
device_ptr->ctx_driver->set_fbo(FBO_INIT);
|
||||
else
|
||||
device_ptr->ctx_driver->set_fbo(FBO_DEINIT);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@ -601,7 +608,7 @@ HRESULT CRetroArchSettings::OnControlNavigate(XUIMessageControlNavigate *pContro
|
||||
if((g_settings.video.fbo.scale_x < MAX_SCALING_FACTOR))
|
||||
{
|
||||
rarch_settings_change(S_SCALE_FACTOR_INCREMENT);
|
||||
//xdk360_gfx_init_fbo(vid);
|
||||
device_ptr->ctx_driver->set_fbo(FBO_REINIT);
|
||||
rarch_settings_create_menu_item_label_w(strw_buffer, S_LBL_SCALE_FACTOR, sizeof(strw_buffer));
|
||||
m_settingslist.SetText(SETTING_SCALE_FACTOR, strw_buffer);
|
||||
}
|
||||
@ -624,7 +631,11 @@ HRESULT CRetroArchSettings::OnControlNavigate(XUIMessageControlNavigate *pContro
|
||||
case SETTING_SCALE_ENABLED:
|
||||
g_settings.video.render_to_texture = !g_settings.video.render_to_texture;
|
||||
m_settingslist.SetText(SETTING_SCALE_ENABLED, g_settings.video.render_to_texture ? L"Custom Scaling/Dual Shaders: ON" : L"Custom Scaling/Dual Shaders: OFF");
|
||||
device_ptr->ctx_driver->set_fbo(g_settings.video.render_to_texture);
|
||||
|
||||
if(g_settings.video.render_to_texture)
|
||||
device_ptr->ctx_driver->set_fbo(FBO_INIT);
|
||||
else
|
||||
device_ptr->ctx_driver->set_fbo(FBO_DEINIT);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
@ -458,13 +458,22 @@ static void gfx_ctx_xdk_input_driver(const input_driver_t **input, void **input_
|
||||
|
||||
static void gfx_ctx_xdk_set_filtering(unsigned index, bool set_smooth) { }
|
||||
|
||||
static void gfx_ctx_xdk_set_fbo(unsigned enable)
|
||||
static void gfx_ctx_xdk_set_fbo(unsigned mode)
|
||||
{
|
||||
#ifdef HAVE_FBO
|
||||
/* TODO: implement properly */
|
||||
xdk_d3d_video_t *device_ptr = (xdk_d3d_video_t*)driver.video_data;
|
||||
|
||||
device_ptr->fbo_inited = enable;
|
||||
switch(mode)
|
||||
{
|
||||
case FBO_DEINIT:
|
||||
xdk_d3d_deinit_fbo(device_ptr);
|
||||
break;
|
||||
case FBO_REINIT:
|
||||
case FBO_INIT:
|
||||
xdk_d3d_init_fbo(device_ptr);
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
195
xdk/xdk_d3d.cpp
195
xdk/xdk_d3d.cpp
@ -145,7 +145,7 @@ static void xdk_d3d_free(void * data)
|
||||
{
|
||||
#ifdef RARCH_CONSOLE
|
||||
if (driver.video_data)
|
||||
return;
|
||||
return;
|
||||
#endif
|
||||
|
||||
xdk_d3d_video_t *d3d = (xdk_d3d_video_t*)data;
|
||||
@ -208,10 +208,10 @@ static void xdk_d3d_set_viewport(bool force_full)
|
||||
if(g_settings.video.aspect_ratio_idx == ASPECT_RATIO_CUSTOM)
|
||||
{
|
||||
delta = (desired_aspect / device_aspect - 1.0) / 2.0 + 0.5;
|
||||
m_viewport_x_temp = g_extern.console.screen.viewports.custom_vp.x;
|
||||
m_viewport_y_temp = g_extern.console.screen.viewports.custom_vp.y;
|
||||
m_viewport_width_temp = g_extern.console.screen.viewports.custom_vp.width;
|
||||
m_viewport_height_temp = g_extern.console.screen.viewports.custom_vp.height;
|
||||
m_viewport_x_temp = g_extern.console.screen.viewports.custom_vp.x;
|
||||
m_viewport_y_temp = g_extern.console.screen.viewports.custom_vp.y;
|
||||
m_viewport_width_temp = g_extern.console.screen.viewports.custom_vp.width;
|
||||
m_viewport_height_temp = g_extern.console.screen.viewports.custom_vp.height;
|
||||
}
|
||||
else if (device_aspect > desired_aspect)
|
||||
{
|
||||
@ -261,7 +261,7 @@ static void xdk_d3d_set_rotation(void * data, unsigned orientation)
|
||||
{
|
||||
case ORIENTATION_NORMAL:
|
||||
angle = M_PI * 0 / 180;
|
||||
break;
|
||||
break;
|
||||
case ORIENTATION_FLIPPED_ROTATED:
|
||||
angle = M_PI * 90 / 180;
|
||||
break;
|
||||
@ -288,22 +288,32 @@ static void xdk_d3d_set_rotation(void * data, unsigned orientation)
|
||||
}
|
||||
|
||||
#ifdef HAVE_FBO
|
||||
void xdk_d3d_deinit_fbo(xdk_d3d_video_t *d3d)
|
||||
{
|
||||
if (d3d->fbo_inited)
|
||||
{
|
||||
if (d3d->lpTexture_ot)
|
||||
{
|
||||
d3d->lpTexture_ot->Release();
|
||||
d3d->lpTexture_ot = NULL;
|
||||
}
|
||||
|
||||
if (d3d->lpSurface)
|
||||
{
|
||||
d3d->lpSurface->Release();
|
||||
d3d->lpSurface = NULL;
|
||||
}
|
||||
|
||||
d3d->fbo_inited = false;
|
||||
}
|
||||
}
|
||||
|
||||
static void xdk_d3d_init_fbo(xdk_d3d_video_t *d3d)
|
||||
{
|
||||
if(!g_settings.video.render_to_texture)
|
||||
return;
|
||||
|
||||
if (d3d->lpTexture_ot)
|
||||
{
|
||||
d3d->lpTexture_ot->Release();
|
||||
d3d->lpTexture_ot = NULL;
|
||||
}
|
||||
|
||||
if (d3d->lpSurface)
|
||||
{
|
||||
d3d->lpSurface->Release();
|
||||
d3d->lpSurface = NULL;
|
||||
}
|
||||
xdk_d3d_deinit_fbo(d3d);
|
||||
|
||||
d3d->d3d_render_device->CreateTexture(d3d->tex_w * g_settings.video.fbo.scale_x, d3d->tex_h * g_settings.video.fbo.scale_y,
|
||||
1, 0, g_extern.console.screen.gamma_correction ? ( D3DFORMAT )MAKESRGBFMT( D3DFMT_A8R8G8B8 ) : D3DFMT_A8R8G8B8,
|
||||
@ -311,32 +321,33 @@ static void xdk_d3d_init_fbo(xdk_d3d_video_t *d3d)
|
||||
|
||||
d3d->d3d_render_device->CreateRenderTarget(d3d->tex_w * g_settings.video.fbo.scale_x, d3d->tex_h * g_settings.video.fbo.scale_y,
|
||||
g_extern.console.screen.gamma_correction ? ( D3DFORMAT )MAKESRGBFMT( D3DFMT_A8R8G8B8 ) : D3DFMT_A8R8G8B8, D3DMULTISAMPLE_NONE,
|
||||
0, 0, &d3d->lpSurface, NULL);
|
||||
0, 0, &d3d->lpSurface, NULL);
|
||||
|
||||
d3d->lpTexture_ot_as16srgb = *d3d->lpTexture_ot;
|
||||
xdk_convert_texture_to_as16_srgb(d3d->lpTexture);
|
||||
xdk_convert_texture_to_as16_srgb(&d3d->lpTexture_ot_as16srgb);
|
||||
d3d->fbo_inited = 1;
|
||||
|
||||
d3d->fbo_inited = true;
|
||||
}
|
||||
#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));
|
||||
xdk_d3d_video_t *d3d = (xdk_d3d_video_t*)driver.video_data;
|
||||
|
||||
d3d->texture_fmt = video->rgb32 ? D3DFMT_A8R8G8B8 : D3DFMT_LIN_R5G6B5;
|
||||
d3d->base_size = video->rgb32 ? sizeof(uint32_t) : sizeof(uint16_t);
|
||||
memset(d3dpp, 0, sizeof(*d3dpp));
|
||||
|
||||
unsigned width, height;
|
||||
d3d->ctx_driver->get_video_size(&width, &height);
|
||||
d3d->texture_fmt = video->rgb32 ? D3DFMT_A8R8G8B8 : D3DFMT_LIN_R5G6B5;
|
||||
d3d->base_size = video->rgb32 ? sizeof(uint32_t) : sizeof(uint16_t);
|
||||
|
||||
unsigned width, height;
|
||||
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"
|
||||
// Get the "video mode"
|
||||
DWORD video_mode = XGetVideoFlags();
|
||||
|
||||
// Check if we are able to use progressive mode
|
||||
@ -359,13 +370,13 @@ void xdk_d3d_generate_pp(D3DPRESENT_PARAMETERS *d3dpp, const video_info_t *video
|
||||
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;
|
||||
d3dpp->Flags = D3DPRESENTFLAG_PROGRESSIVE;
|
||||
else if(video_mode & XC_VIDEO_FLAGS_HDTV_1080i)
|
||||
d3dpp->Flags = D3DPRESENTFLAG_INTERLACED;
|
||||
d3dpp->Flags = D3DPRESENTFLAG_INTERLACED;
|
||||
}
|
||||
|
||||
if(g_extern.console.rmenu.state.rmenu_widescreen.enable)
|
||||
d3dpp->Flags |= D3DPRESENTFLAG_WIDESCREEN;
|
||||
d3dpp->Flags |= D3DPRESENTFLAG_WIDESCREEN;
|
||||
|
||||
d3dpp->BackBufferFormat = D3DFMT_A8R8G8B8;
|
||||
d3dpp->FullScreen_PresentationInterval = d3d->vsync ? D3DPRESENT_INTERVAL_ONE : D3DPRESENT_INTERVAL_IMMEDIATE;
|
||||
@ -395,39 +406,39 @@ void xdk_d3d_generate_pp(D3DPRESENT_PARAMETERS *d3dpp, const video_info_t *video
|
||||
|
||||
static void xdk_d3d_init_textures(xdk_d3d_video_t *d3d, const video_info_t *video)
|
||||
{
|
||||
D3DPRESENT_PARAMETERS d3dpp;
|
||||
D3DVIEWPORT vp = {0};
|
||||
xdk_d3d_generate_pp(&d3dpp, video);
|
||||
D3DPRESENT_PARAMETERS d3dpp;
|
||||
D3DVIEWPORT vp = {0};
|
||||
xdk_d3d_generate_pp(&d3dpp, video);
|
||||
|
||||
d3d->texture_fmt = video->rgb32 ? D3DFMT_LIN_A8R8G8B8 : D3DFMT_LIN_R5G6B5;
|
||||
d3d->base_size = video->rgb32 ? sizeof(uint32_t) : sizeof(uint16_t);
|
||||
d3d->texture_fmt = video->rgb32 ? D3DFMT_LIN_A8R8G8B8 : D3DFMT_LIN_R5G6B5;
|
||||
d3d->base_size = video->rgb32 ? sizeof(uint32_t) : sizeof(uint16_t);
|
||||
|
||||
if (d3d->lpTexture)
|
||||
{
|
||||
d3d->lpTexture->Release();
|
||||
d3d->lpTexture = NULL;
|
||||
}
|
||||
|
||||
d3d->d3d_render_device->CreateTexture(d3d->tex_w, d3d->tex_h, 1, 0, d3d->texture_fmt,
|
||||
0, &d3d->lpTexture
|
||||
|
||||
d3d->d3d_render_device->CreateTexture(d3d->tex_w, d3d->tex_h, 1, 0, d3d->texture_fmt,
|
||||
0, &d3d->lpTexture
|
||||
#ifdef _XBOX360
|
||||
, NULL
|
||||
, NULL
|
||||
#endif
|
||||
);
|
||||
|
||||
D3DLOCKED_RECT d3dlr;
|
||||
d3d->lpTexture->LockRect(0, &d3dlr, NULL, D3DLOCK_NOSYSLOCK);
|
||||
memset(d3dlr.pBits, 0, d3d->tex_w * d3dlr.Pitch);
|
||||
d3d->lpTexture->UnlockRect(0);
|
||||
|
||||
d3d->last_width = d3d->tex_w;
|
||||
d3d->last_height = d3d->tex_h;
|
||||
);
|
||||
|
||||
D3DLOCKED_RECT d3dlr;
|
||||
d3d->lpTexture->LockRect(0, &d3dlr, NULL, D3DLOCK_NOSYSLOCK);
|
||||
memset(d3dlr.pBits, 0, d3d->tex_w * d3dlr.Pitch);
|
||||
d3d->lpTexture->UnlockRect(0);
|
||||
|
||||
d3d->last_width = d3d->tex_w;
|
||||
d3d->last_height = d3d->tex_h;
|
||||
|
||||
#if defined(_XBOX1)
|
||||
d3d->d3d_render_device->SetRenderState(D3DRS_LIGHTING, FALSE);
|
||||
#elif defined(_XBOX360)
|
||||
d3d->d3d_render_device->Clear(0, NULL, D3DCLEAR_TARGET,
|
||||
0xff000000, 1.0f, 0);
|
||||
0xff000000, 1.0f, 0);
|
||||
#endif
|
||||
vp.Width = d3d->win_width;
|
||||
vp.Height = d3d->win_height;
|
||||
@ -448,42 +459,42 @@ static void xdk_d3d_init_textures(xdk_d3d_video_t *d3d, const video_info_t *vide
|
||||
|
||||
static void xdk_d3d_reinit_textures(xdk_d3d_video_t *d3d, const video_info_t *video)
|
||||
{
|
||||
unsigned old_base_size = d3d->base_size;
|
||||
unsigned old_width = d3d->tex_w;
|
||||
unsigned old_height = d3d->tex_h;
|
||||
d3d->texture_fmt = video->rgb32 ? D3DFMT_LIN_A8R8G8B8 : D3DFMT_LIN_R5G6B5;
|
||||
d3d->base_size = video->rgb32 ? sizeof(uint32_t) : sizeof(uint16_t);
|
||||
unsigned old_base_size = d3d->base_size;
|
||||
unsigned old_width = d3d->tex_w;
|
||||
unsigned old_height = d3d->tex_h;
|
||||
d3d->texture_fmt = video->rgb32 ? D3DFMT_LIN_A8R8G8B8 : D3DFMT_LIN_R5G6B5;
|
||||
d3d->base_size = video->rgb32 ? sizeof(uint32_t) : sizeof(uint16_t);
|
||||
|
||||
//FIXME - temporary hack
|
||||
d3d->tex_w = d3d->tex_h = 512;
|
||||
//FIXME - temporary hack
|
||||
d3d->tex_w = d3d->tex_h = 512;
|
||||
|
||||
if (old_base_size != d3d->base_size || old_width != d3d->tex_w || old_height != d3d->tex_h)
|
||||
{
|
||||
RARCH_LOG("Reinitializing textures (%u x %u @ %u bpp)\n", d3d->tex_w,
|
||||
d3d->tex_h, d3d->base_size * CHAR_BIT);
|
||||
if (old_base_size != d3d->base_size || old_width != d3d->tex_w || old_height != d3d->tex_h)
|
||||
{
|
||||
RARCH_LOG("Reinitializing textures (%u x %u @ %u bpp)\n", d3d->tex_w,
|
||||
d3d->tex_h, d3d->base_size * CHAR_BIT);
|
||||
|
||||
xdk_d3d_init_textures(d3d, video);
|
||||
xdk_d3d_init_textures(d3d, video);
|
||||
|
||||
#ifdef HAVE_FBO
|
||||
if (d3d->tex_w > old_width || d3d->tex_h > old_height)
|
||||
{
|
||||
RARCH_LOG("Reiniting FBO.\n");
|
||||
xdk_d3d_init_fbo(d3d);
|
||||
}
|
||||
if (d3d->tex_w > old_width || d3d->tex_h > old_height)
|
||||
{
|
||||
RARCH_LOG("Reiniting FBO.\n");
|
||||
xdk_d3d_init_fbo(d3d);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
else
|
||||
RARCH_LOG("Reinitializing textures skipped.\n");
|
||||
}
|
||||
else
|
||||
RARCH_LOG("Reinitializing textures skipped.\n");
|
||||
}
|
||||
|
||||
static void *xdk_d3d_init(const video_info_t *video, const input_driver_t **input, void **input_data)
|
||||
{
|
||||
if (driver.video_data)
|
||||
{
|
||||
xdk_d3d_video_t *d3d = (xdk_d3d_video_t*)driver.video_data;
|
||||
// Reinitialize textures as we might have changed pixel formats.
|
||||
xdk_d3d_reinit_textures(d3d, video);
|
||||
return driver.video_data;
|
||||
xdk_d3d_video_t *d3d = (xdk_d3d_video_t*)driver.video_data;
|
||||
// Reinitialize textures as we might have changed pixel formats.
|
||||
xdk_d3d_reinit_textures(d3d, video);
|
||||
return driver.video_data;
|
||||
}
|
||||
|
||||
//we'll just use driver.video_data throughout here because it needs to
|
||||
@ -506,12 +517,12 @@ static void *xdk_d3d_init(const video_info_t *video, const input_driver_t **inpu
|
||||
#endif
|
||||
if (d3d->ctx_driver)
|
||||
{
|
||||
D3DPRESENT_PARAMETERS d3dpp;
|
||||
xdk_d3d_generate_pp(&d3dpp, video);
|
||||
|
||||
d3d->d3d_device->CreateDevice(0, D3DDEVTYPE_HAL, NULL, D3DCREATE_HARDWARE_VERTEXPROCESSING,
|
||||
&d3dpp, &d3d->d3d_render_device);
|
||||
d3d->d3d_render_device->Clear(0, NULL, D3DCLEAR_TARGET, 0xff000000, 1.0f, 0);
|
||||
D3DPRESENT_PARAMETERS d3dpp;
|
||||
xdk_d3d_generate_pp(&d3dpp, video);
|
||||
|
||||
d3d->d3d_device->CreateDevice(0, D3DDEVTYPE_HAL, NULL, D3DCREATE_HARDWARE_VERTEXPROCESSING,
|
||||
&d3dpp, &d3d->d3d_render_device);
|
||||
d3d->d3d_render_device->Clear(0, NULL, D3DCLEAR_TARGET, 0xff000000, 1.0f, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -536,7 +547,7 @@ static void *xdk_d3d_init(const video_info_t *video, const input_driver_t **inpu
|
||||
d3d->d3d_render_device->SetTransform(D3DTS_VIEW, &mat);
|
||||
|
||||
d3d->d3d_render_device->CreateVertexBuffer(4 * sizeof(DrawVerticeFormats),
|
||||
D3DUSAGE_WRITEONLY, D3DFVF_CUSTOMVERTEX, D3DPOOL_MANAGED, &d3d->vertex_buf);
|
||||
D3DUSAGE_WRITEONLY, D3DFVF_CUSTOMVERTEX, D3DPOOL_MANAGED, &d3d->vertex_buf);
|
||||
|
||||
const DrawVerticeFormats init_verts[] = {
|
||||
{ -1.0f, -1.0f, 1.0f, 0.0f, 1.0f },
|
||||
@ -553,7 +564,7 @@ static void *xdk_d3d_init(const video_info_t *video, const input_driver_t **inpu
|
||||
d3d->d3d_render_device->SetVertexShader(D3DFVF_XYZ | D3DFVF_TEX1);
|
||||
#elif defined(_XBOX360)
|
||||
d3d->d3d_render_device->CreateVertexBuffer(4 * sizeof(DrawVerticeFormats),
|
||||
0, 0, 0, &d3d->vertex_buf, NULL);
|
||||
0, 0, 0, &d3d->vertex_buf, NULL);
|
||||
|
||||
static const DrawVerticeFormats init_verts[] = {
|
||||
{ -1.0f, -1.0f, 0.0f, 1.0f },
|
||||
@ -561,7 +572,7 @@ static void *xdk_d3d_init(const video_info_t *video, const input_driver_t **inpu
|
||||
{ -1.0f, 1.0f, 0.0f, 0.0f },
|
||||
{ 1.0f, 1.0f, 1.0f, 0.0f },
|
||||
};
|
||||
|
||||
|
||||
void *verts_ptr;
|
||||
d3d->vertex_buf->Lock(0, 0, &verts_ptr, 0);
|
||||
memcpy(verts_ptr, init_verts, sizeof(init_verts));
|
||||
@ -586,9 +597,9 @@ static void *xdk_d3d_init(const video_info_t *video, const input_driver_t **inpu
|
||||
if (!hlsl_shader_init())
|
||||
{
|
||||
RARCH_ERR("Shader init failed.\n");
|
||||
d3d->ctx_driver->destroy();
|
||||
free(d3d);
|
||||
return NULL;
|
||||
d3d->ctx_driver->destroy();
|
||||
free(d3d);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
RARCH_LOG("D3D: Loaded %u program(s).\n", d3d_hlsl_num());
|
||||
@ -750,8 +761,8 @@ static bool xdk_d3d_frame(void *data, const void *frame,
|
||||
|
||||
d3d->d3d_render_device->SetVertexDeclaration(d3d->v_decl);
|
||||
d3d->d3d_render_device->SetStreamSource(0, d3d->vertex_buf,
|
||||
0,
|
||||
sizeof(DrawVerticeFormats));
|
||||
0,
|
||||
sizeof(DrawVerticeFormats));
|
||||
|
||||
d3d->d3d_render_device->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2);
|
||||
#endif
|
||||
@ -760,7 +771,7 @@ static bool xdk_d3d_frame(void *data, const void *frame,
|
||||
if(d3d->fbo_inited)
|
||||
{
|
||||
d3d->d3d_render_device->Resolve(D3DRESOLVE_RENDERTARGET0, NULL, d3d->lpTexture_ot,
|
||||
NULL, 0, 0, NULL, 0, 0, NULL);
|
||||
NULL, 0, 0, NULL, 0, 0, NULL);
|
||||
|
||||
d3d->d3d_render_device->SetRenderTarget(0, pRenderTarget0);
|
||||
pRenderTarget0->Release();
|
||||
@ -779,8 +790,8 @@ static bool xdk_d3d_frame(void *data, const void *frame,
|
||||
d3d->d3d_render_device->SetSamplerState(0, D3DSAMP_ADDRESSV, D3DTADDRESS_BORDER);
|
||||
d3d->d3d_render_device->SetVertexDeclaration(d3d->v_decl);
|
||||
d3d->d3d_render_device->SetStreamSource(0, d3d->vertex_buf,
|
||||
0,
|
||||
sizeof(DrawVerticeFormats));
|
||||
0,
|
||||
sizeof(DrawVerticeFormats));
|
||||
d3d->d3d_render_device->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2);
|
||||
}
|
||||
#endif
|
||||
@ -805,7 +816,7 @@ static bool xdk_d3d_frame(void *data, const void *frame,
|
||||
#elif defined(_XBOX360)
|
||||
if (msg && !menu_enabled)
|
||||
{
|
||||
xdk_render_msg(d3d, msg);
|
||||
xdk_render_msg(d3d, msg);
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -849,7 +860,7 @@ static void xdk_d3d_start(void)
|
||||
video_info.input_scale = 2;
|
||||
video_info.fullscreen = true;
|
||||
if(g_settings.video.force_16bit)
|
||||
video_info.rgb32 = false;
|
||||
video_info.rgb32 = false;
|
||||
|
||||
driver.video_data = xdk_d3d_init(&video_info, NULL, NULL);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user