gl: Move ownership of the global blitter object from texture cache to global

This commit is contained in:
kd-11 2026-03-09 21:09:25 +03:00 committed by kd-11
parent 0869ef421d
commit ef70a6e825
4 changed files with 13 additions and 9 deletions

View file

@ -398,6 +398,7 @@ void GLGSRender::on_init_thread()
m_ui_renderer.create();
m_video_output_pass.create();
gl::init_global_texture_resources();
m_gl_texture_cache.initialize();
m_prog_buffer.initialize

View file

@ -22,6 +22,13 @@ namespace gl
legacy_ring_buffer g_upload_transfer_buffer;
scratch_ring_buffer g_compute_decode_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()
{
@ -29,6 +36,8 @@ namespace gl
g_upload_transfer_buffer.remove();
g_compute_decode_buffer.remove();
g_deswizzle_scratch_buffer.remove();
g_blitter.destroy();
g_hw_blitter = nullptr;
}
template <typename WordType, bool SwapBytes>

View file

@ -86,5 +86,6 @@ namespace gl
extern std::unique_ptr<texture> g_vis_texture;
}
void init_global_texture_resources();
void destroy_global_texture_resources();
}

View file

@ -431,9 +431,7 @@ namespace gl
using gl::viewable_image::viewable_image;
};
blitter m_hw_blitter;
std::vector<std::unique_ptr<temporary_image_t>> m_temporary_surfaces;
const u32 max_cached_image_pool_size = 256;
private:
@ -815,16 +813,11 @@ namespace gl
using baseclass::texture_cache;
void initialize()
{
m_hw_blitter.init();
g_hw_blitter = &m_hw_blitter;
}
{}
void destroy() override
{
clear();
g_hw_blitter = nullptr;
m_hw_blitter.destroy();
}
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)
{
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)
{