summaryrefslogtreecommitdiffstatshomepage
path: root/src/osd/modules/render/drawbgfx.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/osd/modules/render/drawbgfx.cpp')
-rw-r--r--src/osd/modules/render/drawbgfx.cpp24
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++;