Benchmark: Workaround to show proper Vega card
This commit is contained in:
@@ -2,6 +2,7 @@ import datetime
|
||||
import json
|
||||
import os
|
||||
import platform
|
||||
import subprocess
|
||||
import sys
|
||||
import tempfile
|
||||
from threading import Thread, Lock
|
||||
@@ -836,6 +837,36 @@ class BENCHMARK_OT_restart(bpy.types.Operator):
|
||||
################################################################################
|
||||
# Configuration.
|
||||
|
||||
def cl_query_executable_get():
|
||||
benchmark_data_dir = blender_benchmark_data_dir_get()
|
||||
system = platform.system()
|
||||
if system == "Linux":
|
||||
return os.path.join(benchmark_data_dir, "bin", "cl_query")
|
||||
elif system == "Windows":
|
||||
return os.path.join(benchmark_data_dir, "bin", "cl_query.exe")
|
||||
elif system == "Darwin":
|
||||
return os.path.join(benchmark_data_dir, "bin", "cl_query")
|
||||
else:
|
||||
raise Exception("Needs implementation")
|
||||
|
||||
def query_opencl_compute_units():
|
||||
binary = cl_query_executable_get()
|
||||
output = subprocess.check_output([binary])
|
||||
lines = output.splitlines()
|
||||
compute_units = []
|
||||
for line in lines:
|
||||
(name, max_compute_units) = line.rsplit(b':', 1)
|
||||
compute_units.append((name.decode(), max_compute_units.decode()))
|
||||
return compute_units
|
||||
|
||||
def find_first_device_index(compute_units, device_name):
|
||||
if not compute_units:
|
||||
return -1
|
||||
for index, value in enumerate(compute_units):
|
||||
if value[0] == device_name:
|
||||
return index
|
||||
return -1
|
||||
|
||||
def compute_device_list_get(self, context):
|
||||
global global_cached_system_info
|
||||
global global_cached_compute_devices
|
||||
@@ -847,12 +878,18 @@ def compute_device_list_get(self, context):
|
||||
ctx.blender = blender_executable_get()
|
||||
ctx.configure_script = configure_script_get()
|
||||
global_cached_system_info = system_info_get(ctx)
|
||||
compute_units = query_opencl_compute_units()
|
||||
for device in global_cached_system_info["devices"]:
|
||||
device_type = device["type"]
|
||||
if device_type == "CPU":
|
||||
continue
|
||||
elif device_type in ("OPENCL", "CUDA"):
|
||||
device_name = correct_device_name(device["name"])
|
||||
index = find_first_device_index(compute_units, device['name'])
|
||||
if index != -1:
|
||||
if device["name"] == "Radeon RX Vega":
|
||||
device_name += " " + compute_units[index][1]
|
||||
del compute_units[index]
|
||||
device_id = "{}:{}" . format(device_type, device["name"])
|
||||
compute_devices.append((device_id, device_name, ""))
|
||||
global_cached_compute_devices = compute_devices
|
||||
|
Reference in New Issue
Block a user