diff options
Diffstat (limited to 'src/osd/modules/render/drawbgfx.cpp')
-rw-r--r-- | src/osd/modules/render/drawbgfx.cpp | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/src/osd/modules/render/drawbgfx.cpp b/src/osd/modules/render/drawbgfx.cpp index 85b76864b23..4798bdbd4b6 100644 --- a/src/osd/modules/render/drawbgfx.cpp +++ b/src/osd/modules/render/drawbgfx.cpp @@ -43,6 +43,8 @@ #include "bgfx/slider.h" #include "bgfx/target.h" +#include "imgui/imgui.h" + //============================================================ // DEBUGGING //============================================================ @@ -198,6 +200,8 @@ int renderer_bgfx::create() memset(m_white, 0xff, sizeof(uint32_t) * 16 * 16); m_texinfo.push_back(rectangle_packer::packable_rectangle(WHITE_HASH, PRIMFLAG_TEXFORMAT(TEXFORMAT_ARGB32), 16, 16, 16, nullptr, m_white)); + imguiCreate(); + return 0; } @@ -261,6 +265,8 @@ renderer_bgfx::~renderer_bgfx() void renderer_bgfx::exit() { + imguiDestroy(); + bgfx::shutdown(); s_window_set = false; } @@ -378,12 +384,6 @@ void renderer_bgfx::put_packed_quad(render_primitive *prim, UINT32 hash, ScreenV void renderer_bgfx::process_screen_quad(int screen, render_primitive* prim) { - uint32_t texture_flags = BGFX_TEXTURE_U_CLAMP | BGFX_TEXTURE_V_CLAMP; - if (video_config.filter == 0) - { - texture_flags |= BGFX_TEXTURE_MIN_POINT | BGFX_TEXTURE_MAG_POINT | BGFX_TEXTURE_MIP_POINT; - } - uint16_t tex_width(prim->texture.width); uint16_t tex_height(prim->texture.height); @@ -454,9 +454,15 @@ void renderer_bgfx::render_post_screen_quad(int view, render_primitive* prim, bg vertex[5].m_u = u[0]; vertex[5].m_v = v[0]; + uint32_t texture_flags = BGFX_TEXTURE_U_CLAMP | BGFX_TEXTURE_V_CLAMP; + if (video_config.filter == 0) + { + texture_flags |= BGFX_TEXTURE_MIN_POINT | BGFX_TEXTURE_MAG_POINT | BGFX_TEXTURE_MIP_POINT; + } + UINT32 blend = PRIMFLAG_GET_BLENDMODE(prim->flags); bgfx::setVertexBuffer(buffer); - bgfx::setTexture(0, m_screen_effect[blend]->uniform("s_tex")->handle(), m_targets->target(screen, "output")->texture()); + bgfx::setTexture(0, m_screen_effect[blend]->uniform("s_tex")->handle(), m_targets->target(screen, "output")->texture(), texture_flags); m_screen_effect[blend]->submit(view); } @@ -809,6 +815,10 @@ int renderer_bgfx::handle_screen_chains() } uint16_t screen_width(floor((prim->bounds.x1 - prim->bounds.x0) + 0.5f)); uint16_t screen_height(floor((prim->bounds.y1 - prim->bounds.y0) + 0.5f)); + if(window().swap_xy()) + { + std::swap(screen_width, screen_height); + } m_targets->update_target_sizes(screen_index, screen_width, screen_height, TARGET_STYLE_NATIVE); process_screen_quad(screen_index, prim); screen_index++; |