RenderReport: Add option to add platform specific overrides.
Reference images in the reference_override_dir will be chosen before images in reference_dir. This allows platform specific reference images, with a common base. Ignored when set to None. The caller is responsible of setting the reference override dir as the unit test is more aware what the definition of a platform is. Patch adds `gpu.platform.device_type_get` function to get the device type that blender has detected. Reviewed By: brecht Maniphest Tasks: T99046 Differential Revision: https://developer.blender.org/D15265
This commit is contained in:
@@ -78,12 +78,18 @@ def test_get_name(filepath):
|
||||
return os.path.splitext(filename)[0]
|
||||
|
||||
|
||||
def test_get_images(output_dir, filepath, reference_dir):
|
||||
def test_get_images(output_dir, filepath, reference_dir, reference_override_dir):
|
||||
testname = test_get_name(filepath)
|
||||
dirpath = os.path.dirname(filepath)
|
||||
|
||||
old_dirpath = os.path.join(dirpath, reference_dir)
|
||||
old_img = os.path.join(old_dirpath, testname + ".png")
|
||||
if reference_override_dir:
|
||||
override_dirpath = os.path.join(dirpath, reference_override_dir)
|
||||
override_img = os.path.join(override_dirpath, testname + ".png")
|
||||
if os.path.exists(override_img):
|
||||
old_dirpath = override_dirpath
|
||||
old_img = override_img
|
||||
|
||||
ref_dirpath = os.path.join(output_dir, os.path.basename(dirpath), "ref")
|
||||
ref_img = os.path.join(ref_dirpath, testname + ".png")
|
||||
@@ -108,6 +114,7 @@ class Report:
|
||||
'output_dir',
|
||||
'global_dir',
|
||||
'reference_dir',
|
||||
'reference_override_dir',
|
||||
'idiff',
|
||||
'pixelated',
|
||||
'fail_threshold',
|
||||
@@ -127,6 +134,7 @@ class Report:
|
||||
self.output_dir = output_dir
|
||||
self.global_dir = os.path.dirname(output_dir)
|
||||
self.reference_dir = 'reference_renders'
|
||||
self.reference_override_dir = None
|
||||
self.idiff = idiff
|
||||
self.compare_engine = None
|
||||
self.fail_threshold = 0.016
|
||||
@@ -161,6 +169,9 @@ class Report:
|
||||
def set_reference_dir(self, reference_dir):
|
||||
self.reference_dir = reference_dir
|
||||
|
||||
def set_reference_override_dir(self, reference_override_dir):
|
||||
self.reference_override_dir = reference_override_dir
|
||||
|
||||
def set_compare_engine(self, other_engine, other_device=None):
|
||||
self.compare_engine = (other_engine, other_device)
|
||||
|
||||
@@ -343,7 +354,7 @@ class Report:
|
||||
name = test_get_name(filepath)
|
||||
name = name.replace('_', ' ')
|
||||
|
||||
old_img, ref_img, new_img, diff_img = test_get_images(self.output_dir, filepath, self.reference_dir)
|
||||
old_img, ref_img, new_img, diff_img = test_get_images(self.output_dir, filepath, self.reference_dir, self.reference_override_dir)
|
||||
|
||||
status = error if error else ""
|
||||
tr_style = """ class="table-danger" """ if error else ""
|
||||
@@ -390,7 +401,7 @@ class Report:
|
||||
self.compare_tests += test_html
|
||||
|
||||
def _diff_output(self, filepath, tmp_filepath):
|
||||
old_img, ref_img, new_img, diff_img = test_get_images(self.output_dir, filepath, self.reference_dir)
|
||||
old_img, ref_img, new_img, diff_img = test_get_images(self.output_dir, filepath, self.reference_dir, self.reference_override_dir)
|
||||
|
||||
# Create reference render directory.
|
||||
old_dirpath = os.path.dirname(old_img)
|
||||
|
||||
Reference in New Issue
Block a user