From 1eef295450ce2319cd4c599a80d7788afe642134 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 30 May 2014 06:31:53 +0200 Subject: [PATCH] (XDK) Fixes FPS count --- gfx/context/d3d_ctx.cpp | 8 +++++--- xdk/xdk_d3d.cpp | 41 ++++++++++++++++++++++------------------- 2 files changed, 27 insertions(+), 22 deletions(-) diff --git a/gfx/context/d3d_ctx.cpp b/gfx/context/d3d_ctx.cpp index 3fea9f9454..8995fa4bd4 100644 --- a/gfx/context/d3d_ctx.cpp +++ b/gfx/context/d3d_ctx.cpp @@ -127,13 +127,13 @@ static void gfx_ctx_d3d_swap_buffers(void *data) static void gfx_ctx_d3d_update_title(void *data) { d3d_video_t *d3d = (d3d_video_t*)data; - char buffer[128], buffer_fps[128]; + char buf[128], buffer_fps[128]; bool fps_draw = g_settings.fps_show; - if (gfx_get_fps(buffer, sizeof(buffer), fps_draw ? buffer_fps : NULL, sizeof(buffer_fps))) + if (gfx_get_fps(buf, sizeof(buf), fps_draw ? buffer_fps : NULL, sizeof(buffer_fps))) { #ifndef _XBOX - SetWindowText(d3d->hWnd, buffer); + SetWindowText(d3d->hWnd, buf); #endif } @@ -149,7 +149,9 @@ static void gfx_ctx_d3d_update_title(void *data) msg_queue_push(g_extern.msg_queue, buffer_fps, 1, 1); } +#ifndef _XBOX g_extern.frame_count++; +#endif } static void gfx_ctx_d3d_show_mouse(void *data, bool state) diff --git a/xdk/xdk_d3d.cpp b/xdk/xdk_d3d.cpp index 7976441cd7..e283b0dc0c 100644 --- a/xdk/xdk_d3d.cpp +++ b/xdk/xdk_d3d.cpp @@ -304,18 +304,15 @@ static bool d3d_init_chain(void *data, const video_info_t *info) d3d_init_textures(d3d, info); - ret = d3d->dev->CreateVertexBuffer(4 * sizeof(DrawVerticeFormats), + ret = d3dr->CreateVertexBuffer(4 * sizeof(DrawVerticeFormats), D3DUSAGE_WRITEONLY, D3DFVF_CUSTOMVERTEX, D3DPOOL_MANAGED, &d3d->vertex_buf #ifdef _XBOX360 ,NULL #endif ); - if (ret != S_OK) - { - RARCH_ERR("[d3d_init::] Failed at CreateVertexBuffer.\n"); + if (FAILED(ret)) return false; - } #if defined(_XBOX360) static const D3DVERTEXELEMENT VertexElements[] = @@ -325,12 +322,8 @@ static bool d3d_init_chain(void *data, const video_info_t *info) D3DDECL_END() }; - ret = d3d->dev->CreateVertexDeclaration(VertexElements, &d3d->v_decl); - - if (ret != S_OK) - { - RARCH_ERR("[d3d_init::] Failed at CreateVertexDeclaration.\n"); - } + if (FAILED(d3dr->CreateVertexDeclaration(VertexElements, &d3d->v_decl)) + return false; #endif return true; @@ -491,10 +484,7 @@ static bool texture_image_render(void *data, struct texture_image *out_img, HRESULT ret = out_img->vertex_buf->Lock(0, 0, (unsigned char**)&pCurVerts, 0); if (FAILED(ret)) - { - RARCH_ERR("Error occurred during m_pVertexBuffer->Lock().\n"); return false; - } // copy the new verts over the old verts memcpy(pCurVerts, newVerts, 4 * sizeof(DrawVerticeFormats)); @@ -692,14 +682,18 @@ static void render_pass(void *data, const void *frame, unsigned width, unsigned blit_to_texture(d3d, frame, width, height, pitch); set_vertices(d3d, 1, width, height); +#ifdef _XBOX if (g_extern.frame_count) + { #ifdef _XBOX1 d3dr->SwitchTexture(0, d3d->tex); #elif defined _XBOX360 d3dr->SetTextureFetchConstant(0, d3d->tex); #endif - else if (d3d->tex) - RD3DDevice_SetTexture(d3dr, 0, d3d->tex); + } + else if (d3d->tex) +#endif + RD3DDevice_SetTexture(d3dr, 0, d3d->tex); RD3DDevice_SetViewport(d3d->dev, &d3d->final_viewport); RD3DDevice_SetSamplerState_MinFilter(d3dr, 0, g_settings.video.smooth ? D3DTEXF_LINEAR : D3DTEXF_POINT); RD3DDevice_SetSamplerState_MagFilter(d3dr, 0, g_settings.video.smooth ? D3DTEXF_LINEAR : D3DTEXF_POINT); @@ -713,7 +707,16 @@ static void render_pass(void *data, const void *frame, unsigned width, unsigned D3DDevice_SetVertexDeclaration(d3dr, d3d->v_decl); D3DDevice_SetStreamSource_Inline(d3dr, 0, d3d->vertex_buf, 0, sizeof(DrawVerticeFormats)); #endif + +#ifdef _XBOX d3dr->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2); +#else + if (SUCCEEDED(d3dr->BeginScene())) + { + d3dr->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2); + d3dr->EndScene(); + } +#endif g_extern.frame_count++; @@ -763,9 +766,6 @@ static bool d3d_frame(void *data, const void *frame, d3d_draw_texture(d3d); #endif - if (d3d && d3d->ctx_driver && d3d->ctx_driver->update_window_title) - d3d->ctx_driver->update_window_title(d3d); - if (msg) { #if defined(_XBOX1) @@ -782,6 +782,9 @@ static bool d3d_frame(void *data, const void *frame, d3d->font_ctx->render_msg(d3d, msg, &font_parms); } + if (d3d && d3d->ctx_driver && d3d->ctx_driver->update_window_title) + d3d->ctx_driver->update_window_title(d3d); + if (d3d && d3d->ctx_driver && d3d->ctx_driver->swap_buffers) d3d->ctx_driver->swap_buffers(d3d);