1
0
Fork 0
forked from suyu/suyu

gl_texture_cache/rescaling_pass: minor cleanup

This commit is contained in:
ameerj 2021-09-18 00:43:41 -04:00 committed by Fernando Sahmkow
parent c8a971be91
commit b027fac794
3 changed files with 10 additions and 16 deletions

View file

@ -82,18 +82,14 @@ void PatchFragCoord(IR::Block& block, IR::Inst& inst) {
[[nodiscard]] IR::U32 SubScale(IR::IREmitter& ir, const IR::U1& is_scaled, const IR::U32& value, [[nodiscard]] IR::U32 SubScale(IR::IREmitter& ir, const IR::U1& is_scaled, const IR::U32& value,
const IR::Attribute attrib) { const IR::Attribute attrib) {
if (Settings::values.resolution_info.active) { const IR::F32 opt1{ir.Imm32(Settings::values.resolution_info.up_factor)};
const IR::F32 opt1{ir.Imm32(Settings::values.resolution_info.up_factor)}; const IR::F32 base{ir.FPMul(ir.ConvertUToF(32, 32, value), opt1)};
const IR::F32 base{ir.FPMul(ir.ConvertUToF(32, 32, value), opt1)}; const IR::F32 frag_coord{ir.GetAttribute(attrib)};
const IR::F32 frag_coord{ir.GetAttribute(attrib)}; const IR::F32 opt2{ir.Imm32(Settings::values.resolution_info.down_factor)};
const IR::F32 opt2{ir.Imm32(Settings::values.resolution_info.down_factor)}; const IR::F32 floor{ir.FPMul(opt1, ir.FPFloor(ir.FPMul(frag_coord, opt2)))};
const IR::F32 floor{ir.FPMul(opt1, ir.FPFloor(ir.FPMul(frag_coord, opt2)))}; const IR::U32 deviation{
const IR::U32 deviation{ ir.ConvertFToU(32, ir.FPAdd(base, ir.FPAdd(frag_coord, ir.FPNeg(floor))))};
ir.ConvertFToU(32, ir.FPAdd(base, ir.FPAdd(frag_coord, ir.FPNeg(floor))))}; return IR::U32{ir.Select(is_scaled, deviation, value)};
return IR::U32{ir.Select(is_scaled, deviation, value)};
} else {
return value;
}
} }
[[nodiscard]] IR::U32 DownScale(IR::IREmitter& ir, const IR::U1& is_scaled, IR::U32 value) { [[nodiscard]] IR::U32 DownScale(IR::IREmitter& ir, const IR::U1& is_scaled, IR::U32 value) {

View file

@ -474,8 +474,7 @@ TextureCacheRuntime::TextureCacheRuntime(const Device& device_, ProgramManager&
set_view(Shader::TextureType::ColorArrayCube, null_image_cube_array.handle); set_view(Shader::TextureType::ColorArrayCube, null_image_cube_array.handle);
resolution = Settings::values.resolution_info; resolution = Settings::values.resolution_info;
is_rescaling_on = resolution.up_scale != 1 || resolution.down_shift != 0; if (resolution.active) {
if (is_rescaling_on) {
rescale_draw_fbo.Create(); rescale_draw_fbo.Create();
rescale_read_fbo.Create(); rescale_read_fbo.Create();
@ -957,7 +956,7 @@ bool Image::ScaleUp() {
if (True(flags & ImageFlagBits::Rescaled)) { if (True(flags & ImageFlagBits::Rescaled)) {
return false; return false;
} }
if (!runtime->is_rescaling_on) { if (!runtime->resolution.active) {
return false; return false;
} }
if (gl_format == 0 && gl_type == 0) { if (gl_format == 0 && gl_type == 0) {

View file

@ -156,7 +156,6 @@ private:
OGLFramebuffer rescale_draw_fbo; OGLFramebuffer rescale_draw_fbo;
OGLFramebuffer rescale_read_fbo; OGLFramebuffer rescale_read_fbo;
Settings::ResolutionScalingInfo resolution; Settings::ResolutionScalingInfo resolution;
bool is_rescaling_on{};
}; };
class Image : public VideoCommon::ImageBase { class Image : public VideoCommon::ImageBase {