|
|
|
@ -229,6 +229,8 @@ FramebufferTextureInfo RendererOpenGL::LoadFBToScreenInfo(
|
|
|
|
|
info.display_texture = framebuffer_texture.resource.handle;
|
|
|
|
|
info.width = framebuffer.width;
|
|
|
|
|
info.height = framebuffer.height;
|
|
|
|
|
info.scaled_width = framebuffer.width;
|
|
|
|
|
info.scaled_height = framebuffer.height;
|
|
|
|
|
|
|
|
|
|
// TODO(Rodrigo): Read this from HLE
|
|
|
|
|
constexpr u32 block_height_log2 = 4;
|
|
|
|
@ -476,25 +478,13 @@ void RendererOpenGL::DrawScreen(const Tegra::FramebufferConfig& framebuffer,
|
|
|
|
|
|
|
|
|
|
if (anti_aliasing != Settings::AntiAliasing::None) {
|
|
|
|
|
glEnablei(GL_SCISSOR_TEST, 0);
|
|
|
|
|
auto viewport_width = info.width;
|
|
|
|
|
auto scissor_width = static_cast<u32>(crop.GetWidth());
|
|
|
|
|
if (scissor_width <= 0) {
|
|
|
|
|
scissor_width = viewport_width;
|
|
|
|
|
}
|
|
|
|
|
auto viewport_height = info.height;
|
|
|
|
|
auto scissor_height = static_cast<u32>(crop.GetHeight());
|
|
|
|
|
if (scissor_height <= 0) {
|
|
|
|
|
scissor_height = viewport_height;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
viewport_width = Settings::values.resolution_info.ScaleUp(viewport_width);
|
|
|
|
|
scissor_width = Settings::values.resolution_info.ScaleUp(scissor_width);
|
|
|
|
|
viewport_height = Settings::values.resolution_info.ScaleUp(viewport_height);
|
|
|
|
|
scissor_height = Settings::values.resolution_info.ScaleUp(scissor_height);
|
|
|
|
|
auto scissor_width = Settings::values.resolution_info.ScaleUp(framebuffer_texture.width);
|
|
|
|
|
auto viewport_width = static_cast<GLfloat>(scissor_width);
|
|
|
|
|
auto scissor_height = Settings::values.resolution_info.ScaleUp(framebuffer_texture.height);
|
|
|
|
|
auto viewport_height = static_cast<GLfloat>(scissor_height);
|
|
|
|
|
|
|
|
|
|
glScissorIndexed(0, 0, 0, scissor_width, scissor_height);
|
|
|
|
|
glViewportIndexedf(0, 0.0f, 0.0f, static_cast<GLfloat>(viewport_width),
|
|
|
|
|
static_cast<GLfloat>(viewport_height));
|
|
|
|
|
glViewportIndexedf(0, 0.0f, 0.0f, viewport_width, viewport_height);
|
|
|
|
|
|
|
|
|
|
glBindSampler(0, present_sampler.handle);
|
|
|
|
|
GLint old_read_fb;
|
|
|
|
@ -557,10 +547,8 @@ void RendererOpenGL::DrawScreen(const Tegra::FramebufferConfig& framebuffer,
|
|
|
|
|
fsr->InitBuffers();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const auto fsr_input_width = Settings::values.resolution_info.ScaleUp(info.width);
|
|
|
|
|
const auto fsr_input_height = Settings::values.resolution_info.ScaleUp(info.height);
|
|
|
|
|
glBindSampler(0, present_sampler.handle);
|
|
|
|
|
fsr->Draw(program_manager, layout.screen, fsr_input_width, fsr_input_height, crop);
|
|
|
|
|
fsr->Draw(program_manager, layout.screen, info.scaled_width, info.scaled_height, crop);
|
|
|
|
|
} else {
|
|
|
|
|
if (fsr->AreBuffersInitialized()) {
|
|
|
|
|
fsr->ReleaseBuffers();
|
|
|
|
|