[Scummvm-git-logs] scummvm master -> 51c2f471c31c8a896d47afaa3ba86f9e7108cc6a

lephilousophe noreply at scummvm.org
Sun Oct 9 08:00:50 UTC 2022


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
51c2f471c3 BACKENDS: OPENGL: Accept different scale types with same scale


Commit: 51c2f471c31c8a896d47afaa3ba86f9e7108cc6a
    https://github.com/scummvm/scummvm/commit/51c2f471c31c8a896d47afaa3ba86f9e7108cc6a
Author: Le Philousophe (lephilousophe at users.noreply.github.com)
Date: 2022-10-09T10:00:21+02:00

Commit Message:
BACKENDS: OPENGL: Accept different scale types with same scale

This is allowed by libretro

Changed paths:
    backends/graphics/opengl/pipelines/libretro/parser.cpp


diff --git a/backends/graphics/opengl/pipelines/libretro/parser.cpp b/backends/graphics/opengl/pipelines/libretro/parser.cpp
index 0f40b990cf7..321c67d6a09 100644
--- a/backends/graphics/opengl/pipelines/libretro/parser.cpp
+++ b/backends/graphics/opengl/pipelines/libretro/parser.cpp
@@ -425,35 +425,30 @@ bool PresetParser::parsePassScale(const uint id, ShaderPass *pass) {
 	// Parse actual scale value for the pass.
 	//
 	// Like for the scale type, 'scale' overrides 'scale_x'/'scale_y'.
-	// However, in case the scale types for x/y are different the usage of
-	// 'scale' leads to undefined behavior. In our case we simply reject
-	// the shader preset.
-
-	if (!lookUpValueScale(passKey("scale_x"), &pass->scaleXFloat, &pass->scaleXUint, pass->scaleTypeX)) {
-		return false;
-	}
+	if (_entries.contains(passKey("scale"))) {
+		if (!lookUpValueScale(passKey("scale"), &pass->scaleXFloat, &pass->scaleXUint, pass->scaleTypeX)) {
+			return false;
+		}
 
-	if (!lookUpValueScale(passKey("scale_y"), &pass->scaleYFloat, &pass->scaleYUint, pass->scaleTypeY)) {
-		return false;
-	}
+		if (!lookUpValueScale(passKey("scale"), &pass->scaleYFloat, &pass->scaleYUint, pass->scaleTypeY)) {
+			return false;
+		}
 
-	if (!_entries.contains(passKey("scale"))) {
 		return true;
 	}
 
-	if (pass->scaleTypeX != pass->scaleTypeY) {
-		_errorDesc = Common::String::format("Pass %u: Scale types for x/y differ but 'scale%u' defined", id, id);
-		return false;
+	if (_entries.contains(passKey("scale_x"))) {
+		if (!lookUpValueScale(passKey("scale_x"), &pass->scaleXFloat, &pass->scaleXUint, pass->scaleTypeX)) {
+			return false;
+		}
 	}
 
-	pass->scaleXFloat = 0;
-	pass->scaleXUint = 0;
-	if (!lookUpValueScale(passKey("scale"), &pass->scaleXFloat, &pass->scaleXUint, pass->scaleTypeX)) {
-		return false;
+	if (_entries.contains(passKey("scale_y"))) {
+		if (!lookUpValueScale(passKey("scale_y"), &pass->scaleYFloat, &pass->scaleYUint, pass->scaleTypeY)) {
+			return false;
+		}
 	}
 
-	pass->scaleYFloat = pass->scaleXFloat;
-	pass->scaleYUint = pass->scaleXUint;
 	return true;
 }
 #undef passKey




More information about the Scummvm-git-logs mailing list