Route framebuffer texture copies through GL backend

This commit is contained in:
2026-06-04 21:12:46 +02:00
parent 15c58bfb21
commit 6440bde002
13 changed files with 285 additions and 46 deletions

View File

@@ -1252,9 +1252,13 @@ void CanvasModeTransform::enter(kCanvasMode prev)
Canvas::I->m_layers[Canvas::I->m_current_layer_idx]->rtt(plane).bindFramebuffer();
m_tex[plane].create(bb_sz.x, bb_sz.y);
m_tex[plane].bind();
glCopyTexSubImage2D(
pp::renderer::gl::texture_2d_target(),
0, 0, 0, bb_min.x, bb_min.y, bb_sz.x, bb_sz.y);
copy_framebuffer_to_texture_2d(
0,
0,
static_cast<int>(bb_min.x),
static_cast<int>(bb_min.y),
static_cast<int>(bb_sz.x),
static_cast<int>(bb_sz.y));
m_tex[plane].unbind();
Canvas::I->m_layers[Canvas::I->m_current_layer_idx]->rtt(plane).unbindFramebuffer();
});
@@ -1433,9 +1437,13 @@ void CanvasModeTransform::leave(kCanvasMode next)
// copy fb content to texture for blending
set_active_texture_unit(0);
Canvas::I->m_tex2[i].bind();
glCopyTexSubImage2D(
pp::renderer::gl::texture_2d_target(),
0, bb_min.x, bb_min.y, bb_min.x, bb_min.y, bb_sz.x, bb_sz.y);
copy_framebuffer_to_texture_2d(
static_cast<int>(bb_min.x),
static_cast<int>(bb_min.y),
static_cast<int>(bb_min.x),
static_cast<int>(bb_min.y),
static_cast<int>(bb_sz.x),
static_cast<int>(bb_sz.y));
// slot for m_tex
set_active_texture_unit(1);
for (int j = 0; j < 6; j++)