From ba2de00c8d71a4d456a22175ec4acc7484be12ca Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 19 Nov 2012 19:56:53 +0100 Subject: [PATCH] (XDK) Replace hardcoded 512 values with tex_w/tex_h --- gfx/context/xdk_ctx.c | 16 ++++++++-------- xdk/xdk_d3d.cpp | 23 +++++++++++++---------- xdk/xdk_d3d.h | 1 + 3 files changed, 22 insertions(+), 18 deletions(-) diff --git a/gfx/context/xdk_ctx.c b/gfx/context/xdk_ctx.c index 88bce47a99..ee2d0d282a 100644 --- a/gfx/context/xdk_ctx.c +++ b/gfx/context/xdk_ctx.c @@ -509,14 +509,14 @@ static bool gfx_ctx_xdk_init(void) d3d->d3d_render_device->SetTransform(D3DTS_WORLD, &mat); d3d->d3d_render_device->SetTransform(D3DTS_VIEW, &mat); - d3d->d3d_render_device->CreateTexture(512, 512, 1, 0, g_settings.video.color_format ? D3DFMT_LIN_A8R8G8B8 : D3DFMT_LIN_R5G6B5, 0, &d3d->lpTexture); + d3d->d3d_render_device->CreateTexture(d3d->tex_w, d3d->tex_h, 1, 0, g_settings.video.color_format ? D3DFMT_LIN_A8R8G8B8 : D3DFMT_LIN_R5G6B5, 0, &d3d->lpTexture); D3DLOCKED_RECT d3dlr; d3d->lpTexture->LockRect(0, &d3dlr, NULL, 0); - memset(d3dlr.pBits, 0, 512 * d3dlr.Pitch); + memset(d3dlr.pBits, 0, d3d->tex_w * d3dlr.Pitch); d3d->lpTexture->UnlockRect(0); - d3d->last_width = 512; - d3d->last_height = 512; + d3d->last_width = d3d->tex_w; + d3d->last_height = d3d->tex_h; d3d->d3d_render_device->CreateVertexBuffer(4 * sizeof(DrawVerticeFormats), D3DUSAGE_WRITEONLY, D3DFVF_CUSTOMVERTEX, D3DPOOL_MANAGED, &d3d->vertex_buf); @@ -578,18 +578,18 @@ static bool gfx_ctx_xdk_init(void) d3d->d3d_device->CreateDevice(0, D3DDEVTYPE_HAL, NULL, D3DCREATE_HARDWARE_VERTEXPROCESSING, &d3d->d3dpp, &d3d->d3d_render_device); - d3d->d3d_render_device->CreateTexture(512, 512, 1, 0, g_settings.video.color_format ? D3DFMT_LIN_A8R8G8B8 : D3DFMT_LIN_R5G6B5, + d3d->d3d_render_device->CreateTexture(d3d->tex_w, d3d->tex_h, 1, 0, g_settings.video.color_format ? D3DFMT_LIN_A8R8G8B8 : D3DFMT_LIN_R5G6B5, 0, &d3d->lpTexture , NULL ); D3DLOCKED_RECT d3dlr; d3d->lpTexture->LockRect(0, &d3dlr, NULL, D3DLOCK_NOSYSLOCK); - memset(d3dlr.pBits, 0, 512 * d3dlr.Pitch); + memset(d3dlr.pBits, 0, d3d->tex_w * d3dlr.Pitch); d3d->lpTexture->UnlockRect(0); - d3d->last_width = 512; - d3d->last_height = 512; + d3d->last_width = d3d->tex_w; + d3d->last_height = d3d->tex_h; d3d->d3d_render_device->CreateVertexBuffer(4 * sizeof(DrawVerticeFormats), 0, 0, 0, &d3d->vertex_buf, NULL); diff --git a/xdk/xdk_d3d.cpp b/xdk/xdk_d3d.cpp index 99fffa332d..bb1dae8f3b 100644 --- a/xdk/xdk_d3d.cpp +++ b/xdk/xdk_d3d.cpp @@ -308,13 +308,13 @@ static void xdk_d3d_init_fbo(xdk_d3d_video_t *d3d) d3d->lpSurface = NULL; } - d3d->d3d_render_device->CreateTexture(512 * g_settings.video.fbo.scale_x, 512 * g_settings.video.fbo.scale_y, + 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, 0, &d3d->lpTexture_ot , NULL ); - d3d->d3d_render_device->CreateRenderTarget(512 * g_settings.video.fbo.scale_x, 512 * g_settings.video.fbo.scale_y, + 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); @@ -339,6 +339,9 @@ static void *xdk_d3d_init(const video_info_t *video, const input_driver_t **inpu xdk_d3d_video_t *d3d = (xdk_d3d_video_t*)driver.video_data; d3d->vsync = video->vsync; + /* FIXME: Hack */ + d3d->tex_w = 512; + d3d->tex_h = 512; #if defined(_XBOX1) d3d->ctx_driver = gfx_ctx_init_first(GFX_CTX_DIRECT3D8_API); @@ -421,7 +424,7 @@ static bool xdk_d3d_frame(void *data, const void *frame, D3DLOCKED_RECT d3dlr; d3d->lpTexture->LockRect(0, &d3dlr, NULL, D3DLOCK_NOSYSLOCK); - memset(d3dlr.pBits, 0, 512 * d3dlr.Pitch); + memset(d3dlr.pBits, 0, d3d->tex_w * d3dlr.Pitch); d3d->lpTexture->UnlockRect(0); #if defined(_XBOX1) @@ -435,8 +438,8 @@ static bool xdk_d3d_frame(void *data, const void *frame, { 1.0f, 1.0f, 1.0f, tex_w, 0.0f }, }; #elif defined(_XBOX360) - float tex_w = width / 512.0f; - float tex_h = height / 512.0f; + float tex_w = width / (float)d3d->tex_w; + float tex_h = height / (float)d3d->tex_h; DrawVerticeFormats verts[] = { { -1.0f, -1.0f, 0.0f, tex_h }, @@ -449,8 +452,8 @@ static bool xdk_d3d_frame(void *data, const void *frame, // Align texels and vertices (D3D9 quirk). for (unsigned i = 0; i < 4; i++) { - verts[i].x -= 0.5f / 512.0f; - verts[i].y += 0.5f / 512.0f; + verts[i].x -= 0.5f / (float)d3d->tex_w; + verts[i].y += 0.5f / (float)d3d->tex_h; } #if defined(_XBOX1) @@ -493,7 +496,7 @@ static bool xdk_d3d_frame(void *data, const void *frame, if(d3d->fbo_inited) { #ifdef HAVE_HLSL - hlsl_set_params(width, height, 512, 512, g_settings.video.fbo.scale_x * width, + hlsl_set_params(width, height, d3d->tex_w, d3d->tex_h, g_settings.video.fbo.scale_x * width, g_settings.video.fbo.scale_y * height, d3d->frame_count); #endif D3DVIEWPORT vp = {0}; @@ -509,7 +512,7 @@ static bool xdk_d3d_frame(void *data, const void *frame, #endif { #ifdef HAVE_HLSL - hlsl_set_params(width, height, 512, 512, d3d->d3dpp.BackBufferWidth, + hlsl_set_params(width, height, d3d->tex_w, d3d->tex_h, d3d->d3dpp.BackBufferWidth, d3d->d3dpp.BackBufferHeight, d3d->frame_count); #endif } @@ -571,7 +574,7 @@ static bool xdk_d3d_frame(void *data, const void *frame, #ifdef HAVE_HLSL hlsl_use(2); - hlsl_set_params(g_settings.video.fbo.scale_x * width, g_settings.video.fbo.scale_y * height, g_settings.video.fbo.scale_x * 512, g_settings.video.fbo.scale_y * 512, d3d->d3dpp.BackBufferWidth, + hlsl_set_params(g_settings.video.fbo.scale_x * width, g_settings.video.fbo.scale_y * height, g_settings.video.fbo.scale_x * d3d->tex_w, g_settings.video.fbo.scale_y * d3d->tex_h, d3d->d3dpp.BackBufferWidth, d3d->d3dpp.BackBufferHeight, d3d->frame_count); #endif xdk_d3d_set_viewport(false); diff --git a/xdk/xdk_d3d.h b/xdk/xdk_d3d.h index 4158cb9c7a..8a052a2d17 100644 --- a/xdk/xdk_d3d.h +++ b/xdk/xdk_d3d.h @@ -69,6 +69,7 @@ typedef struct xdk_d3d_video unsigned full_y; unsigned win_width; unsigned win_height; + unsigned tex_w, tex_h; LPDIRECT3D d3d_device; LPDIRECT3DDEVICE d3d_render_device; LPDIRECT3DVERTEXBUFFER vertex_buf;