gl: Move ownership of the global blitter object from texture cache to global
This commit is contained in:
@@ -398,6 +398,7 @@ void GLGSRender::on_init_thread()
|
|||||||
m_ui_renderer.create();
|
m_ui_renderer.create();
|
||||||
m_video_output_pass.create();
|
m_video_output_pass.create();
|
||||||
|
|
||||||
|
gl::init_global_texture_resources();
|
||||||
m_gl_texture_cache.initialize();
|
m_gl_texture_cache.initialize();
|
||||||
|
|
||||||
m_prog_buffer.initialize
|
m_prog_buffer.initialize
|
||||||
|
|||||||
@@ -22,6 +22,13 @@ namespace gl
|
|||||||
legacy_ring_buffer g_upload_transfer_buffer;
|
legacy_ring_buffer g_upload_transfer_buffer;
|
||||||
scratch_ring_buffer g_compute_decode_buffer;
|
scratch_ring_buffer g_compute_decode_buffer;
|
||||||
scratch_ring_buffer g_deswizzle_scratch_buffer;
|
scratch_ring_buffer g_deswizzle_scratch_buffer;
|
||||||
|
blitter g_blitter;
|
||||||
|
|
||||||
|
void init_global_texture_resources()
|
||||||
|
{
|
||||||
|
g_blitter.init();
|
||||||
|
g_hw_blitter = &g_blitter;
|
||||||
|
}
|
||||||
|
|
||||||
void destroy_global_texture_resources()
|
void destroy_global_texture_resources()
|
||||||
{
|
{
|
||||||
@@ -29,6 +36,8 @@ namespace gl
|
|||||||
g_upload_transfer_buffer.remove();
|
g_upload_transfer_buffer.remove();
|
||||||
g_compute_decode_buffer.remove();
|
g_compute_decode_buffer.remove();
|
||||||
g_deswizzle_scratch_buffer.remove();
|
g_deswizzle_scratch_buffer.remove();
|
||||||
|
g_blitter.destroy();
|
||||||
|
g_hw_blitter = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename WordType, bool SwapBytes>
|
template <typename WordType, bool SwapBytes>
|
||||||
|
|||||||
@@ -86,5 +86,6 @@ namespace gl
|
|||||||
extern std::unique_ptr<texture> g_vis_texture;
|
extern std::unique_ptr<texture> g_vis_texture;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void init_global_texture_resources();
|
||||||
void destroy_global_texture_resources();
|
void destroy_global_texture_resources();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -431,9 +431,7 @@ namespace gl
|
|||||||
using gl::viewable_image::viewable_image;
|
using gl::viewable_image::viewable_image;
|
||||||
};
|
};
|
||||||
|
|
||||||
blitter m_hw_blitter;
|
|
||||||
std::vector<std::unique_ptr<temporary_image_t>> m_temporary_surfaces;
|
std::vector<std::unique_ptr<temporary_image_t>> m_temporary_surfaces;
|
||||||
|
|
||||||
const u32 max_cached_image_pool_size = 256;
|
const u32 max_cached_image_pool_size = 256;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -815,16 +813,11 @@ namespace gl
|
|||||||
using baseclass::texture_cache;
|
using baseclass::texture_cache;
|
||||||
|
|
||||||
void initialize()
|
void initialize()
|
||||||
{
|
{}
|
||||||
m_hw_blitter.init();
|
|
||||||
g_hw_blitter = &m_hw_blitter;
|
|
||||||
}
|
|
||||||
|
|
||||||
void destroy() override
|
void destroy() override
|
||||||
{
|
{
|
||||||
clear();
|
clear();
|
||||||
g_hw_blitter = nullptr;
|
|
||||||
m_hw_blitter.destroy();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool is_depth_texture(u32 rsx_address, u32 rsx_size) override
|
bool is_depth_texture(u32 rsx_address, u32 rsx_size) override
|
||||||
@@ -870,7 +863,7 @@ namespace gl
|
|||||||
|
|
||||||
bool blit(gl::command_context& cmd, const rsx::blit_src_info& src, const rsx::blit_dst_info& dst, bool linear_interpolate, gl_render_targets& m_rtts)
|
bool blit(gl::command_context& cmd, const rsx::blit_src_info& src, const rsx::blit_dst_info& dst, bool linear_interpolate, gl_render_targets& m_rtts)
|
||||||
{
|
{
|
||||||
auto result = upload_scaled_image(src, dst, linear_interpolate, cmd, m_rtts, m_hw_blitter);
|
auto result = upload_scaled_image(src, dst, linear_interpolate, cmd, m_rtts, *g_hw_blitter);
|
||||||
|
|
||||||
if (result.succeeded)
|
if (result.succeeded)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user