summaryrefslogtreecommitdiffstatshomepage
path: root/src/osd/modules/render
diff options
context:
space:
mode:
Diffstat (limited to 'src/osd/modules/render')
-rw-r--r--src/osd/modules/render/aviwrite.cpp4
-rw-r--r--src/osd/modules/render/aviwrite.h10
-rw-r--r--src/osd/modules/render/bgfx/chain.cpp4
-rw-r--r--src/osd/modules/render/bgfx/chain.h8
-rw-r--r--src/osd/modules/render/bgfx/chainentry.h2
-rw-r--r--src/osd/modules/render/bgfx/chainmanager.cpp544
-rw-r--r--src/osd/modules/render/bgfx/chainmanager.h62
-rw-r--r--src/osd/modules/render/bgfx/clear.h8
-rw-r--r--src/osd/modules/render/bgfx/target.h2
-rw-r--r--src/osd/modules/render/bgfx/targetmanager.cpp8
-rw-r--r--src/osd/modules/render/bgfx/targetmanager.h4
-rw-r--r--src/osd/modules/render/bgfx/targetreader.cpp12
-rw-r--r--src/osd/modules/render/bgfx/texturemanager.cpp1
-rw-r--r--src/osd/modules/render/bgfxutil.cpp14
-rw-r--r--src/osd/modules/render/bgfxutil.h6
-rw-r--r--src/osd/modules/render/d3d/d3dhlsl.cpp18
-rw-r--r--src/osd/modules/render/drawbgfx.cpp183
-rw-r--r--src/osd/modules/render/drawbgfx.h24
-rw-r--r--src/osd/modules/render/drawogl.cpp2
-rw-r--r--src/osd/modules/render/drawsdl.cpp2
-rw-r--r--src/osd/modules/render/sliderdirtynotifier.h2
21 files changed, 461 insertions, 459 deletions
diff --git a/src/osd/modules/render/aviwrite.cpp b/src/osd/modules/render/aviwrite.cpp
index 6a27c567a43..9ff7c5ab17d 100644
--- a/src/osd/modules/render/aviwrite.cpp
+++ b/src/osd/modules/render/aviwrite.cpp
@@ -112,7 +112,7 @@ void avi_write::end_avi_recording()
m_output_file.reset();
}
- m_recording = false;
+ m_recording = false;
m_output_file = nullptr;
m_frame = 0;
}
@@ -158,4 +158,4 @@ void avi_write::audio_frame(const INT16 *buffer, int samples_this_frame)
end_avi_recording();
}
}
-} \ No newline at end of file
+}
diff --git a/src/osd/modules/render/aviwrite.h b/src/osd/modules/render/aviwrite.h
index 2a948964eb8..ce6325d6815 100644
--- a/src/osd/modules/render/aviwrite.h
+++ b/src/osd/modules/render/aviwrite.h
@@ -34,12 +34,12 @@ private:
void begin_avi_recording(std::string name);
void end_avi_recording();
- running_machine& m_machine;
+ running_machine& m_machine;
- bool m_recording;
+ bool m_recording;
- uint32_t m_width;
- uint32_t m_height;
+ uint32_t m_width;
+ uint32_t m_height;
avi_file::ptr m_output_file;
@@ -48,4 +48,4 @@ private:
attotime m_next_frame_time;
};
-#endif // __RENDER_AVIWRITE__ \ No newline at end of file
+#endif // __RENDER_AVIWRITE__
diff --git a/src/osd/modules/render/bgfx/chain.cpp b/src/osd/modules/render/bgfx/chain.cpp
index 8c517c8dc2f..9e399fef255 100644
--- a/src/osd/modules/render/bgfx/chain.cpp
+++ b/src/osd/modules/render/bgfx/chain.cpp
@@ -63,13 +63,13 @@ bgfx_chain::~bgfx_chain()
void bgfx_chain::process(render_primitive* prim, int view, int screen, texture_manager& textures, osd_window& window, uint64_t blend)
{
screen_device_iterator screen_iterator(window.machine().root_device());
- screen_device* screen_device = screen_iterator.byindex(screen);
+ screen_device* screen_device = screen_iterator.byindex(screen);
render_container &screen_container = screen_device->container();
int current_view = view;
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));
- uint32_t rotation_type =
+ uint32_t rotation_type =
(window.target()->orientation() & ROT90) == ROT90 ? 1 :
(window.target()->orientation() & ROT180) == ROT180 ? 2 :
(window.target()->orientation() & ROT270) == ROT270 ? 3 : 0;
diff --git a/src/osd/modules/render/bgfx/chain.h b/src/osd/modules/render/bgfx/chain.h
index 4e7a0587cd9..eff50f2aedb 100644
--- a/src/osd/modules/render/bgfx/chain.h
+++ b/src/osd/modules/render/bgfx/chain.h
@@ -42,15 +42,15 @@ public:
private:
std::string m_name;
std::string m_author;
- bool m_transform;
- target_manager& m_targets;
+ bool m_transform;
+ target_manager& m_targets;
std::vector<bgfx_slider*> m_sliders;
std::vector<bgfx_parameter*> m_params;
std::vector<bgfx_chain_entry*> m_entries;
- std::vector<bgfx_target*> m_target_list;
+ std::vector<bgfx_target*> m_target_list;
std::map<std::string, bgfx_slider*> m_slider_map;
int64_t m_current_time;
- uint32_t m_screen_index;
+ uint32_t m_screen_index;
};
#endif // __DRAWBGFX_CHAIN__
diff --git a/src/osd/modules/render/bgfx/chainentry.h b/src/osd/modules/render/bgfx/chainentry.h
index 271941537a7..4f4bede5327 100644
--- a/src/osd/modules/render/bgfx/chainentry.h
+++ b/src/osd/modules/render/bgfx/chainentry.h
@@ -61,7 +61,7 @@ private:
std::string m_name;
bgfx_effect* m_effect;
- clear_state* m_clear;
+ clear_state* m_clear;
std::vector<bgfx_suppressor*> m_suppressors;
std::vector<bgfx_input_pair*> m_inputs;
std::vector<bgfx_entry_uniform*> m_uniforms;
diff --git a/src/osd/modules/render/bgfx/chainmanager.cpp b/src/osd/modules/render/bgfx/chainmanager.cpp
index f1f530271f5..8614149b7eb 100644
--- a/src/osd/modules/render/bgfx/chainmanager.cpp
+++ b/src/osd/modules/render/bgfx/chainmanager.cpp
@@ -38,22 +38,22 @@ using namespace rapidjson;
const uint32_t chain_manager::CHAIN_NONE = 0;
chain_manager::chain_manager(running_machine& machine, osd_options& options, texture_manager& textures, target_manager& targets, effect_manager& effects, uint32_t window_index, slider_dirty_notifier& slider_notifier)
- : m_machine(machine)
- , m_options(options)
- , m_textures(textures)
- , m_targets(targets)
- , m_effects(effects)
- , m_window_index(window_index)
- , m_slider_notifier(slider_notifier)
- , m_screen_count(0)
+ : m_machine(machine)
+ , m_options(options)
+ , m_textures(textures)
+ , m_targets(targets)
+ , m_effects(effects)
+ , m_window_index(window_index)
+ , m_slider_notifier(slider_notifier)
+ , m_screen_count(0)
{
refresh_available_chains();
- parse_chain_selections(options.bgfx_screen_chains());
+ parse_chain_selections(options.bgfx_screen_chains());
}
chain_manager::~chain_manager()
{
- destroy_chains();
+ destroy_chains();
}
void chain_manager::refresh_available_chains()
@@ -181,280 +181,280 @@ bgfx_chain* chain_manager::load_chain(std::string name, uint32_t screen_index)
void chain_manager::parse_chain_selections(std::string chain_str)
{
- std::vector<std::string> chain_names = split_option_string(chain_str);
-
- while (m_current_chain.size() != chain_names.size())
- {
- m_screen_chains.push_back(nullptr);
- m_chain_names.push_back("");
- m_current_chain.push_back(CHAIN_NONE);
- }
-
- for (size_t index = 0; index < chain_names.size(); index++)
- {
- size_t chain_index = 0;
- for (chain_index = 0; chain_index < m_available_chains.size(); chain_index++)
- {
- if (m_available_chains[chain_index].m_name == chain_names[index])
- {
- break;
- }
- }
-
- if (chain_index < m_available_chains.size())
- {
- m_current_chain[index] = chain_index;
- m_chain_names[index] = m_available_chains[chain_index].m_name;
- }
- else
- {
- m_current_chain[index] = CHAIN_NONE;
- m_chain_names[index] = "";
- }
- }
+ std::vector<std::string> chain_names = split_option_string(chain_str);
+
+ while (m_current_chain.size() != chain_names.size())
+ {
+ m_screen_chains.push_back(nullptr);
+ m_chain_names.push_back("");
+ m_current_chain.push_back(CHAIN_NONE);
+ }
+
+ for (size_t index = 0; index < chain_names.size(); index++)
+ {
+ size_t chain_index = 0;
+ for (chain_index = 0; chain_index < m_available_chains.size(); chain_index++)
+ {
+ if (m_available_chains[chain_index].m_name == chain_names[index])
+ {
+ break;
+ }
+ }
+
+ if (chain_index < m_available_chains.size())
+ {
+ m_current_chain[index] = chain_index;
+ m_chain_names[index] = m_available_chains[chain_index].m_name;
+ }
+ else
+ {
+ m_current_chain[index] = CHAIN_NONE;
+ m_chain_names[index] = "";
+ }
+ }
}
std::vector<std::string> chain_manager::split_option_string(std::string chain_str) const
{
- std::vector<std::string> chain_names;
-
- uint32_t length = chain_str.length();
- uint32_t win = 0;
- uint32_t last_start = 0;
- for (uint32_t i = 0; i < length + 1; i++)
- {
- if (i == length || chain_str[i] == ',' || chain_str[i] == ':')
- {
- if (win == m_window_index)
- {
- chain_names.push_back(chain_str.substr(last_start, i - last_start));
- }
- last_start = i + 1;
- if (chain_str[i] == ':')
- {
- win++;
- }
- }
- }
-
- return chain_names;
+ std::vector<std::string> chain_names;
+
+ uint32_t length = chain_str.length();
+ uint32_t win = 0;
+ uint32_t last_start = 0;
+ for (uint32_t i = 0; i < length + 1; i++)
+ {
+ if (i == length || chain_str[i] == ',' || chain_str[i] == ':')
+ {
+ if (win == m_window_index)
+ {
+ chain_names.push_back(chain_str.substr(last_start, i - last_start));
+ }
+ last_start = i + 1;
+ if (chain_str[i] == ':')
+ {
+ win++;
+ }
+ }
+ }
+
+ return chain_names;
}
void chain_manager::load_chains()
{
- for (size_t chain = 0; chain < m_current_chain.size() && chain < m_screen_chains.size(); chain++)
- {
- if (m_current_chain[chain] != CHAIN_NONE)
- {
+ for (size_t chain = 0; chain < m_current_chain.size() && chain < m_screen_chains.size(); chain++)
+ {
+ if (m_current_chain[chain] != CHAIN_NONE)
+ {
chain_desc& desc = m_available_chains[m_current_chain[chain]];
m_chain_names[chain] = desc.m_name;
- m_screen_chains[chain] = load_chain(desc.m_path + "/" + desc.m_name, uint32_t(chain));
- }
- }
+ m_screen_chains[chain] = load_chain(desc.m_path + "/" + desc.m_name, uint32_t(chain));
+ }
+ }
}
void chain_manager::destroy_chains()
{
- for (size_t index = 0; index < m_screen_chains.size(); index++)
- {
- if (m_screen_chains[index] != nullptr)
- {
- delete m_screen_chains[index];
- m_screen_chains[index] = nullptr;
- }
- }
+ for (size_t index = 0; index < m_screen_chains.size(); index++)
+ {
+ if (m_screen_chains[index] != nullptr)
+ {
+ delete m_screen_chains[index];
+ m_screen_chains[index] = nullptr;
+ }
+ }
}
void chain_manager::reload_chains()
{
- destroy_chains();
- load_chains();
+ destroy_chains();
+ load_chains();
}
bgfx_chain* chain_manager::screen_chain(uint32_t screen)
{
- if (screen >= m_screen_chains.size())
- {
- return m_screen_chains[m_screen_chains.size() - 1];
- }
- else
- {
- return m_screen_chains[screen];
- }
+ if (screen >= m_screen_chains.size())
+ {
+ return m_screen_chains[m_screen_chains.size() - 1];
+ }
+ else
+ {
+ return m_screen_chains[screen];
+ }
}
void chain_manager::process_screen_quad(uint32_t view, uint32_t screen, render_primitive* prim, osd_window &window)
{
- uint16_t tex_width(prim->texture.width);
- uint16_t tex_height(prim->texture.height);
+ uint16_t tex_width(prim->texture.width);
+ uint16_t tex_height(prim->texture.height);
- const bgfx::Memory* mem = bgfx_util::mame_texture_data_to_bgfx_texture_data(prim->flags & PRIMFLAG_TEXFORMAT_MASK,
- tex_width, tex_height, prim->texture.rowpixels, prim->texture.palette, prim->texture.base);
+ const bgfx::Memory* mem = bgfx_util::mame_texture_data_to_bgfx_texture_data(prim->flags & PRIMFLAG_TEXFORMAT_MASK,
+ tex_width, tex_height, prim->texture.rowpixels, prim->texture.palette, prim->texture.base);
- std::string full_name = "screen" + std::to_string(screen);
- bgfx_texture *texture = new bgfx_texture(full_name, bgfx::TextureFormat::RGBA8, tex_width, tex_height, mem, BGFX_TEXTURE_U_CLAMP | BGFX_TEXTURE_V_CLAMP | BGFX_TEXTURE_MIN_POINT | BGFX_TEXTURE_MAG_POINT | BGFX_TEXTURE_MIP_POINT);
- m_textures.add_provider(full_name, texture);
+ std::string full_name = "screen" + std::to_string(screen);
+ bgfx_texture *texture = new bgfx_texture(full_name, bgfx::TextureFormat::RGBA8, tex_width, tex_height, mem, BGFX_TEXTURE_U_CLAMP | BGFX_TEXTURE_V_CLAMP | BGFX_TEXTURE_MIN_POINT | BGFX_TEXTURE_MAG_POINT | BGFX_TEXTURE_MIP_POINT);
+ m_textures.add_provider(full_name, texture);
- m_targets.update_target_sizes(screen, tex_width, tex_height, TARGET_STYLE_GUEST);
+ m_targets.update_target_sizes(screen, tex_width, tex_height, TARGET_STYLE_GUEST);
- bgfx_chain* chain = screen_chain(screen);
- chain->process(prim, view, screen, m_textures, window, bgfx_util::get_blend_state(PRIMFLAG_GET_BLENDMODE(prim->flags)));
- view += chain->applicable_passes();
+ bgfx_chain* chain = screen_chain(screen);
+ chain->process(prim, view, screen, m_textures, window, bgfx_util::get_blend_state(PRIMFLAG_GET_BLENDMODE(prim->flags)));
+ view += chain->applicable_passes();
- m_textures.add_provider(full_name, nullptr);
- delete texture;
+ m_textures.add_provider(full_name, nullptr);
+ delete texture;
}
std::vector<render_primitive*> chain_manager::count_screens(render_primitive* prim)
{
- std::vector<render_primitive*> screens;
+ std::vector<render_primitive*> screens;
- int screen_count = 0;
- while (prim != nullptr)
- {
- if (PRIMFLAG_GET_SCREENTEX(prim->flags))
- {
+ int screen_count = 0;
+ while (prim != nullptr)
+ {
+ if (PRIMFLAG_GET_SCREENTEX(prim->flags))
+ {
screen_count++;
screens.push_back(prim);
- }
- prim = prim->next();
- }
+ }
+ prim = prim->next();
+ }
- if (screen_count > 0)
- {
+ if (screen_count > 0)
+ {
update_screen_count(screen_count);
- m_targets.update_screen_count(screen_count);
- }
+ m_targets.update_screen_count(screen_count);
+ }
- return screens;
+ return screens;
}
void chain_manager::update_screen_count(uint32_t screen_count)
{
if (screen_count != m_screen_count)
{
- m_slider_notifier.set_sliders_dirty();
+ m_slider_notifier.set_sliders_dirty();
m_screen_count = screen_count;
- // Ensure we have one screen chain entry per screen
- while (m_screen_chains.size() < m_screen_count)
- {
- m_screen_chains.push_back(nullptr);
- m_chain_names.push_back("");
- m_current_chain.push_back(CHAIN_NONE);
- }
-
- // Ensure we have a screen chain selection slider per screen
- while (m_selection_sliders.size() < m_screen_count)
- {
- create_selection_slider(m_selection_sliders.size());
- }
-
- load_chains();
+ // Ensure we have one screen chain entry per screen
+ while (m_screen_chains.size() < m_screen_count)
+ {
+ m_screen_chains.push_back(nullptr);
+ m_chain_names.push_back("");
+ m_current_chain.push_back(CHAIN_NONE);
+ }
+
+ // Ensure we have a screen chain selection slider per screen
+ while (m_selection_sliders.size() < m_screen_count)
+ {
+ create_selection_slider(m_selection_sliders.size());
+ }
+
+ load_chains();
}
}
static INT32 update_trampoline(running_machine &machine, void *arg, int id, std::string *str, INT32 newval)
{
- if (arg != nullptr)
- {
- return reinterpret_cast<chain_manager*>(arg)->chain_changed(id, str, newval);
- }
- return 0;
+ if (arg != nullptr)
+ {
+ return reinterpret_cast<chain_manager*>(arg)->chain_changed(id, str, newval);
+ }
+ return 0;
}
int32_t chain_manager::chain_changed(int32_t id, std::string *str, int32_t newval)
{
- if (newval != SLIDER_NOCHANGE)
- {
- m_current_chain[id] = newval;
+ if (newval != SLIDER_NOCHANGE)
+ {
+ m_current_chain[id] = newval;
std::vector<std::vector<float>> settings = slider_settings();
- reload_chains();
- restore_slider_settings(id, settings);
+ reload_chains();
+ restore_slider_settings(id, settings);
- m_slider_notifier.set_sliders_dirty();
- }
+ m_slider_notifier.set_sliders_dirty();
+ }
- if (str != nullptr)
- {
- *str = string_format("%s", m_available_chains[m_current_chain[id]].m_name.c_str());
- }
+ if (str != nullptr)
+ {
+ *str = string_format("%s", m_available_chains[m_current_chain[id]].m_name.c_str());
+ }
- return m_current_chain[id];
+ return m_current_chain[id];
}
void chain_manager::create_selection_slider(uint32_t screen_index)
{
- if (screen_index < m_selection_sliders.size())
- {
- return;
- }
-
- std::string description = "Window " + std::to_string(m_window_index) + ", Screen " + std::to_string(screen_index) + " Effect:";
- size_t size = sizeof(slider_state) + description.length();
- slider_state *state = reinterpret_cast<slider_state *>(auto_alloc_array_clear(m_machine, UINT8, size));
-
- state->minval = 0;
- state->defval = m_current_chain[screen_index];
- state->maxval = m_available_chains.size() - 1;
- state->incval = 1;
- state->update = update_trampoline;
- state->arg = this;
- state->id = screen_index;
- strcpy(state->description, description.c_str());
-
- ui_menu_item item;
- item.text = state->description;
- item.subtext = "";
- item.flags = 0;
- item.ref = state;
- item.type = ui_menu_item_type::SLIDER;
- m_selection_sliders.push_back(item);
+ if (screen_index < m_selection_sliders.size())
+ {
+ return;
+ }
+
+ std::string description = "Window " + std::to_string(m_window_index) + ", Screen " + std::to_string(screen_index) + " Effect:";
+ size_t size = sizeof(slider_state) + description.length();
+ slider_state *state = reinterpret_cast<slider_state *>(auto_alloc_array_clear(m_machine, UINT8, size));
+
+ state->minval = 0;
+ state->defval = m_current_chain[screen_index];
+ state->maxval = m_available_chains.size() - 1;
+ state->incval = 1;
+ state->update = update_trampoline;
+ state->arg = this;
+ state->id = screen_index;
+ strcpy(state->description, description.c_str());
+
+ ui_menu_item item;
+ item.text = state->description;
+ item.subtext = "";
+ item.flags = 0;
+ item.ref = state;
+ item.type = ui_menu_item_type::SLIDER;
+ m_selection_sliders.push_back(item);
}
uint32_t chain_manager::handle_screen_chains(uint32_t view, render_primitive *starting_prim, osd_window& window)
{
- std::vector<render_primitive*> screens = count_screens(starting_prim);
-
- if (screens.size() == 0)
- {
- return 0;
- }
-
- // Process each screen as necessary
- uint32_t used_views = 0;
- uint32_t screen_index = 0;
- for (render_primitive* prim : screens)
- {
- if (m_current_chain[screen_index] == CHAIN_NONE || screen_chain(screen_index) == nullptr)
- {
+ std::vector<render_primitive*> screens = count_screens(starting_prim);
+
+ if (screens.size() == 0)
+ {
+ return 0;
+ }
+
+ // Process each screen as necessary
+ uint32_t used_views = 0;
+ uint32_t screen_index = 0;
+ for (render_primitive* prim : screens)
+ {
+ if (m_current_chain[screen_index] == CHAIN_NONE || screen_chain(screen_index) == nullptr)
+ {
screen_index++;
- continue;
- }
+ continue;
+ }
- 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);
- }
+ 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(view + used_views, screen_index, prim, window);
- used_views += screen_chain(screen_index)->applicable_passes();
+ m_targets.update_target_sizes(screen_index, screen_width, screen_height, TARGET_STYLE_NATIVE);
+ process_screen_quad(view + used_views, screen_index, prim, window);
+ used_views += screen_chain(screen_index)->applicable_passes();
- screen_index++;
- }
+ screen_index++;
+ }
- bgfx::setViewFrameBuffer(view + used_views, BGFX_INVALID_HANDLE);
+ bgfx::setViewFrameBuffer(view + used_views, BGFX_INVALID_HANDLE);
- return used_views;
+ return used_views;
}
bool chain_manager::has_applicable_chain(uint32_t screen)
{
- return screen < m_screen_count && m_current_chain[screen] != CHAIN_NONE && m_screen_chains[screen] != nullptr;
+ return screen < m_screen_count && m_current_chain[screen] != CHAIN_NONE && m_screen_chains[screen] != nullptr;
}
bool chain_manager::needs_sliders()
@@ -464,79 +464,79 @@ bool chain_manager::needs_sliders()
void chain_manager::restore_slider_settings(int32_t id, std::vector<std::vector<float>>& settings)
{
- if (!needs_sliders())
- {
- return;
- }
+ if (!needs_sliders())
+ {
+ return;
+ }
- for (size_t index = 0; index < m_screen_chains.size() && index < m_screen_count; index++)
- {
+ for (size_t index = 0; index < m_screen_chains.size() && index < m_screen_count; index++)
+ {
if (index == id)
{
continue;
}
- bgfx_chain* chain = m_screen_chains[index];
- if (chain == nullptr)
- {
- continue;
- }
+ bgfx_chain* chain = m_screen_chains[index];
+ if (chain == nullptr)
+ {
+ continue;
+ }
- std::vector<bgfx_slider*> chain_sliders = chain->sliders();
+ std::vector<bgfx_slider*> chain_sliders = chain->sliders();
for (size_t slider = 0; slider < chain_sliders.size(); slider++)
{
chain_sliders[slider]->import(settings[index][slider]);
}
- }
+ }
}
std::vector<std::vector<float>> chain_manager::slider_settings()
{
std::vector<std::vector<float>> curr;
- if (!needs_sliders())
- {
- return curr;
- }
+ if (!needs_sliders())
+ {
+ return curr;
+ }
- for (size_t index = 0; index < m_screen_chains.size() && index < m_screen_count; index++)
- {
+ for (size_t index = 0; index < m_screen_chains.size() && index < m_screen_count; index++)
+ {
curr.push_back(std::vector<float>());
- bgfx_chain* chain = m_screen_chains[index];
- if (chain == nullptr)
- {
- continue;
- }
+ bgfx_chain* chain = m_screen_chains[index];
+ if (chain == nullptr)
+ {
+ continue;
+ }
- std::vector<bgfx_slider*> chain_sliders = chain->sliders();
- for (bgfx_slider* slider : chain_sliders)
- {
+ std::vector<bgfx_slider*> chain_sliders = chain->sliders();
+ for (bgfx_slider* slider : chain_sliders)
+ {
curr[index].push_back(slider->value());
- }
- }
+ }
+ }
- return curr;
+ return curr;
}
std::vector<ui_menu_item> chain_manager::get_slider_list()
{
std::vector<ui_menu_item> sliders;
- if (!needs_sliders())
- {
- return sliders;
- }
+ if (!needs_sliders())
+ {
+ return sliders;
+ }
- for (size_t index = 0; index < m_screen_chains.size() && index < m_screen_count; index++)
- {
- bgfx_chain* chain = m_screen_chains[index];
+ for (size_t index = 0; index < m_screen_chains.size() && index < m_screen_count; index++)
+ {
+ bgfx_chain* chain = m_screen_chains[index];
sliders.push_back(m_selection_sliders[index]);
- if (chain == nullptr)
- {
- continue;
- }
+ if (chain == nullptr)
+ {
+ continue;
+ }
std::vector<bgfx_chain_entry*> chain_entries = chain->entries();
for (bgfx_chain_entry* entry : chain_entries)
@@ -552,34 +552,34 @@ std::vector<ui_menu_item> chain_manager::get_slider_list()
}
}
- std::vector<bgfx_slider*> chain_sliders = chain->sliders();
- for (bgfx_slider* slider : chain_sliders)
- {
- slider_state* core_slider = slider->core_slider();
-
- ui_menu_item item;
- item.text = core_slider->description;
- item.subtext = "";
- item.flags = 0;
- item.ref = core_slider;
- item.type = ui_menu_item_type::SLIDER;
- m_selection_sliders.push_back(item);
-
- sliders.push_back(item);
- }
-
- if (chain_sliders.size() > 0)
- {
- ui_menu_item item;
- item.text = MENU_SEPARATOR_ITEM;
- item.subtext = "";
- item.flags = 0;
- item.ref = nullptr;
- item.type = ui_menu_item_type::SEPARATOR;
-
- sliders.push_back(item);
+ std::vector<bgfx_slider*> chain_sliders = chain->sliders();
+ for (bgfx_slider* slider : chain_sliders)
+ {
+ slider_state* core_slider = slider->core_slider();
+
+ ui_menu_item item;
+ item.text = core_slider->description;
+ item.subtext = "";
+ item.flags = 0;
+ item.ref = core_slider;
+ item.type = ui_menu_item_type::SLIDER;
+ m_selection_sliders.push_back(item);
+
+ sliders.push_back(item);
+ }
+
+ if (chain_sliders.size() > 0)
+ {
+ ui_menu_item item;
+ item.text = MENU_SEPARATOR_ITEM;
+ item.subtext = "";
+ item.flags = 0;
+ item.ref = nullptr;
+ item.type = ui_menu_item_type::SEPARATOR;
+
+ sliders.push_back(item);
}
- }
+ }
- return sliders;
+ return sliders;
}
diff --git a/src/osd/modules/render/bgfx/chainmanager.h b/src/osd/modules/render/bgfx/chainmanager.h
index 0907cd27f57..979c487a237 100644
--- a/src/osd/modules/render/bgfx/chainmanager.h
+++ b/src/osd/modules/render/bgfx/chainmanager.h
@@ -49,10 +49,10 @@ public:
chain_manager(running_machine& machine, osd_options& options, texture_manager& textures, target_manager& targets, effect_manager& effects, uint32_t window_index, slider_dirty_notifier& slider_notifier);
~chain_manager();
- uint32_t handle_screen_chains(uint32_t view, render_primitive *starting_prim, osd_window& window);
- int32_t chain_changed(int32_t index, std::string *str, int32_t newval);
+ uint32_t handle_screen_chains(uint32_t view, render_primitive *starting_prim, osd_window& window);
+ int32_t chain_changed(int32_t index, std::string *str, int32_t newval);
- // Getters
+ // Getters
running_machine& machine() { return m_machine; }
osd_options& options() { return m_options; }
texture_manager& textures() { return m_textures; }
@@ -61,48 +61,48 @@ public:
slider_dirty_notifier& slider_notifier() { return m_slider_notifier; }
uint32_t window_index() { return m_window_index; }
uint32_t screen_count() { return m_screen_count; }
- bgfx_chain* screen_chain(uint32_t screen);
- bgfx_chain* load_chain(std::string name, uint32_t screen_index);
- bool has_applicable_chain(uint32_t screen);
- std::vector<ui_menu_item> get_slider_list();
- std::vector<std::vector<float>> slider_settings();
+ bgfx_chain* screen_chain(uint32_t screen);
+ bgfx_chain* load_chain(std::string name, uint32_t screen_index);
+ bool has_applicable_chain(uint32_t screen);
+ std::vector<ui_menu_item> get_slider_list();
+ std::vector<std::vector<float>> slider_settings();
- // Setters
- void restore_slider_settings(int32_t id, std::vector<std::vector<float>>& settings);
+ // Setters
+ void restore_slider_settings(int32_t id, std::vector<std::vector<float>>& settings);
private:
- void load_chains();
- void destroy_chains();
- void reload_chains();
+ void load_chains();
+ void destroy_chains();
+ void reload_chains();
void refresh_available_chains();
void destroy_unloaded_chains();
- void find_available_chains(std::string root, std::string path);
- void parse_chain_selections(std::string chain_str);
- std::vector<std::string> split_option_string(std::string chain_str) const;
+ void find_available_chains(std::string root, std::string path);
+ void parse_chain_selections(std::string chain_str);
+ std::vector<std::string> split_option_string(std::string chain_str) const;
void update_screen_count(uint32_t screen_count);
- void create_selection_slider(uint32_t screen_index);
- bool needs_sliders();
+ void create_selection_slider(uint32_t screen_index);
+ bool needs_sliders();
- std::vector<render_primitive*> count_screens(render_primitive* prim);
- void process_screen_quad(uint32_t view, uint32_t screen, render_primitive* prim, osd_window &window);
+ std::vector<render_primitive*> count_screens(render_primitive* prim);
+ void process_screen_quad(uint32_t view, uint32_t screen, render_primitive* prim, osd_window &window);
- running_machine& m_machine;
+ running_machine& m_machine;
osd_options& m_options;
texture_manager& m_textures;
target_manager& m_targets;
effect_manager& m_effects;
- uint32_t m_window_index;
- slider_dirty_notifier& m_slider_notifier;
- uint32_t m_screen_count;
- std::vector<chain_desc> m_available_chains;
- std::vector<bgfx_chain*> m_screen_chains;
- std::vector<std::string> m_chain_names;
- std::vector<ui_menu_item> m_selection_sliders;
- std::vector<int32_t> m_current_chain;
-
- static const uint32_t CHAIN_NONE;
+ uint32_t m_window_index;
+ slider_dirty_notifier& m_slider_notifier;
+ uint32_t m_screen_count;
+ std::vector<chain_desc> m_available_chains;
+ std::vector<bgfx_chain*> m_screen_chains;
+ std::vector<std::string> m_chain_names;
+ std::vector<ui_menu_item> m_selection_sliders;
+ std::vector<int32_t> m_current_chain;
+
+ static const uint32_t CHAIN_NONE;
};
#endif // __DRAWBGFX_CHAIN_MANAGER__
diff --git a/src/osd/modules/render/bgfx/clear.h b/src/osd/modules/render/bgfx/clear.h
index 3d45f9a7d62..01849a2cd90 100644
--- a/src/osd/modules/render/bgfx/clear.h
+++ b/src/osd/modules/render/bgfx/clear.h
@@ -21,10 +21,10 @@ public:
void bind(int view) const;
private:
- const uint64_t m_flags;
- const uint32_t m_color;
- const float m_depth;
- const uint8_t m_stencil;
+ const uint64_t m_flags;
+ const uint32_t m_color;
+ const float m_depth;
+ const uint8_t m_stencil;
};
#endif // __DRAWBGFX_CLEAR__
diff --git a/src/osd/modules/render/bgfx/target.h b/src/osd/modules/render/bgfx/target.h
index 17527f189a7..53fd70dd46b 100644
--- a/src/osd/modules/render/bgfx/target.h
+++ b/src/osd/modules/render/bgfx/target.h
@@ -52,7 +52,7 @@ public:
private:
std::string m_name;
bgfx::TextureFormat::Enum m_format;
- //bool m_readback;
+ //bool m_readback;
bgfx::FrameBufferHandle* m_targets;
bgfx::TextureHandle* m_textures;
diff --git a/src/osd/modules/render/bgfx/targetmanager.cpp b/src/osd/modules/render/bgfx/targetmanager.cpp
index 40895727437..4d56e33fc3e 100644
--- a/src/osd/modules/render/bgfx/targetmanager.cpp
+++ b/src/osd/modules/render/bgfx/targetmanager.cpp
@@ -176,12 +176,12 @@ void target_manager::create_target_if_nonexistent(uint32_t screen, std::string n
uint16_t target_manager::width(uint32_t style, uint32_t screen)
{
- std::vector<osd_dim>& sizes = style == TARGET_STYLE_GUEST ? m_guest_dims : m_native_dims;
- return screen < sizes.size() ? sizes[screen].width() : 0;
+ std::vector<osd_dim>& sizes = style == TARGET_STYLE_GUEST ? m_guest_dims : m_native_dims;
+ return screen < sizes.size() ? sizes[screen].width() : 0;
}
uint16_t target_manager::height(uint32_t style, uint32_t screen)
{
- std::vector<osd_dim>& sizes = style == TARGET_STYLE_GUEST ? m_guest_dims : m_native_dims;
- return screen < sizes.size() ? sizes[screen].height() : 0;
+ std::vector<osd_dim>& sizes = style == TARGET_STYLE_GUEST ? m_guest_dims : m_native_dims;
+ return screen < sizes.size() ? sizes[screen].height() : 0;
}
diff --git a/src/osd/modules/render/bgfx/targetmanager.h b/src/osd/modules/render/bgfx/targetmanager.h
index 0ab45e638d1..58007084080 100644
--- a/src/osd/modules/render/bgfx/targetmanager.h
+++ b/src/osd/modules/render/bgfx/targetmanager.h
@@ -39,8 +39,8 @@ public:
// Getters
bgfx_target* target(uint32_t screen, std::string name);
- uint16_t width(uint32_t style, uint32_t screen);
- uint16_t height(uint32_t style, uint32_t screen);
+ uint16_t width(uint32_t style, uint32_t screen);
+ uint16_t height(uint32_t style, uint32_t screen);
private:
void rebuild_targets(uint32_t screen, uint32_t style);
diff --git a/src/osd/modules/render/bgfx/targetreader.cpp b/src/osd/modules/render/bgfx/targetreader.cpp
index 9a8d6aebb63..71b82383a59 100644
--- a/src/osd/modules/render/bgfx/targetreader.cpp
+++ b/src/osd/modules/render/bgfx/targetreader.cpp
@@ -43,13 +43,13 @@ bgfx_target* target_reader::read_from_value(const Value& value, std::string pref
switch (mode)
{
case TARGET_STYLE_GUEST:
- width = chains.targets().width(TARGET_STYLE_GUEST, screen_index);
- height = chains.targets().height(TARGET_STYLE_GUEST, screen_index);
- break;
+ width = chains.targets().width(TARGET_STYLE_GUEST, screen_index);
+ height = chains.targets().height(TARGET_STYLE_GUEST, screen_index);
+ break;
case TARGET_STYLE_NATIVE:
- width = chains.targets().width(TARGET_STYLE_NATIVE, screen_index);
- height = chains.targets().height(TARGET_STYLE_NATIVE, screen_index);
- break;
+ width = chains.targets().width(TARGET_STYLE_NATIVE, screen_index);
+ height = chains.targets().height(TARGET_STYLE_NATIVE, screen_index);
+ break;
case TARGET_STYLE_CUSTOM:
if (!READER_CHECK(value.HasMember("width"), (prefix + "Target '" + target_name + "': Must have numeric value 'width'\n").c_str())) return nullptr;
if (!READER_CHECK(value["width"].IsNumber(), (prefix + "Target '" + target_name + "': Value 'width' must be a number\n").c_str())) return nullptr;
diff --git a/src/osd/modules/render/bgfx/texturemanager.cpp b/src/osd/modules/render/bgfx/texturemanager.cpp
index 0b2d0bb9969..2a637d3992d 100644
--- a/src/osd/modules/render/bgfx/texturemanager.cpp
+++ b/src/osd/modules/render/bgfx/texturemanager.cpp
@@ -120,4 +120,3 @@ void texture_manager::remove_provider(std::string name, bool delete_provider)
m_textures[name] = nullptr;
}
}
-
diff --git a/src/osd/modules/render/bgfxutil.cpp b/src/osd/modules/render/bgfxutil.cpp
index a5099534220..91b64ac60ce 100644
--- a/src/osd/modules/render/bgfxutil.cpp
+++ b/src/osd/modules/render/bgfxutil.cpp
@@ -17,15 +17,15 @@
const bgfx::Memory* bgfx_util::mame_texture_data_to_bgfx_texture_data(UINT32 format, int width, int height, int rowpixels, const rgb_t *palette, void *base)
{
const bgfx::Memory* mem = bgfx::alloc(width * height * 4);
- UINT32* data = reinterpret_cast<UINT32*>(mem->data);
- UINT16* src16 = reinterpret_cast<UINT16*>(base);
- UINT32* src32 = reinterpret_cast<UINT32*>(base);
+ UINT32* data = reinterpret_cast<UINT32*>(mem->data);
+ UINT16* src16 = reinterpret_cast<UINT16*>(base);
+ UINT32* src32 = reinterpret_cast<UINT32*>(base);
- for (int y = 0; y < height; y++)
+ for (int y = 0; y < height; y++)
{
- UINT32* dst_line = data + y * width;
- UINT16* src_line16 = src16 + y * rowpixels;
- UINT32* src_line32 = src32 + y * rowpixels;
+ UINT32* dst_line = data + y * width;
+ UINT16* src_line16 = src16 + y * rowpixels;
+ UINT32* src_line32 = src32 + y * rowpixels;
switch (format)
{
case PRIMFLAG_TEXFORMAT(TEXFORMAT_PALETTE16):
diff --git a/src/osd/modules/render/bgfxutil.h b/src/osd/modules/render/bgfxutil.h
index 0a776755dbf..4234165c12a 100644
--- a/src/osd/modules/render/bgfxutil.h
+++ b/src/osd/modules/render/bgfxutil.h
@@ -11,8 +11,8 @@
class bgfx_util
{
public:
- static const bgfx::Memory* mame_texture_data_to_bgfx_texture_data(UINT32 format, int width, int height, int rowpixels, const rgb_t *palette, void *base);
- static uint64_t get_blend_state(UINT32 blend);
+ static const bgfx::Memory* mame_texture_data_to_bgfx_texture_data(UINT32 format, int width, int height, int rowpixels, const rgb_t *palette, void *base);
+ static uint64_t get_blend_state(UINT32 blend);
};
-#endif // __RENDER_BGFX_UTIL__ \ No newline at end of file
+#endif // __RENDER_BGFX_UTIL__
diff --git a/src/osd/modules/render/d3d/d3dhlsl.cpp b/src/osd/modules/render/d3d/d3dhlsl.cpp
index 329706a9877..fef873f4309 100644
--- a/src/osd/modules/render/d3d/d3dhlsl.cpp
+++ b/src/osd/modules/render/d3d/d3dhlsl.cpp
@@ -2550,15 +2550,15 @@ std::vector<ui_menu_item> shaders::init_slider_list()
break;
}
- slider_state* core_slider = slider_alloc(*machine, desc->id, name.c_str(), desc->minval, desc->defval, desc->maxval, desc->step, slider_update_trampoline, slider_arg);
-
- ui_menu_item item;
- item.text = core_slider->description;
- item.subtext = "";
- item.flags = 0;
- item.ref = core_slider;
- item.type = ui_menu_item_type::SLIDER;
- sliders.push_back(item);
+ slider_state* core_slider = slider_alloc(*machine, desc->id, name.c_str(), desc->minval, desc->defval, desc->maxval, desc->step, slider_update_trampoline, slider_arg);
+
+ ui_menu_item item;
+ item.text = core_slider->description;
+ item.subtext = "";
+ item.flags = 0;
+ item.ref = core_slider;
+ item.type = ui_menu_item_type::SLIDER;
+ sliders.push_back(item);
}
}
}
diff --git a/src/osd/modules/render/drawbgfx.cpp b/src/osd/modules/render/drawbgfx.cpp
index 84f1ff0bd6f..7b43ac48331 100644
--- a/src/osd/modules/render/drawbgfx.cpp
+++ b/src/osd/modules/render/drawbgfx.cpp
@@ -94,16 +94,19 @@ renderer_bgfx::renderer_bgfx(std::shared_ptr<osd_window> w)
renderer_bgfx::~renderer_bgfx()
{
+ bgfx::reset(0, 0, BGFX_RESET_NONE);
+ bgfx::touch(0);
+ bgfx::frame();
if (m_avi_writer != nullptr && m_avi_writer->recording())
{
m_avi_writer->stop();
- m_targets->destroy_target("avibuffer0");
- m_avi_target = nullptr;
+ m_targets->destroy_target("avibuffer0");
+ m_avi_target = nullptr;
- bgfx::destroyTexture(m_avi_texture);
+ bgfx::destroyTexture(m_avi_texture);
- delete m_avi_writer;
+ delete m_avi_writer;
delete [] m_avi_data;
}
@@ -263,13 +266,13 @@ void renderer_bgfx::record()
m_avi_writer->stop();
m_targets->destroy_target("avibuffer0");
m_avi_target = nullptr;
- bgfx::destroyTexture(m_avi_texture);
+ bgfx::destroyTexture(m_avi_texture);
}
else
{
m_avi_writer->record(m_options.bgfx_avi_name());
- m_avi_target = m_targets->create_target("avibuffer", bgfx::TextureFormat::RGBA8, m_width[0], m_height[0], TARGET_STYLE_CUSTOM, false, true, 1, 0);
- m_avi_texture = bgfx::createTexture2D(m_width[0], m_height[0], 1, bgfx::TextureFormat::RGBA8, BGFX_TEXTURE_BLIT_DST | BGFX_TEXTURE_READ_BACK);
+ m_avi_target = m_targets->create_target("avibuffer", bgfx::TextureFormat::RGBA8, m_width[0], m_height[0], TARGET_STYLE_CUSTOM, false, true, 1, 0);
+ m_avi_texture = bgfx::createTexture2D(m_width[0], m_height[0], 1, bgfx::TextureFormat::RGBA8, BGFX_TEXTURE_BLIT_DST | BGFX_TEXTURE_READ_BACK);
}
}
@@ -307,7 +310,7 @@ bgfx::VertexDecl ScreenVertex::ms_decl;
void renderer_bgfx::put_packed_quad(render_primitive *prim, UINT32 hash, ScreenVertex* vertices)
{
rectangle_packer::packed_rectangle& rect = m_hash_to_entry[hash];
- float size = float(CACHE_SIZE);
+ float size = float(CACHE_SIZE);
float u0 = (float(rect.x()) + 0.5f) / size;
float v0 = (float(rect.y()) + 0.5f) / size;
float u1 = u0 + (float(rect.width()) - 1.0f) / size;
@@ -341,22 +344,22 @@ void renderer_bgfx::put_packed_quad(render_primitive *prim, UINT32 hash, ScreenV
std::swap(v[1], v[3]);
}
- vertex(&vertices[0], x[0], y[0], 0, rgba, u[0], v[0]);
- vertex(&vertices[1], x[1], y[1], 0, rgba, u[1], v[1]);
- vertex(&vertices[2], x[3], y[3], 0, rgba, u[3], v[3]);
- vertex(&vertices[3], x[3], y[3], 0, rgba, u[3], v[3]);
- vertex(&vertices[4], x[2], y[2], 0, rgba, u[2], v[2]);
- vertex(&vertices[5], x[0], y[0], 0, rgba, u[0], v[0]);
+ vertex(&vertices[0], x[0], y[0], 0, rgba, u[0], v[0]);
+ vertex(&vertices[1], x[1], y[1], 0, rgba, u[1], v[1]);
+ vertex(&vertices[2], x[3], y[3], 0, rgba, u[3], v[3]);
+ vertex(&vertices[3], x[3], y[3], 0, rgba, u[3], v[3]);
+ vertex(&vertices[4], x[2], y[2], 0, rgba, u[2], v[2]);
+ vertex(&vertices[5], x[0], y[0], 0, rgba, u[0], v[0]);
}
void renderer_bgfx::vertex(ScreenVertex* vertex, float x, float y, float z, uint32_t rgba, float u, float v)
{
- vertex->m_x = x;
- vertex->m_y = y;
- vertex->m_z = z;
- vertex->m_rgba = rgba;
- vertex->m_u = u;
- vertex->m_v = v;
+ vertex->m_x = x;
+ vertex->m_y = y;
+ vertex->m_z = z;
+ vertex->m_rgba = rgba;
+ vertex->m_u = u;
+ vertex->m_v = v;
}
void renderer_bgfx::render_post_screen_quad(int view, render_primitive* prim, bgfx::TransientVertexBuffer* buffer, int32_t screen)
@@ -368,12 +371,12 @@ void renderer_bgfx::render_post_screen_quad(int view, render_primitive* prim, bg
float u[4] = { prim->texcoords.tl.u, prim->texcoords.tr.u, prim->texcoords.bl.u, prim->texcoords.br.u };
float v[4] = { prim->texcoords.tl.v, prim->texcoords.tr.v, prim->texcoords.bl.v, prim->texcoords.br.v };
- vertex(&vertices[0], x[0], y[0], 0, 0xffffffff, u[0], v[0]);
- vertex(&vertices[1], x[1], y[1], 0, 0xffffffff, u[1], v[1]);
- vertex(&vertices[2], x[3], y[3], 0, 0xffffffff, u[3], v[3]);
- vertex(&vertices[3], x[3], y[3], 0, 0xffffffff, u[3], v[3]);
- vertex(&vertices[4], x[2], y[2], 0, 0xffffffff, u[2], v[2]);
- vertex(&vertices[5], x[0], y[0], 0, 0xffffffff, u[0], v[0]);
+ vertex(&vertices[0], x[0], y[0], 0, 0xffffffff, u[0], v[0]);
+ vertex(&vertices[1], x[1], y[1], 0, 0xffffffff, u[1], v[1]);
+ vertex(&vertices[2], x[3], y[3], 0, 0xffffffff, u[3], v[3]);
+ vertex(&vertices[3], x[3], y[3], 0, 0xffffffff, u[3], v[3]);
+ vertex(&vertices[4], x[2], y[2], 0, 0xffffffff, u[2], v[2]);
+ vertex(&vertices[5], x[0], y[0], 0, 0xffffffff, u[0], v[0]);
uint32_t texture_flags = BGFX_TEXTURE_U_CLAMP | BGFX_TEXTURE_V_CLAMP;
if (video_config.filter == 0)
@@ -389,33 +392,33 @@ void renderer_bgfx::render_post_screen_quad(int view, render_primitive* prim, bg
void renderer_bgfx::render_avi_quad()
{
- bgfx::setViewSeq(s_current_view, true);
- bgfx::setViewRect(s_current_view, 0, 0, m_width[0], m_height[0]);
- bgfx::setViewClear(s_current_view, BGFX_CLEAR_COLOR | BGFX_CLEAR_DEPTH, 0x00000000, 1.0f, 0);
-
- setup_matrices(s_current_view, false);
-
- bgfx::TransientVertexBuffer buffer;
- bgfx::allocTransientVertexBuffer(&buffer, 6, ScreenVertex::ms_decl);
- ScreenVertex* vertices = reinterpret_cast<ScreenVertex*>(buffer.data);
-
- float x[4] = { 0.0f, float(m_width[0]), 0.0f, float(m_width[0]) };
- float y[4] = { 0.0f, 0.0f, float(m_height[0]), float(m_height[0]) };
- float u[4] = { 0.0f, 1.0f, 0.0f, 1.0f };
- float v[4] = { 0.0f, 0.0f, 1.0f, 1.0f };
- UINT32 rgba = 0xffffffff;
-
- vertex(&vertices[0], x[0], y[0], 0, rgba, u[0], v[0]);
- vertex(&vertices[1], x[1], y[1], 0, rgba, u[1], v[1]);
- vertex(&vertices[2], x[3], y[3], 0, rgba, u[3], v[3]);
- vertex(&vertices[3], x[3], y[3], 0, rgba, u[3], v[3]);
- vertex(&vertices[4], x[2], y[2], 0, rgba, u[2], v[2]);
- vertex(&vertices[5], x[0], y[0], 0, rgba, u[0], v[0]);
-
- bgfx::setVertexBuffer(&buffer);
- bgfx::setTexture(0, m_gui_effect[PRIMFLAG_GET_BLENDMODE(BLENDMODE_NONE)]->uniform("s_tex")->handle(), m_avi_target->texture());
- m_gui_effect[PRIMFLAG_GET_BLENDMODE(BLENDMODE_NONE)]->submit(s_current_view);
- s_current_view++;
+ bgfx::setViewSeq(s_current_view, true);
+ bgfx::setViewRect(s_current_view, 0, 0, m_width[0], m_height[0]);
+ bgfx::setViewClear(s_current_view, BGFX_CLEAR_COLOR | BGFX_CLEAR_DEPTH, 0x00000000, 1.0f, 0);
+
+ setup_matrices(s_current_view, false);
+
+ bgfx::TransientVertexBuffer buffer;
+ bgfx::allocTransientVertexBuffer(&buffer, 6, ScreenVertex::ms_decl);
+ ScreenVertex* vertices = reinterpret_cast<ScreenVertex*>(buffer.data);
+
+ float x[4] = { 0.0f, float(m_width[0]), 0.0f, float(m_width[0]) };
+ float y[4] = { 0.0f, 0.0f, float(m_height[0]), float(m_height[0]) };
+ float u[4] = { 0.0f, 1.0f, 0.0f, 1.0f };
+ float v[4] = { 0.0f, 0.0f, 1.0f, 1.0f };
+ UINT32 rgba = 0xffffffff;
+
+ vertex(&vertices[0], x[0], y[0], 0, rgba, u[0], v[0]);
+ vertex(&vertices[1], x[1], y[1], 0, rgba, u[1], v[1]);
+ vertex(&vertices[2], x[3], y[3], 0, rgba, u[3], v[3]);
+ vertex(&vertices[3], x[3], y[3], 0, rgba, u[3], v[3]);
+ vertex(&vertices[4], x[2], y[2], 0, rgba, u[2], v[2]);
+ vertex(&vertices[5], x[0], y[0], 0, rgba, u[0], v[0]);
+
+ bgfx::setVertexBuffer(&buffer);
+ bgfx::setTexture(0, m_gui_effect[PRIMFLAG_GET_BLENDMODE(BLENDMODE_NONE)]->uniform("s_tex")->handle(), m_avi_target->texture());
+ m_gui_effect[PRIMFLAG_GET_BLENDMODE(BLENDMODE_NONE)]->submit(s_current_view);
+ s_current_view++;
}
void renderer_bgfx::render_textured_quad(render_primitive* prim, bgfx::TransientVertexBuffer* buffer)
@@ -423,17 +426,17 @@ void renderer_bgfx::render_textured_quad(render_primitive* prim, bgfx::Transient
ScreenVertex* vertices = reinterpret_cast<ScreenVertex*>(buffer->data);
UINT32 rgba = u32Color(prim->color.r * 255, prim->color.g * 255, prim->color.b * 255, prim->color.a * 255);
- float x[4] = { prim->bounds.x0, prim->bounds.x1, prim->bounds.x0, prim->bounds.x1 };
- float y[4] = { prim->bounds.y0, prim->bounds.y0, prim->bounds.y1, prim->bounds.y1 };
- float u[4] = { prim->texcoords.tl.u, prim->texcoords.tr.u, prim->texcoords.bl.u, prim->texcoords.br.u };
- float v[4] = { prim->texcoords.tl.v, prim->texcoords.tr.v, prim->texcoords.bl.v, prim->texcoords.br.v };
+ float x[4] = { prim->bounds.x0, prim->bounds.x1, prim->bounds.x0, prim->bounds.x1 };
+ float y[4] = { prim->bounds.y0, prim->bounds.y0, prim->bounds.y1, prim->bounds.y1 };
+ float u[4] = { prim->texcoords.tl.u, prim->texcoords.tr.u, prim->texcoords.bl.u, prim->texcoords.br.u };
+ float v[4] = { prim->texcoords.tl.v, prim->texcoords.tr.v, prim->texcoords.bl.v, prim->texcoords.br.v };
- vertex(&vertices[0], x[0], y[0], 0, rgba, u[0], v[0]);
- vertex(&vertices[1], x[1], y[1], 0, rgba, u[1], v[1]);
- vertex(&vertices[2], x[3], y[3], 0, rgba, u[3], v[3]);
- vertex(&vertices[3], x[3], y[3], 0, rgba, u[3], v[3]);
- vertex(&vertices[4], x[2], y[2], 0, rgba, u[2], v[2]);
- vertex(&vertices[5], x[0], y[0], 0, rgba, u[0], v[0]);
+ vertex(&vertices[0], x[0], y[0], 0, rgba, u[0], v[0]);
+ vertex(&vertices[1], x[1], y[1], 0, rgba, u[1], v[1]);
+ vertex(&vertices[2], x[3], y[3], 0, rgba, u[3], v[3]);
+ vertex(&vertices[3], x[3], y[3], 0, rgba, u[3], v[3]);
+ vertex(&vertices[4], x[2], y[2], 0, rgba, u[2], v[2]);
+ vertex(&vertices[5], x[0], y[0], 0, rgba, u[0], v[0]);
uint32_t texture_flags = BGFX_TEXTURE_U_CLAMP | BGFX_TEXTURE_V_CLAMP;
if (video_config.filter == 0)
@@ -657,11 +660,11 @@ int renderer_bgfx::draw(int update)
s_current_view = 0;
if (m_avi_writer == nullptr)
{
- uint32_t width = win->get_size().width();
- uint32_t height = win->get_size().height();
- m_avi_writer = new avi_write(win->machine(), width, height);
+ uint32_t width = win->get_size().width();
+ uint32_t height = win->get_size().height();
+ m_avi_writer = new avi_write(win->machine(), width, height);
m_avi_data = new uint8_t[width * height * 4];
- m_avi_bitmap.allocate(width, height);
+ m_avi_bitmap.allocate(width, height);
}
}
@@ -674,7 +677,7 @@ int renderer_bgfx::draw(int update)
m_height[window_index] = wdim.height();
win->m_primlist->acquire_lock();
- s_current_view += m_chains->handle_screen_chains(s_current_view, win->m_primlist->first(), *win.get());
+ s_current_view += m_chains->handle_screen_chains(s_current_view, win->m_primlist->first(), *win.get());
win->m_primlist->release_lock();
bool skip_frame = update_dimensions();
@@ -739,20 +742,20 @@ int renderer_bgfx::draw(int update)
win->m_primlist->release_lock();
- // This dummy draw call is here to make sure that view 0 is cleared
- // if no other draw calls are submitted to view 0.
- bgfx::touch(s_current_view > 0 ? s_current_view - 1 : 0);
+ // This dummy draw call is here to make sure that view 0 is cleared
+ // if no other draw calls are submitted to view 0.
+ bgfx::touch(s_current_view > 0 ? s_current_view - 1 : 0);
- // Advance to next frame. Rendering thread will be kicked to
+ // Advance to next frame. Rendering thread will be kicked to
// process submitted rendering primitives.
if (window_index == 0)
{
if (m_avi_writer != nullptr && m_avi_writer->recording() && window_index == 0)
{
- render_avi_quad();
- bgfx::touch(s_current_view);
- update_recording();
- }
+ render_avi_quad();
+ bgfx::touch(s_current_view);
+ update_recording();
+ }
bgfx::frame();
}
@@ -762,17 +765,17 @@ int renderer_bgfx::draw(int update)
void renderer_bgfx::update_recording()
{
- bgfx::blit(s_current_view > 0 ? s_current_view - 1 : 0, m_avi_texture, 0, 0, m_avi_target->target());
- bgfx::readTexture(m_avi_texture, m_avi_data);
+ bgfx::blit(s_current_view > 0 ? s_current_view - 1 : 0, m_avi_texture, 0, 0, m_avi_target->target());
+ bgfx::readTexture(m_avi_texture, m_avi_data);
- UINT32* start = &m_avi_bitmap.pix32(0);
- // loop over Y
- for (int i = 0; i < m_width[0] * m_height[0] * 4; i += 4)
- {
- *start++ = 0xff000000 | (m_avi_data[i + 0] << 16) | (m_avi_data[i + 1] << 8) | m_avi_data[i + 2];
- }
+ UINT32* start = &m_avi_bitmap.pix32(0);
+ // loop over Y
+ for (int i = 0; i < m_width[0] * m_height[0] * 4; i += 4)
+ {
+ *start++ = 0xff000000 | (m_avi_data[i + 0] << 16) | (m_avi_data[i + 1] << 8) | m_avi_data[i + 2];
+ }
- m_avi_writer->video_frame(m_avi_bitmap);
+ m_avi_writer->video_frame(m_avi_bitmap);
}
void renderer_bgfx::add_audio_to_recording(const INT16 *buffer, int samples_this_frame)
@@ -857,7 +860,7 @@ void renderer_bgfx::setup_view(uint32_t view_index, bool screen)
{
bgfx::setViewFrameBuffer(view_index, m_avi_target->target());
}
- bgfx::setViewClear(view_index, BGFX_CLEAR_COLOR | BGFX_CLEAR_DEPTH, 0x00000000, 1.0f, 0);
+ bgfx::setViewClear(view_index, BGFX_CLEAR_COLOR | BGFX_CLEAR_DEPTH, 0x00000000, 1.0f, 0);
}
setup_matrices(view_index, screen);
@@ -1157,11 +1160,11 @@ void renderer_bgfx::allocate_buffer(render_primitive *prim, UINT32 blend, bgfx::
std::vector<ui_menu_item> renderer_bgfx::get_slider_list()
{
- m_sliders_dirty = false;
- return m_chains->get_slider_list();
+ m_sliders_dirty = false;
+ return m_chains->get_slider_list();
}
void renderer_bgfx::set_sliders_dirty()
{
- m_sliders_dirty = true;
-} \ No newline at end of file
+ m_sliders_dirty = true;
+}
diff --git a/src/osd/modules/render/drawbgfx.h b/src/osd/modules/render/drawbgfx.h
index 7cc3bab9e47..5e500fedb1e 100644
--- a/src/osd/modules/render/drawbgfx.h
+++ b/src/osd/modules/render/drawbgfx.h
@@ -39,11 +39,11 @@ public:
static void exit();
virtual int create() override;
- virtual int draw(const int update) override;
+ virtual int draw(const int update) override;
virtual void add_audio_to_recording(const INT16 *buffer, int samples_this_frame) override;
- virtual std::vector<ui_menu_item> get_slider_list() override;
- virtual void set_sliders_dirty() override;
+ virtual std::vector<ui_menu_item> get_slider_list() override;
+ virtual void set_sliders_dirty() override;
#ifdef OSD_SDL
virtual int xy_to_render_target(const int x, const int y, int *xt, int *yt) override;
@@ -75,19 +75,19 @@ public:
return &win->target()->get_primitives();
}
- static const char* WINDOW_PREFIX;
+ static const char* WINDOW_PREFIX;
private:
- void vertex(ScreenVertex* vertex, float x, float y, float z, uint32_t rgba, float u, float v);
- void render_avi_quad();
- void update_recording();
+ void vertex(ScreenVertex* vertex, float x, float y, float z, uint32_t rgba, float u, float v);
+ void render_avi_quad();
+ void update_recording();
- bool update_dimensions();
+ bool update_dimensions();
- void setup_view(uint32_t view_index, bool screen);
+ void setup_view(uint32_t view_index, bool screen);
void init_ui_view();
- void setup_matrices(uint32_t view_index, bool screen);
+ void setup_matrices(uint32_t view_index, bool screen);
void allocate_buffer(render_primitive *prim, UINT32 blend, bgfx::TransientVertexBuffer *buffer);
enum buffer_status
@@ -146,8 +146,8 @@ private:
avi_write* m_avi_writer;
bgfx_target* m_avi_target;
- bgfx::TextureHandle m_avi_texture;
- bitmap_rgb32 m_avi_bitmap;
+ bgfx::TextureHandle m_avi_texture;
+ bitmap_rgb32 m_avi_bitmap;
uint8_t* m_avi_data;
static const uint16_t CACHE_SIZE;
diff --git a/src/osd/modules/render/drawogl.cpp b/src/osd/modules/render/drawogl.cpp
index 01d8085efd7..cf8dff7bd2d 100644
--- a/src/osd/modules/render/drawogl.cpp
+++ b/src/osd/modules/render/drawogl.cpp
@@ -631,7 +631,7 @@ void renderer_ogl::destroy_all_textures()
auto win = try_getwindow();
- // During destroy this can get called
+ // During destroy this can get called
// and the window is no longer available
if (win == nullptr)
return;
diff --git a/src/osd/modules/render/drawsdl.cpp b/src/osd/modules/render/drawsdl.cpp
index 622c360df7e..81943bf9165 100644
--- a/src/osd/modules/render/drawsdl.cpp
+++ b/src/osd/modules/render/drawsdl.cpp
@@ -679,7 +679,7 @@ render_primitive_list *renderer_sdl1::get_primitives()
auto win = try_getwindow();
if (win == nullptr)
return nullptr;
-
+
osd_dim nd = win->get_size();
if (nd != m_blit_dim)
{
diff --git a/src/osd/modules/render/sliderdirtynotifier.h b/src/osd/modules/render/sliderdirtynotifier.h
index bf9f645b894..aa95bb8fa82 100644
--- a/src/osd/modules/render/sliderdirtynotifier.h
+++ b/src/osd/modules/render/sliderdirtynotifier.h
@@ -19,4 +19,4 @@ public:
virtual void set_sliders_dirty() = 0;
};
-#endif // __RENDER_SLIDER_DIRTY_NOTIFIER__ \ No newline at end of file
+#endif // __RENDER_SLIDER_DIRTY_NOTIFIER__