mirror of
https://github.com/libretro/RetroArch
synced 2025-01-30 21:32:45 +00:00
Remove D3DVIEWPORT dependency
This commit is contained in:
parent
ef17085216
commit
684374eec8
@ -1767,7 +1767,7 @@ void d3d_lock_rectangle_clear(void *tex,
|
||||
d3d_unlock_rectangle(tex);
|
||||
}
|
||||
|
||||
void d3d_set_viewports(void *_dev, D3DVIEWPORT *vp)
|
||||
void d3d_set_viewports(void *_dev, void *_vp)
|
||||
{
|
||||
switch (d3d_common_api)
|
||||
{
|
||||
@ -1775,6 +1775,7 @@ void d3d_set_viewports(void *_dev, D3DVIEWPORT *vp)
|
||||
{
|
||||
#ifdef HAVE_D3D9
|
||||
LPDIRECT3DDEVICE9 dev = (LPDIRECT3DDEVICE9)_dev;
|
||||
D3DVIEWPORT9 *vp = (D3DVIEWPORT9*)_vp;
|
||||
if (!dev)
|
||||
return;
|
||||
#ifdef __cplusplus
|
||||
@ -1789,6 +1790,7 @@ void d3d_set_viewports(void *_dev, D3DVIEWPORT *vp)
|
||||
{
|
||||
#ifdef HAVE_D3D8
|
||||
LPDIRECT3DDEVICE8 dev = (LPDIRECT3DDEVICE8)_dev;
|
||||
D3DVIEWPORT8 *vp = (D3DVIEWPORT8*)_vp;
|
||||
if (!dev)
|
||||
return;
|
||||
#ifdef __cplusplus
|
||||
|
@ -130,7 +130,7 @@ bool d3d_vertex_declaration_new(void *dev,
|
||||
|
||||
void d3d_vertex_declaration_free(void *data);
|
||||
|
||||
void d3d_set_viewports(void *dev, D3DVIEWPORT *vp);
|
||||
void d3d_set_viewports(void *dev, void *vp);
|
||||
|
||||
void d3d_enable_blend_func(void *data);
|
||||
|
||||
|
@ -63,6 +63,16 @@ typedef struct Vertex
|
||||
float u, v;
|
||||
} Vertex;
|
||||
|
||||
typedef struct d3d_video_viewport
|
||||
{
|
||||
DWORD x;
|
||||
DWORD y;
|
||||
DWORD width;
|
||||
DWORD height;
|
||||
float min_z;
|
||||
float max_z;
|
||||
} d3d_video_viewport_t;
|
||||
|
||||
typedef struct d3d_video
|
||||
{
|
||||
bool keep_aspect;
|
||||
@ -93,7 +103,7 @@ typedef struct d3d_video
|
||||
video_info_t video_info;
|
||||
WNDCLASSEX windowClass;
|
||||
void *dev;
|
||||
D3DVIEWPORT final_viewport;
|
||||
d3d_video_viewport_t final_viewport;
|
||||
|
||||
char *shader_path;
|
||||
|
||||
|
@ -246,10 +246,10 @@ static void d3d8_renderchain_viewport_info(void *data,
|
||||
|
||||
video_driver_get_size(&width, &height);
|
||||
|
||||
vp->x = d3d->final_viewport.X;
|
||||
vp->y = d3d->final_viewport.Y;
|
||||
vp->width = d3d->final_viewport.Width;
|
||||
vp->height = d3d->final_viewport.Height;
|
||||
vp->x = d3d->final_viewport.x;
|
||||
vp->y = d3d->final_viewport.y;
|
||||
vp->width = d3d->final_viewport.width;
|
||||
vp->height = d3d->final_viewport.height;
|
||||
|
||||
vp->full_width = width;
|
||||
vp->full_height = height;
|
||||
@ -261,6 +261,7 @@ static void d3d8_renderchain_render_pass(
|
||||
unsigned pass_index,
|
||||
unsigned rotation)
|
||||
{
|
||||
D3DVIEWPORT8 vp;
|
||||
settings_t *settings = config_get_ptr();
|
||||
|
||||
d3d_set_texture(d3dr, 0, chain->tex);
|
||||
@ -269,7 +270,7 @@ static void d3d8_renderchain_render_pass(
|
||||
d3d_set_sampler_minfilter(d3dr, pass_index, settings->bools.video_smooth ?
|
||||
D3DTEXF_LINEAR : D3DTEXF_POINT);
|
||||
|
||||
d3d_set_viewports(chain->dev, &d3d->final_viewport);
|
||||
d3d_set_viewports(chain->dev, (D3DVIEWPORT8*)&d3d->final_viewport);
|
||||
d3d_set_vertex_shader(d3dr, D3DFVF_CUSTOMVERTEX, NULL);
|
||||
d3d_set_stream_source(d3dr, 0, chain->vertex_buf, 0, sizeof(Vertex));
|
||||
d3d8_renderchain_set_mvp(d3d, chain, NULL, &d3d->mvp_rotate);
|
||||
@ -297,7 +298,6 @@ static bool d3d8_renderchain_render(void *data, const void *frame,
|
||||
static bool d3d8_renderchain_init(void *data,
|
||||
const void *_video_info,
|
||||
void *dev_data,
|
||||
const void *final_viewport_data,
|
||||
const void *info_data,
|
||||
bool rgb32
|
||||
)
|
||||
@ -310,7 +310,6 @@ static bool d3d8_renderchain_init(void *data,
|
||||
d3d8_renderchain_t *chain = (d3d8_renderchain_t*)d3d->renderchain_data;
|
||||
unsigned fmt = (rgb32) ? RETRO_PIXEL_FORMAT_XRGB8888 : RETRO_PIXEL_FORMAT_RGB565;
|
||||
struct video_viewport *custom_vp = video_viewport_get_custom();
|
||||
(void)final_viewport_data;
|
||||
|
||||
video_driver_get_size(&width, &height);
|
||||
|
||||
@ -365,7 +364,7 @@ static bool d3d8_init_chain(d3d_video_t *d3d, const video_info_t *video_info)
|
||||
!d3d8_renderchain_init(
|
||||
d3d,
|
||||
&d3d->video_info,
|
||||
d3d->dev, &d3d->final_viewport, &link_info,
|
||||
d3d->dev, &link_info,
|
||||
d3d->video_info.rgb32)
|
||||
)
|
||||
{
|
||||
@ -425,6 +424,7 @@ static void d3d8_overlay_render(d3d_video_t *d3d,
|
||||
video_frame_info_t *video_info,
|
||||
overlay_t *overlay)
|
||||
{
|
||||
D3DVIEWPORT8 vp_full;
|
||||
struct video_viewport vp;
|
||||
void *verts;
|
||||
unsigned i;
|
||||
@ -483,7 +483,6 @@ static void d3d8_overlay_render(d3d_video_t *d3d,
|
||||
|
||||
if (overlay->fullscreen)
|
||||
{
|
||||
D3DVIEWPORT vp_full;
|
||||
|
||||
vp_full.X = 0;
|
||||
vp_full.Y = 0;
|
||||
@ -504,6 +503,7 @@ static void d3d8_overlay_render(d3d_video_t *d3d,
|
||||
|
||||
/* Restore previous state. */
|
||||
d3d_disable_blend_func(d3d->dev);
|
||||
|
||||
d3d_set_viewports(d3d->dev, &d3d->final_viewport);
|
||||
}
|
||||
|
||||
@ -799,7 +799,6 @@ static void d3d8_set_viewport(void *data,
|
||||
bool allow_rotate)
|
||||
{
|
||||
D3DMATRIX proj, ortho, rot, matrix;
|
||||
D3DVIEWPORT viewport;
|
||||
int x = 0;
|
||||
int y = 0;
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
@ -813,14 +812,12 @@ static void d3d8_set_viewport(void *data,
|
||||
if (y < 0)
|
||||
y = 0;
|
||||
|
||||
viewport.X = x;
|
||||
viewport.Y = y;
|
||||
viewport.Width = width;
|
||||
viewport.Height = height;
|
||||
viewport.MinZ = 0.0f;
|
||||
viewport.MaxZ = 1.0f;
|
||||
|
||||
d3d->final_viewport = viewport;
|
||||
d3d->final_viewport.x = x;
|
||||
d3d->final_viewport.y = y;
|
||||
d3d->final_viewport.width = width;
|
||||
d3d->final_viewport.height= height;
|
||||
d3d->final_viewport.min_z = 0.0f;
|
||||
d3d->final_viewport.max_z = 0.0f;
|
||||
|
||||
d3d_matrix_ortho_off_center_lh(&ortho, 0, 1, 0, 1, 0.0f, 1.0f);
|
||||
d3d_matrix_identity(&rot);
|
||||
@ -1426,7 +1423,7 @@ static bool d3d8_frame(void *data, const void *frame,
|
||||
uint64_t frame_count, unsigned pitch,
|
||||
const char *msg, video_frame_info_t *video_info)
|
||||
{
|
||||
D3DVIEWPORT screen_vp;
|
||||
D3DVIEWPORT8 screen_vp;
|
||||
unsigned i = 0;
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
unsigned width = video_info->width;
|
||||
|
@ -411,7 +411,7 @@ static void d3d9_overlay_render(d3d_video_t *d3d,
|
||||
|
||||
if (overlay->fullscreen)
|
||||
{
|
||||
D3DVIEWPORT vp_full;
|
||||
D3DVIEWPORT9 vp_full;
|
||||
|
||||
vp_full.X = 0;
|
||||
vp_full.Y = 0;
|
||||
@ -722,7 +722,7 @@ static void d3d9_set_viewport(void *data,
|
||||
bool force_full,
|
||||
bool allow_rotate)
|
||||
{
|
||||
D3DVIEWPORT viewport;
|
||||
D3DVIEWPORT9 viewport;
|
||||
int x = 0;
|
||||
int y = 0;
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
@ -736,14 +736,12 @@ static void d3d9_set_viewport(void *data,
|
||||
if (y < 0)
|
||||
y = 0;
|
||||
|
||||
viewport.X = x;
|
||||
viewport.Y = y;
|
||||
viewport.Width = width;
|
||||
viewport.Height = height;
|
||||
viewport.MinZ = 0.0f;
|
||||
viewport.MaxZ = 1.0f;
|
||||
|
||||
d3d->final_viewport = viewport;
|
||||
d3d->final_viewport.x = x;
|
||||
d3d->final_viewport.y = y;
|
||||
d3d->final_viewport.width = width;
|
||||
d3d->final_viewport.height = height;
|
||||
d3d->final_viewport.min_z = 0.0f;
|
||||
d3d->final_viewport.max_z = 1.0f;
|
||||
|
||||
if (d3d->renderchain_driver && d3d->renderchain_driver->set_font_rect)
|
||||
d3d->renderchain_driver->set_font_rect(d3d, NULL);
|
||||
@ -1384,7 +1382,7 @@ static bool d3d9_frame(void *data, const void *frame,
|
||||
uint64_t frame_count, unsigned pitch,
|
||||
const char *msg, video_frame_info_t *video_info)
|
||||
{
|
||||
D3DVIEWPORT screen_vp;
|
||||
D3DVIEWPORT9 screen_vp;
|
||||
unsigned i = 0;
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
unsigned width = video_info->width;
|
||||
|
@ -112,7 +112,7 @@ typedef struct cg_renderchain
|
||||
void *dev;
|
||||
const video_info_t *video_info;
|
||||
state_tracker_t *state_tracker;
|
||||
D3DVIEWPORT *final_viewport;
|
||||
D3DVIEWPORT9 *final_viewport;
|
||||
CGcontext cgCtx;
|
||||
struct pass_vector_list *passes;
|
||||
struct lut_info_vector_list *luts;
|
||||
@ -913,7 +913,7 @@ static bool d3d9_cg_renderchain_init(void *data,
|
||||
chain->dev = (void*)dev_;
|
||||
chain->video_info = video_info;
|
||||
chain->state_tracker = NULL;
|
||||
chain->final_viewport = (D3DVIEWPORT*)final_viewport_;
|
||||
chain->final_viewport = (D3DVIEWPORT9*)final_viewport_;
|
||||
chain->frame_count = 0;
|
||||
chain->pixel_size = (fmt == RETRO_PIXEL_FORMAT_RGB565) ? 2 : 4;
|
||||
|
||||
@ -971,9 +971,9 @@ static void d3d9_cg_renderchain_convert_geometry(
|
||||
unsigned height,
|
||||
void *final_viewport_data)
|
||||
{
|
||||
const struct LinkInfo *info = (const struct LinkInfo*)info_data;
|
||||
cg_renderchain_t *chain = (cg_renderchain_t*)data;
|
||||
D3DVIEWPORT *final_viewport = (D3DVIEWPORT*)final_viewport_data;
|
||||
const struct LinkInfo *info = (const struct LinkInfo*)info_data;
|
||||
cg_renderchain_t *chain = (cg_renderchain_t*)data;
|
||||
D3DVIEWPORT9 *final_viewport = (D3DVIEWPORT9*)final_viewport_data;
|
||||
|
||||
if (!chain || !info)
|
||||
return;
|
||||
@ -1059,12 +1059,12 @@ static void d3d9_cg_renderchain_set_final_viewport(
|
||||
void *renderchain_data,
|
||||
const void *viewport_data)
|
||||
{
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
cg_renderchain_t *chain = (cg_renderchain_t*)renderchain_data;
|
||||
const D3DVIEWPORT *final_viewport = (const D3DVIEWPORT*)viewport_data;
|
||||
const D3DVIEWPORT9 *final_viewport = (const D3DVIEWPORT9*)viewport_data;
|
||||
|
||||
if (chain)
|
||||
chain->final_viewport = (D3DVIEWPORT*)final_viewport;
|
||||
if (chain && final_viewport)
|
||||
chain->final_viewport = (D3DVIEWPORT9*)final_viewport;
|
||||
|
||||
d3d_recompute_pass_sizes(chain, d3d);
|
||||
}
|
||||
@ -1324,7 +1324,7 @@ static void cg_d3d9_renderchain_set_vertices(
|
||||
|
||||
static void cg_d3d9_renderchain_set_viewport(
|
||||
cg_renderchain_t *chain,
|
||||
D3DVIEWPORT *vp)
|
||||
D3DVIEWPORT9 *vp)
|
||||
{
|
||||
d3d_set_viewports(chain->dev, vp);
|
||||
}
|
||||
@ -1505,9 +1505,9 @@ static bool d3d9_cg_renderchain_render(
|
||||
/* In-between render target passes. */
|
||||
for (i = 0; i < chain->passes->count - 1; i++)
|
||||
{
|
||||
D3DVIEWPORT viewport = {0};
|
||||
struct Pass *from_pass = (struct Pass*)&chain->passes->data[i];
|
||||
struct Pass *to_pass = (struct Pass*)&chain->passes->data[i + 1];
|
||||
D3DVIEWPORT9 viewport = {0};
|
||||
struct Pass *from_pass = (struct Pass*)&chain->passes->data[i];
|
||||
struct Pass *to_pass = (struct Pass*)&chain->passes->data[i + 1];
|
||||
|
||||
d3d_texture_get_surface_level(to_pass->tex, 0, (void**)&target);
|
||||
|
||||
@ -1653,13 +1653,13 @@ static bool d3d9_cg_renderchain_read_viewport(
|
||||
unsigned pitchpix = rect.Pitch / 4;
|
||||
const uint32_t *pixels = (const uint32_t*)rect.pBits;
|
||||
|
||||
pixels += d3d->final_viewport.X;
|
||||
pixels += (d3d->final_viewport.Height - 1) * pitchpix;
|
||||
pixels -= d3d->final_viewport.Y * pitchpix;
|
||||
pixels += d3d->final_viewport.x;
|
||||
pixels += (d3d->final_viewport.height - 1) * pitchpix;
|
||||
pixels -= d3d->final_viewport.y * pitchpix;
|
||||
|
||||
for (y = 0; y < d3d->final_viewport.Height; y++, pixels -= pitchpix)
|
||||
for (y = 0; y < d3d->final_viewport.height; y++, pixels -= pitchpix)
|
||||
{
|
||||
for (x = 0; x < d3d->final_viewport.Width; x++)
|
||||
for (x = 0; x < d3d->final_viewport.width; x++)
|
||||
{
|
||||
*buffer++ = (pixels[x] >> 0) & 0xff;
|
||||
*buffer++ = (pixels[x] >> 8) & 0xff;
|
||||
@ -1691,10 +1691,10 @@ static void d3d9_cg_renderchain_viewport_info(
|
||||
|
||||
video_driver_get_size(&width, &height);
|
||||
|
||||
vp->x = d3d->final_viewport.X;
|
||||
vp->y = d3d->final_viewport.Y;
|
||||
vp->width = d3d->final_viewport.Width;
|
||||
vp->height = d3d->final_viewport.Height;
|
||||
vp->x = d3d->final_viewport.x;
|
||||
vp->y = d3d->final_viewport.y;
|
||||
vp->width = d3d->final_viewport.width;
|
||||
vp->height = d3d->final_viewport.height;
|
||||
|
||||
vp->full_width = width;
|
||||
vp->full_height = height;
|
||||
|
Loading…
x
Reference in New Issue
Block a user