(D3D9) Cleanups - cut down on pointless inlined functions

This commit is contained in:
libretroadmin 2022-05-15 17:20:54 +02:00
parent 28cd77c5b4
commit febd584930
5 changed files with 70 additions and 96 deletions

View file

@ -653,7 +653,7 @@ static D3DFORMAT d3d9_get_color_format_backbuffer(bool rgb32)
{
if (rgb32)
return D3DFMT_X8R8G8B8;
return d3d9_get_rgb565_format();
return D3D9_RGB565_FORMAT;
}
bool d3d9_has_windowed(void *data) { return false; }
@ -1199,7 +1199,7 @@ void d3d9_set_menu_texture_frame(void *data,
d3d->menu->tex = d3d9_texture_new(d3d->dev, NULL,
width, height, 1,
0, d3d9_get_argb8888_format(),
0, D3D9_ARGB8888_FORMAT,
D3DPOOL_MANAGED, 0, 0, 0, NULL, NULL, false);
if (!d3d->menu->tex)
@ -1291,7 +1291,7 @@ static void d3d9_video_texture_load_d3d(
tex = (LPDIRECT3DTEXTURE9)d3d9_texture_new(d3d->dev, NULL,
ti->width, ti->height, 0,
usage, d3d9_get_argb8888_format(),
usage, D3D9_ARGB8888_FORMAT,
D3DPOOL_MANAGED, 0, 0, 0,
NULL, NULL, want_mipmap);
@ -1392,7 +1392,7 @@ bool d3d9_read_viewport(void *data, uint8_t *buffer, bool is_idle)
if (
!d3d9_device_get_render_target(d3dr, 0, (void**)&target) ||
!d3d9_device_create_offscreen_plain_surface(d3dr, width, height,
d3d9_get_xrgb8888_format(),
D3D9_XRGB8888_FORMAT,
D3DPOOL_SYSTEMMEM, (void**)&dest, NULL) ||
!d3d9_device_get_render_target_data(d3dr, target, dest)
)
@ -1627,7 +1627,7 @@ static bool d3d9_overlay_load(void *data,
overlay->tex = d3d9_texture_new(d3d->dev, NULL,
width, height, 1,
0,
d3d9_get_argb8888_format(),
D3D9_ARGB8888_FORMAT,
D3DPOOL_MANAGED, 0, 0, 0,
NULL, NULL, false);

View file

@ -31,6 +31,17 @@
{ (WORD)(stream), (WORD)(offset * sizeof(float)), D3DDECLTYPE_FLOAT2, D3DDECLMETHOD_DEFAULT, \
D3DDECLUSAGE_TEXCOORD, (BYTE)(index) }
#ifdef _XBOX
#define D3D9_RGB565_FORMAT D3DFMT_LIN_R5G6B5
#define D3D9_ARGB8888_FORMAT D3DFMT_LIN_A8R8G8B8
#define D3D9_XRGB8888_FORMAT D3DFMT_LIN_X8R8G8B8
#else
#define D3D9_RGB565_FORMAT D3DFMT_R5G6B5
#define D3D9_ARGB8888_FORMAT D3DFMT_A8R8G8B8
#define D3D9_XRGB8888_FORMAT D3DFMT_X8R8G8B8
#endif
RETRO_BEGIN_DECLS
typedef struct d3d9_video d3d9_video_t;
@ -207,75 +218,6 @@ const bool d3d9x_constant_table_set_float(void *p,
void *d3d9x_constant_table_get_constant_by_name(void *_tbl,
void *_handle, void *_name);
static INLINE INT32 d3d9_get_rgb565_format(void)
{
#ifdef _XBOX
return D3DFMT_LIN_R5G6B5;
#else
return D3DFMT_R5G6B5;
#endif
}
static INLINE INT32 d3d9_get_argb8888_format(void)
{
#ifdef _XBOX
return D3DFMT_LIN_A8R8G8B8;
#else
return D3DFMT_A8R8G8B8;
#endif
}
static INLINE INT32 d3d9_get_xrgb8888_format(void)
{
#ifdef _XBOX
return D3DFMT_LIN_X8R8G8B8;
#else
return D3DFMT_X8R8G8B8;
#endif
}
static INLINE void d3d9_convert_geometry(
const struct LinkInfo *info,
unsigned *out_width,
unsigned *out_height,
unsigned width,
unsigned height,
D3DVIEWPORT9 *final_viewport)
{
if (!info)
return;
switch (info->pass->fbo.type_x)
{
case RARCH_SCALE_VIEWPORT:
*out_width = info->pass->fbo.scale_x * final_viewport->Width;
break;
case RARCH_SCALE_ABSOLUTE:
*out_width = info->pass->fbo.abs_x;
break;
case RARCH_SCALE_INPUT:
*out_width = info->pass->fbo.scale_x * width;
break;
}
switch (info->pass->fbo.type_y)
{
case RARCH_SCALE_VIEWPORT:
*out_height = info->pass->fbo.scale_y * final_viewport->Height;
break;
case RARCH_SCALE_ABSOLUTE:
*out_height = info->pass->fbo.abs_y;
break;
case RARCH_SCALE_INPUT:
*out_height = info->pass->fbo.scale_y * height;
break;
}
}
void d3d9_make_d3dpp(d3d9_video_t *d3d,
const video_info_t *info, void *_d3dpp);
@ -287,10 +229,6 @@ void d3d9_calculate_rect(d3d9_video_t *d3d,
void d3d9_log_info(const struct LinkInfo *info);
#ifdef HAVE_OVERLAY
void d3d9_free_overlays(d3d9_video_t *d3d);
#endif
#if defined(HAVE_MENU) || defined(HAVE_OVERLAY)
void d3d9_free_overlay(d3d9_video_t *d3d, overlay_t *overlay);
@ -301,6 +239,7 @@ void d3d9_overlay_render(d3d9_video_t *d3d,
#endif
#if defined(HAVE_OVERLAY)
void d3d9_free_overlays(d3d9_video_t *d3d);
void d3d9_get_overlay_interface(void *data,
const video_overlay_interface_t **iface);
#endif

View file

@ -118,7 +118,7 @@ static INLINE bool d3d9_renderchain_add_pass(d3d9_renderchain_t *chain,
D3DUSAGE_RENDERTARGET,
chain->passes->data[
chain->passes->count - 1].info.pass->fbo.fp_fbo
? D3DFMT_A32B32G32R32F : d3d9_get_argb8888_format(),
? D3DFMT_A32B32G32R32F : D3D9_ARGB8888_FORMAT,
D3DPOOL_DEFAULT, 0, 0, 0, NULL, NULL, false);
if (!tex)
@ -287,7 +287,7 @@ static INLINE bool d3d9_renderchain_set_pass_size(
width, height, 1,
D3DUSAGE_RENDERTARGET,
pass2->info.pass->fbo.fp_fbo ?
D3DFMT_A32B32G32R32F : d3d9_get_argb8888_format(),
D3DFMT_A32B32G32R32F : D3D9_ARGB8888_FORMAT,
D3DPOOL_DEFAULT, 0, 0, 0,
NULL, NULL, false);
@ -303,6 +303,45 @@ static INLINE bool d3d9_renderchain_set_pass_size(
return true;
}
static INLINE void d3d9_convert_geometry(
const struct LinkInfo *info,
unsigned *out_width,
unsigned *out_height,
unsigned width,
unsigned height,
D3DVIEWPORT9 *final_viewport)
{
switch (info->pass->fbo.type_x)
{
case RARCH_SCALE_VIEWPORT:
*out_width = info->pass->fbo.scale_x * final_viewport->Width;
break;
case RARCH_SCALE_ABSOLUTE:
*out_width = info->pass->fbo.abs_x;
break;
case RARCH_SCALE_INPUT:
*out_width = info->pass->fbo.scale_x * width;
break;
}
switch (info->pass->fbo.type_y)
{
case RARCH_SCALE_VIEWPORT:
*out_height = info->pass->fbo.scale_y * final_viewport->Height;
break;
case RARCH_SCALE_ABSOLUTE:
*out_height = info->pass->fbo.abs_y;
break;
case RARCH_SCALE_INPUT:
*out_height = info->pass->fbo.scale_y * height;
break;
}
}
static INLINE void d3d9_recompute_pass_sizes(
LPDIRECT3DDEVICE9 dev,
d3d9_renderchain_t *chain,

View file

@ -785,7 +785,7 @@ static bool d3d9_cg_renderchain_create_first_pass(
struct shader_pass pass;
struct d3d_matrix ident;
unsigned fmt = (_fmt == RETRO_PIXEL_FORMAT_RGB565) ?
d3d9_get_rgb565_format() : d3d9_get_xrgb8888_format();
D3D9_RGB565_FORMAT : D3D9_XRGB8888_FORMAT;
d3d_matrix_identity(&ident);

View file

@ -297,8 +297,8 @@ static bool hlsl_d3d9_renderchain_create_first_pass(
struct shader_pass pass = { 0 };
unsigned fmt =
(_fmt == RETRO_PIXEL_FORMAT_RGB565)
? d3d9_get_rgb565_format()
: d3d9_get_xrgb8888_format();
? D3D9_RGB565_FORMAT
: D3D9_XRGB8888_FORMAT;
pass.info = *info;
pass.last_width = 0;
@ -515,22 +515,13 @@ static void hlsl_d3d9_renderchain_free(void *data)
static bool hlsl_d3d9_renderchain_init(
d3d9_video_t *d3d,
hlsl_renderchain_t *chain,
LPDIRECT3DDEVICE9 dev,
const D3DVIEWPORT9 *final_viewport,
const struct LinkInfo *info,
bool rgb32
unsigned fmt
)
{
hlsl_renderchain_t *chain = (hlsl_renderchain_t*)
d3d->renderchain_data;
unsigned fmt = (rgb32)
? RETRO_PIXEL_FORMAT_XRGB8888 : RETRO_PIXEL_FORMAT_RGB565;
if (!chain)
return false;
RARCH_LOG("[D3D9]: Using HLSL shader backend.\n");
chain->chain.dev = dev;
chain->chain.final_viewport = (D3DVIEWPORT9*)final_viewport;
chain->chain.frame_count = 0;
@ -886,11 +877,16 @@ static bool d3d9_hlsl_init_chain(d3d9_video_t *d3d,
if (!d3d->renderchain_data)
return false;
RARCH_LOG("[D3D9]: Using HLSL shader backend.\n");
if (
!hlsl_d3d9_renderchain_init(
d3d,
d3d, d3d->renderchain_data,
d3d->dev, &d3d->final_viewport, &link_info,
rgb32)
rgb32
? RETRO_PIXEL_FORMAT_XRGB8888
: RETRO_PIXEL_FORMAT_RGB565
)
)
return false;