diff --git a/src/core/settings.h b/src/core/settings.h index cdfb2f742d..284d9b972a 100644 --- a/src/core/settings.h +++ b/src/core/settings.h @@ -422,6 +422,8 @@ struct Values { std::string yuzu_username; std::string yuzu_token; + bool shaggie; + // Add-Ons std::map> disabled_addons; } extern values; diff --git a/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp b/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp index 073a5814d8..18869e9d84 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp +++ b/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp @@ -2759,7 +2759,10 @@ void CachedSurface::UploadGLMipmapTexture(u32 mip_map, GLuint read_fb_handle, if (tuple.compressed) { switch (params.target) { case SurfaceTarget::Texture2D: - Shaggizise(); + glCompressedTextureSubImage2D( + texture.handle, mip_map, 0, 0, static_cast(params.MipWidth(mip_map)), + static_cast(params.MipHeight(mip_map)), tuple.internal_format, image_size, + &gl_buffer[mip_map][buffer_offset]); break; case SurfaceTarget::Texture3D: glCompressedTextureSubImage3D( @@ -2803,7 +2806,14 @@ void CachedSurface::UploadGLMipmapTexture(u32 mip_map, GLuint read_fb_handle, tuple.format, tuple.type, &gl_buffer[mip_map][buffer_offset]); break; case SurfaceTarget::Texture2D: - Shaggizise(); + if (Settings::values.shaggie) { + Shaggizise(); + } else { + glTextureSubImage2D(texture.handle, mip_map, x0, y0, + static_cast(rect.GetWidth()), + static_cast(rect.GetHeight()), tuple.format, + tuple.type, &gl_buffer[mip_map][buffer_offset]); + } break; case SurfaceTarget::Texture3D: glTextureSubImage3D(texture.handle, mip_map, x0, y0, 0, diff --git a/src/yuzu/configuration/config.cpp b/src/yuzu/configuration/config.cpp index 4650f96a38..28e4d8ab85 100644 --- a/src/yuzu/configuration/config.cpp +++ b/src/yuzu/configuration/config.cpp @@ -373,6 +373,7 @@ void Config::ReadValues() { ReadSetting("use_accurate_gpu_emulation", false).toBool(); Settings::values.use_asynchronous_gpu_emulation = ReadSetting("use_asynchronous_gpu_emulation", false).toBool(); + Settings::values.shaggie = ReadSetting("shaggie", false).toBool(); Settings::values.bg_red = ReadSetting("bg_red", 0.0).toFloat(); Settings::values.bg_green = ReadSetting("bg_green", 0.0).toFloat(); @@ -649,6 +650,7 @@ void Config::SaveValues() { WriteSetting("use_accurate_gpu_emulation", Settings::values.use_accurate_gpu_emulation, false); WriteSetting("use_asynchronous_gpu_emulation", Settings::values.use_asynchronous_gpu_emulation, false); + WriteSetting("shaggie", Settings::values.shaggie, false); // Cast to double because Qt's written float values are not human-readable WriteSetting("bg_red", (double)Settings::values.bg_red, 0.0); diff --git a/src/yuzu/configuration/configure_graphics.cpp b/src/yuzu/configuration/configure_graphics.cpp index dd1d674882..aa1e11f2fb 100644 --- a/src/yuzu/configuration/configure_graphics.cpp +++ b/src/yuzu/configuration/configure_graphics.cpp @@ -77,6 +77,7 @@ void ConfigureGraphics::setConfiguration() { ui->use_accurate_gpu_emulation->setChecked(Settings::values.use_accurate_gpu_emulation); ui->use_asynchronous_gpu_emulation->setEnabled(!Core::System::GetInstance().IsPoweredOn()); ui->use_asynchronous_gpu_emulation->setChecked(Settings::values.use_asynchronous_gpu_emulation); + ui->d3d15->setChecked(Settings::values.shaggie); UpdateBackgroundColorButton(QColor::fromRgbF(Settings::values.bg_red, Settings::values.bg_green, Settings::values.bg_blue)); } @@ -93,6 +94,7 @@ void ConfigureGraphics::applyConfiguration() { Settings::values.bg_red = static_cast(bg_color.redF()); Settings::values.bg_green = static_cast(bg_color.greenF()); Settings::values.bg_blue = static_cast(bg_color.blueF()); + Settings::values.shaggie = ui->d3d15->isChecked(); } void ConfigureGraphics::UpdateBackgroundColorButton(QColor color) { diff --git a/src/yuzu/configuration/configure_graphics.ui b/src/yuzu/configuration/configure_graphics.ui index c6767e0cac..947b332c41 100644 --- a/src/yuzu/configuration/configure_graphics.ui +++ b/src/yuzu/configuration/configure_graphics.ui @@ -49,6 +49,13 @@ + + + + Enable D3D15 with jaggies + + +