Get rid of set_blend callback - the rgui draw texture function is
now in charge of making sure texture is properly blended - note to OV2/maister - test if this breaks D3D9 PC driver and if so fix accordingly
This commit is contained in:
parent
717621ac0d
commit
1171b7576a
1
driver.h
1
driver.h
|
@ -331,7 +331,6 @@ typedef struct video_overlay_interface
|
||||||
// Only used by RGUI atm.
|
// Only used by RGUI atm.
|
||||||
typedef struct video_poke_interface
|
typedef struct video_poke_interface
|
||||||
{
|
{
|
||||||
void (*set_blend)(void *data, bool enable);
|
|
||||||
void (*set_filtering)(void *data, unsigned index, bool smooth);
|
void (*set_filtering)(void *data, unsigned index, bool smooth);
|
||||||
#ifdef HAVE_FBO
|
#ifdef HAVE_FBO
|
||||||
uintptr_t (*get_current_framebuffer)(void *data);
|
uintptr_t (*get_current_framebuffer)(void *data);
|
||||||
|
|
|
@ -3435,12 +3435,6 @@ bool menu_iterate(void)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (g_extern.lifecycle_mode_state & (1ULL << MODE_MENU_DRAW))
|
|
||||||
{
|
|
||||||
if (driver.video_poke->set_blend)
|
|
||||||
driver.video_poke->set_blend(driver.video_data, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
// draw last frame for loading messages
|
// draw last frame for loading messages
|
||||||
if (driver.video_poke && driver.video_poke->set_texture_enable)
|
if (driver.video_poke && driver.video_poke->set_texture_enable)
|
||||||
{
|
{
|
||||||
|
@ -3582,12 +3576,6 @@ bool menu_iterate(void)
|
||||||
|
|
||||||
device_ptr->ctx_driver->swap_buffers();
|
device_ptr->ctx_driver->swap_buffers();
|
||||||
|
|
||||||
if (g_extern.lifecycle_mode_state & (1ULL << MODE_MENU_DRAW))
|
|
||||||
{
|
|
||||||
if (driver.video_poke->set_blend)
|
|
||||||
driver.video_poke->set_blend(driver.video_data, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (g_extern.lifecycle_mode_state & (1ULL << MODE_MENU_INGAME_EXIT) &&
|
if (g_extern.lifecycle_mode_state & (1ULL << MODE_MENU_INGAME_EXIT) &&
|
||||||
g_extern.lifecycle_mode_state & (1ULL << MODE_MENU_INGAME))
|
g_extern.lifecycle_mode_state & (1ULL << MODE_MENU_INGAME))
|
||||||
{
|
{
|
||||||
|
|
|
@ -963,18 +963,6 @@ void D3DVideo::resize(unsigned new_width, unsigned new_height)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void D3DVideo::set_blend(bool state)
|
|
||||||
{
|
|
||||||
if (state)
|
|
||||||
{
|
|
||||||
dev->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
|
|
||||||
dev->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
|
|
||||||
dev->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
dev->SetRenderState(D3DRS_ALPHABLENDENABLE, FALSE);
|
|
||||||
}
|
|
||||||
|
|
||||||
void D3DVideo::set_filtering(unsigned index, bool smooth)
|
void D3DVideo::set_filtering(unsigned index, bool smooth)
|
||||||
{
|
{
|
||||||
gfx_filter_type filter_type = smooth ? RARCH_FILTER_LINEAR : RARCH_FILTER_NEAREST;
|
gfx_filter_type filter_type = smooth ? RARCH_FILTER_LINEAR : RARCH_FILTER_NEAREST;
|
||||||
|
@ -1112,7 +1100,9 @@ void D3DVideo::overlay_render(overlay_t &overlay)
|
||||||
overlay.vert_buf->Unlock();
|
overlay.vert_buf->Unlock();
|
||||||
|
|
||||||
// enable alpha
|
// enable alpha
|
||||||
set_blend(true);
|
dev->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
|
||||||
|
dev->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
|
||||||
|
dev->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
|
||||||
|
|
||||||
// set vertex decl for overlay
|
// set vertex decl for overlay
|
||||||
D3DVERTEXELEMENT9 vElems[4] = {
|
D3DVERTEXELEMENT9 vElems[4] = {
|
||||||
|
@ -1165,7 +1155,7 @@ void D3DVideo::overlay_render(overlay_t &overlay)
|
||||||
}
|
}
|
||||||
|
|
||||||
//restore previous state
|
//restore previous state
|
||||||
set_blend(false);
|
dev->SetRenderState(D3DRS_ALPHABLENDENABLE, FALSE);
|
||||||
dev->SetViewport(&final_viewport);
|
dev->SetViewport(&final_viewport);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1399,11 +1389,6 @@ static void d3d9_get_overlay_interface(void *data, const video_overlay_interface
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static void d3d9_set_blend(void *data, bool enable)
|
|
||||||
{
|
|
||||||
reinterpret_cast<D3DVideo*>(data)->set_blend(enable);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void d3d9_set_filtering(void *data, unsigned index, bool smooth)
|
static void d3d9_set_filtering(void *data, unsigned index, bool smooth)
|
||||||
{
|
{
|
||||||
reinterpret_cast<D3DVideo*>(data)->set_filtering(index, smooth);
|
reinterpret_cast<D3DVideo*>(data)->set_filtering(index, smooth);
|
||||||
|
@ -1457,7 +1442,6 @@ static void d3d9_set_rgui_texture_enable(void *data, bool state)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static const video_poke_interface_t d3d9_poke_interface = {
|
static const video_poke_interface_t d3d9_poke_interface = {
|
||||||
d3d9_set_blend,
|
|
||||||
d3d9_set_filtering,
|
d3d9_set_filtering,
|
||||||
#ifdef HAVE_FBO
|
#ifdef HAVE_FBO
|
||||||
d3d9_get_current_framebuffer,
|
d3d9_get_current_framebuffer,
|
||||||
|
|
|
@ -71,7 +71,6 @@ class D3DVideo
|
||||||
bool set_shader(const std::string &path);
|
bool set_shader(const std::string &path);
|
||||||
void process_shader();
|
void process_shader();
|
||||||
|
|
||||||
void set_blend(bool state);
|
|
||||||
void set_filtering(unsigned index, bool smooth);
|
void set_filtering(unsigned index, bool smooth);
|
||||||
void set_font_rect(font_params_t *params);
|
void set_font_rect(font_params_t *params);
|
||||||
|
|
||||||
|
|
15
gfx/gl.c
15
gfx/gl.c
|
@ -1320,6 +1320,7 @@ static inline void gl_draw_texture(void *data)
|
||||||
gl_shader_use_func(gl, 0);
|
gl_shader_use_func(gl, 0);
|
||||||
gl_shader_set_coords_func(gl, &gl->coords, &gl->mvp_no_rot);
|
gl_shader_set_coords_func(gl, &gl->coords, &gl->mvp_no_rot);
|
||||||
|
|
||||||
|
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
|
||||||
glEnable(GL_BLEND);
|
glEnable(GL_BLEND);
|
||||||
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
|
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
|
||||||
glDisable(GL_BLEND);
|
glDisable(GL_BLEND);
|
||||||
|
@ -1805,10 +1806,8 @@ static void *gl_init(const video_info_t *video, const input_driver_t **input, vo
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef RARCH_CONSOLE
|
|
||||||
context_update_window_title_func(true);
|
context_update_window_title_func(true);
|
||||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||||
#endif
|
|
||||||
|
|
||||||
if (!resolve_extensions(gl))
|
if (!resolve_extensions(gl))
|
||||||
{
|
{
|
||||||
|
@ -2328,17 +2327,6 @@ static void gl_set_aspect_ratio(void *data, unsigned aspectratio_index)
|
||||||
gl->should_resize = true;
|
gl->should_resize = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void gl_set_blend(void *data, bool enable)
|
|
||||||
{
|
|
||||||
if (enable)
|
|
||||||
{
|
|
||||||
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
|
|
||||||
glEnable(GL_BLEND);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
glDisable(GL_BLEND);
|
|
||||||
}
|
|
||||||
|
|
||||||
#if defined(HAVE_RGUI) || defined(HAVE_RMENU)
|
#if defined(HAVE_RGUI) || defined(HAVE_RMENU)
|
||||||
static void gl_set_texture_frame(void *data,
|
static void gl_set_texture_frame(void *data,
|
||||||
const void *frame, bool rgb32, unsigned width, unsigned height,
|
const void *frame, bool rgb32, unsigned width, unsigned height,
|
||||||
|
@ -2413,7 +2401,6 @@ static void gl_show_mouse(void *data, bool state)
|
||||||
}
|
}
|
||||||
|
|
||||||
static const video_poke_interface_t gl_poke_interface = {
|
static const video_poke_interface_t gl_poke_interface = {
|
||||||
gl_set_blend,
|
|
||||||
gl_set_filtering,
|
gl_set_filtering,
|
||||||
#ifdef HAVE_FBO
|
#ifdef HAVE_FBO
|
||||||
gl_get_current_framebuffer,
|
gl_get_current_framebuffer,
|
||||||
|
|
|
@ -41,7 +41,6 @@ enum thread_cmd
|
||||||
CMD_OVERLAY_SET_ALPHA,
|
CMD_OVERLAY_SET_ALPHA,
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
CMD_POKE_SET_BLEND,
|
|
||||||
CMD_POKE_SET_FILTERING,
|
CMD_POKE_SET_FILTERING,
|
||||||
#ifdef HAVE_FBO
|
#ifdef HAVE_FBO
|
||||||
CMD_POKE_SET_FBO_STATE,
|
CMD_POKE_SET_FBO_STATE,
|
||||||
|
@ -276,11 +275,6 @@ static void thread_loop(void *data)
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
case CMD_POKE_SET_BLEND:
|
|
||||||
thr->poke->set_blend(thr->driver_data, thr->cmd_data.b);
|
|
||||||
thread_reply(thr, CMD_POKE_SET_BLEND);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case CMD_POKE_SET_FILTERING:
|
case CMD_POKE_SET_FILTERING:
|
||||||
thr->poke->set_filtering(thr->driver_data,
|
thr->poke->set_filtering(thr->driver_data,
|
||||||
thr->cmd_data.filtering.index,
|
thr->cmd_data.filtering.index,
|
||||||
|
@ -616,14 +610,6 @@ static void thread_get_overlay_interface(void *data, const video_overlay_interfa
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static void thread_set_blend(void *data, bool enable)
|
|
||||||
{
|
|
||||||
thread_video_t *thr = (thread_video_t*)data;
|
|
||||||
thr->cmd_data.b = enable;
|
|
||||||
thread_send_cmd(thr, CMD_POKE_SET_BLEND);
|
|
||||||
thread_wait_reply(thr, CMD_POKE_SET_BLEND);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void thread_set_filtering(void *data, unsigned index, bool smooth)
|
static void thread_set_filtering(void *data, unsigned index, bool smooth)
|
||||||
{
|
{
|
||||||
thread_video_t *thr = (thread_video_t*)data;
|
thread_video_t *thr = (thread_video_t*)data;
|
||||||
|
@ -686,7 +672,6 @@ static void thread_apply_state_changes(void *data)
|
||||||
}
|
}
|
||||||
|
|
||||||
static const video_poke_interface_t thread_poke = {
|
static const video_poke_interface_t thread_poke = {
|
||||||
thread_set_blend,
|
|
||||||
thread_set_filtering,
|
thread_set_filtering,
|
||||||
#ifdef HAVE_FBO
|
#ifdef HAVE_FBO
|
||||||
NULL,
|
NULL,
|
||||||
|
|
|
@ -741,7 +741,11 @@ static inline void xdk_d3d_draw_texture(void *data)
|
||||||
menu_texture->x = 0;
|
menu_texture->x = 0;
|
||||||
menu_texture->y = 0;
|
menu_texture->y = 0;
|
||||||
|
|
||||||
|
d3d->d3d_render_device->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_ONE);
|
||||||
|
d3d->d3d_render_device->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
|
||||||
|
d3d->d3d_render_device->SetRenderState(D3DRS_ALPHABLENDENABLE, true);
|
||||||
texture_image_render(menu_texture);
|
texture_image_render(menu_texture);
|
||||||
|
d3d->d3d_render_device->SetRenderState(D3DRS_ALPHABLENDENABLE, false);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -1012,18 +1016,6 @@ static void xdk_d3d_set_aspect_ratio(void *data, unsigned aspectratio_index)
|
||||||
|
|
||||||
static void xdk_d3d_set_filtering(void *data, unsigned index, bool set_smooth) { }
|
static void xdk_d3d_set_filtering(void *data, unsigned index, bool set_smooth) { }
|
||||||
|
|
||||||
static void xdk_d3d_set_blend(void *data, bool enable)
|
|
||||||
{
|
|
||||||
xdk_d3d_video_t *d3d = (xdk_d3d_video_t*)data;
|
|
||||||
|
|
||||||
if(enable)
|
|
||||||
{
|
|
||||||
d3d->d3d_render_device->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_ONE);
|
|
||||||
d3d->d3d_render_device->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
|
|
||||||
}
|
|
||||||
d3d->d3d_render_device->SetRenderState(D3DRS_ALPHABLENDENABLE, enable);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void xdk_d3d_apply_state_changes(void *data)
|
static void xdk_d3d_apply_state_changes(void *data)
|
||||||
{
|
{
|
||||||
xdk_d3d_video_t *d3d = (xdk_d3d_video_t*)data;
|
xdk_d3d_video_t *d3d = (xdk_d3d_video_t*)data;
|
||||||
|
@ -1059,7 +1051,6 @@ static void xdk_d3d_set_osd_msg(void *data, const char *msg, void *userdata)
|
||||||
}
|
}
|
||||||
|
|
||||||
static const video_poke_interface_t d3d_poke_interface = {
|
static const video_poke_interface_t d3d_poke_interface = {
|
||||||
xdk_d3d_set_blend,
|
|
||||||
xdk_d3d_set_filtering,
|
xdk_d3d_set_filtering,
|
||||||
#ifdef HAVE_FBO
|
#ifdef HAVE_FBO
|
||||||
NULL,
|
NULL,
|
||||||
|
|
Loading…
Reference in New Issue