From 82e7112f41157c0505926e776e55cbde2f95822c Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 13 Sep 2014 18:36:35 +0200 Subject: [PATCH] (D3D) Use d3d_texture_new --- gfx/d3d9/d3d_wrapper.c | 17 ++++++++++++----- gfx/d3d9/render_chain.cpp | 26 ++++++++++++++++---------- 2 files changed, 28 insertions(+), 15 deletions(-) diff --git a/gfx/d3d9/d3d_wrapper.c b/gfx/d3d9/d3d_wrapper.c index 1774edcc5e..c7841cbaf9 100644 --- a/gfx/d3d9/d3d_wrapper.c +++ b/gfx/d3d9/d3d_wrapper.c @@ -49,11 +49,18 @@ LPDIRECT3DTEXTURE d3d_texture_new(LPDIRECT3DDEVICE dev, { HRESULT hr; LPDIRECT3DTEXTURE buf; - - hr = D3DXCreateTextureFromFileExA(dev, - path, width, height, miplevels, usage, format, - pool, filter, mipfilter, color_key, src_info, - palette, &buf); + + if (!dev) + return NULL; + + if (path != NULL) + hr = D3DXCreateTextureFromFileExA(dev, + path, width, height, miplevels, usage, format, + pool, filter, mipfilter, color_key, src_info, + palette, &buf); + else + hr = dev->CreateTexture(width, height, miplevels, usage, + format, pool, &buf, NULL); if (FAILED(hr)) return NULL; diff --git a/gfx/d3d9/render_chain.cpp b/gfx/d3d9/render_chain.cpp index c29c252e78..8499a76700 100644 --- a/gfx/d3d9/render_chain.cpp +++ b/gfx/d3d9/render_chain.cpp @@ -125,12 +125,15 @@ bool renderchain_set_pass_size(void *data, unsigned pass_index, pass->info.tex_w = width; pass->info.tex_h = height; - if (FAILED(d3dr->CreateTexture(width, height, 1, + pass->tex = (LPDIRECT3DTEXTURE)d3d_texture_new( + d3dr, NULL, width, height, 1, D3DUSAGE_RENDERTARGET, chain->passes.back().info.pass->fbo.fp_fbo ? D3DFMT_A32B32G32R32F : D3DFMT_A8R8G8B8, - D3DPOOL_DEFAULT, - &pass->tex, NULL))) + D3DPOOL_DEFAULT, 0, 0, 0, + NULL, NULL); + + if (!pass->tex) return false; d3d_set_texture(d3dr, 0, pass->tex); @@ -164,12 +167,13 @@ bool renderchain_add_pass(void *data, const LinkInfo *info) if (!pass.vertex_buf) return false; - if (FAILED(d3dr->CreateTexture(info->tex_w, info->tex_h, 1, + pass.tex = d3d_texture_new(d3dr, NULL, info->tex_w, info->tex_h, 1, D3DUSAGE_RENDERTARGET, chain->passes.back().info.pass->fbo.fp_fbo ? D3DFMT_A32B32G32R32F : D3DFMT_A8R8G8B8, - D3DPOOL_DEFAULT, - &pass.tex, NULL))) + D3DPOOL_DEFAULT, 0, 0, 0, NULL, NULL); + + if (!pass.tex) return false; d3d_set_texture(d3dr, 0, pass.tex); @@ -367,10 +371,12 @@ bool renderchain_create_first_pass(void *data, const LinkInfo *info, if (!chain->prev.vertex_buf[i]) return false; - if (FAILED(d3dr->CreateTexture(info->tex_w, info->tex_h, 1, 0, - fmt == RGB565 ? D3DFMT_R5G6B5 : D3DFMT_X8R8G8B8, - D3DPOOL_MANAGED, - &chain->prev.tex[i], NULL))) + chain->prev.tex[i] = (LPDIRECT3DTEXTURE)d3d_texture_new( + d3dr, NULL, d3info->tex_w, info->tex_h, 1, 0, + fmt == RGB565 ? D3DFMT_R5G6B5 : D3DFMT_X8R8G8B8, + D3DPOOL_MANAGED, 0, 0, 0, NULL, NULL); + + if (!chain->prev.tex[i]) return false; d3d_set_texture(d3dr, 0, chain->prev.tex[i]);