(D3D9) Only d3d9_renderchain_add_lut requires create_texture_from_file now,

so split up into two separate functions - this function requires D3DX
which we intend to get rid of long-term
This commit is contained in:
libretroadmin 2022-05-16 13:24:58 +02:00
parent 372ac81ee1
commit 0df2be001e
5 changed files with 35 additions and 25 deletions

View File

@ -254,35 +254,39 @@ void d3d9_deinitialize_symbols(void)
#endif
}
void *d3d9_texture_new(void *_dev,
void *d3d9_texture_new_from_file(void *_dev,
const char *path, unsigned width, unsigned height,
unsigned miplevels, unsigned usage, INT32 format,
INT32 pool, unsigned filter, unsigned mipfilter,
INT32 color_key, void *src_info_data,
PALETTEENTRY *palette, bool want_mipmap)
{
#ifdef HAVE_D3DX
LPDIRECT3DDEVICE9 dev = (LPDIRECT3DDEVICE9)_dev;
void *buf = NULL;
if (SUCCEEDED(D3D9CreateTextureFromFile((LPDIRECT3DDEVICE9)dev,
path, width, height, miplevels, usage, format,
(D3DPOOL)pool, filter, mipfilter, color_key,
(D3DXIMAGE_INFO*)src_info_data,
palette, (struct IDirect3DTexture9**)&buf)))
return buf;
#endif
return NULL;
}
void *d3d9_texture_new(void *_dev,
unsigned width, unsigned height,
unsigned miplevels, unsigned usage, INT32 format,
INT32 pool, unsigned filter, unsigned mipfilter,
INT32 color_key, void *src_info_data,
PALETTEENTRY *palette, bool want_mipmap)
{
LPDIRECT3DDEVICE9 dev = (LPDIRECT3DDEVICE9)_dev;
void *buf = NULL;
if (path)
{
#ifdef HAVE_D3DX
void *buf = NULL;
if (SUCCEEDED(D3D9CreateTextureFromFile((LPDIRECT3DDEVICE9)dev,
path, width, height, miplevels, usage, format,
(D3DPOOL)pool, filter, mipfilter, color_key,
(D3DXIMAGE_INFO*)src_info_data,
palette, (struct IDirect3DTexture9**)&buf)))
return buf;
#endif
return NULL;
}
#ifndef _XBOX
if (want_mipmap)
usage |= D3DUSAGE_AUTOGENMIPMAP;
#endif
if (FAILED(IDirect3DDevice9_CreateTexture(dev,
width, height, miplevels, usage,
(D3DFORMAT)format,
@ -1147,7 +1151,7 @@ void d3d9_set_menu_texture_frame(void *data,
{
IDirect3DTexture9_Release((LPDIRECT3DTEXTURE9)d3d->menu->tex);
d3d->menu->tex = d3d9_texture_new(d3d->dev, NULL,
d3d->menu->tex = d3d9_texture_new(d3d->dev,
width, height, 1,
0, D3D9_ARGB8888_FORMAT,
D3DPOOL_MANAGED, 0, 0, 0, NULL, NULL, false);
@ -1239,7 +1243,7 @@ static void d3d9_video_texture_load_d3d(
(info->type == TEXTURE_FILTER_MIPMAP_NEAREST))
want_mipmap = true;
tex = (LPDIRECT3DTEXTURE9)d3d9_texture_new(d3d->dev, NULL,
tex = (LPDIRECT3DTEXTURE9)d3d9_texture_new(d3d->dev,
ti->width, ti->height, 0,
usage, D3D9_ARGB8888_FORMAT,
D3DPOOL_MANAGED, 0, 0, 0,
@ -1574,7 +1578,7 @@ static bool d3d9_overlay_load(void *data,
unsigned height = images[i].height;
overlay_t *overlay = (overlay_t*)&d3d->overlays[i];
overlay->tex = d3d9_texture_new(d3d->dev, NULL,
overlay->tex = d3d9_texture_new(d3d->dev,
width, height, 1,
0,
D3D9_ARGB8888_FORMAT,

View File

@ -101,6 +101,13 @@ void *d3d9_vertex_buffer_new(void *dev,
void d3d9_vertex_buffer_free(void *vertex_data, void *vertex_declaration);
void *d3d9_texture_new(void *dev,
unsigned width, unsigned height,
unsigned miplevels, unsigned usage, INT32 format,
INT32 pool, unsigned filter, unsigned mipfilter,
INT32 color_key, void *src_info,
PALETTEENTRY *palette, bool want_mipmap);
void *d3d9_texture_new_from_file(void *dev,
const char *path, unsigned width, unsigned height,
unsigned miplevels, unsigned usage, INT32 format,
INT32 pool, unsigned filter, unsigned mipfilter,

View File

@ -111,7 +111,6 @@ static INLINE bool d3d9_renderchain_add_pass(d3d9_renderchain_t *chain,
tex = (LPDIRECT3DTEXTURE9)d3d9_texture_new(
chain->dev,
NULL,
info->tex_w,
info->tex_h,
1,
@ -141,7 +140,7 @@ static INLINE bool d3d9_renderchain_add_lut(d3d9_renderchain_t *chain,
{
struct lut_info info;
LPDIRECT3DTEXTURE9 lut = (LPDIRECT3DTEXTURE9)
d3d9_texture_new(
d3d9_texture_new_from_file(
chain->dev,
path,
D3D_DEFAULT_NONPOW2,
@ -283,7 +282,7 @@ static INLINE bool d3d9_renderchain_set_pass_size(
pass->info.tex_h = height;
pass->pool = D3DPOOL_DEFAULT;
pass->tex = (LPDIRECT3DTEXTURE9)
d3d9_texture_new(dev, NULL,
d3d9_texture_new(dev,
width, height, 1,
D3DUSAGE_RENDERTARGET,
pass2->info.pass->fbo.fp_fbo ?

View File

@ -813,7 +813,7 @@ static bool d3d9_cg_renderchain_create_first_pass(
return false;
chain->prev.tex[i] = (LPDIRECT3DTEXTURE9)
d3d9_texture_new(chain->dev, NULL,
d3d9_texture_new(chain->dev,
info->tex_w, info->tex_h, 1, 0, fmt,
D3DPOOL_MANAGED, 0, 0, 0, NULL, NULL, false);

View File

@ -322,7 +322,7 @@ static bool hlsl_d3d9_renderchain_create_first_pass(
return false;
chain->prev.tex[i] = (LPDIRECT3DTEXTURE9)
d3d9_texture_new(chain->dev, NULL,
d3d9_texture_new(chain->dev,
info->tex_w, info->tex_h, 1, 0, fmt,
D3DPOOL_MANAGED, 0, 0, 0, NULL, NULL, false);