Make engine type per instance

pull/556/head
jackun 3 years ago
parent e39513cfa4
commit 750d2cddb5
No known key found for this signature in database
GPG Key ID: 119DB3F1D05A9ED3

@ -50,7 +50,7 @@ struct state {
};
static GLVec last_vp {}, last_sb {};
static swapchain_stats sw_stats {};
swapchain_stats sw_stats {};
static state state;
static uint32_t vendorID;
static std::string deviceName;
@ -77,14 +77,14 @@ void imgui_init()
add_blacklist(item);
}
if (engine != EngineTypes::ZINK){
if (sw_stats.engine != EngineTypes::ZINK){
auto pid = getpid();
string find_wined3d = "lsof -w -lnPX -L -p " + to_string(pid) + " | grep -oh wined3d";
string ret_wined3d = exec(find_wined3d);
if (ret_wined3d == "wined3d\n" )
engine = WINED3D;
sw_stats.engine = WINED3D;
else
engine = OpenGL;
sw_stats.engine = OPENGL;
}
is_blacklisted(true);
notifier.params = &params;

@ -348,7 +348,7 @@ void HudElements::ram(){
void HudElements::fps(){
if (HUDElements.params->enabled[OVERLAY_PARAM_ENABLED_fps]){
ImGui::TableNextRow(); ImGui::TableNextColumn();
ImGui::TextColored(HUDElements.colors.engine, "%s", engines[engine]);
ImGui::TextColored(HUDElements.colors.engine, "%s", engines[HUDElements.sw_stats->engine]);
ImGui::TableNextColumn();
if (HUDElements.params->enabled[OVERLAY_PARAM_ENABLED_fps_color_change]){
int fps = int(HUDElements.sw_stats->fps);

@ -20,7 +20,6 @@ struct fps_limit fps_limit_stats {};
ImVec2 real_font_size;
std::vector<logData> graph_data;
const char* engines[] = {"Unknown", "OpenGL", "VULKAN", "DXVK", "VKD3D", "DAMAVAND", "ZINK", "WINED3D", "Feral3D"};
EngineTypes engine = Unknown;
void update_hw_info(struct swapchain_stats& sw_stats, struct overlay_params& params, uint32_t vendorID)
{

@ -21,6 +21,24 @@ struct frame_stat {
uint64_t stats[OVERLAY_PLOTS_MAX];
};
enum EngineTypes
{
UNKNOWN,
OPENGL,
VULKAN,
DXVK,
VKD3D,
DAMAVAND,
ZINK,
WINED3D,
FERAL3D,
};
extern const char* engines[];
struct swapchain_stats {
uint64_t n_frames;
enum overlay_plots stat_selector;
@ -54,6 +72,7 @@ struct swapchain_stats {
std::string deviceName;
std::string gpuName;
std::string driverName;
enum EngineTypes engine;
};
struct fps_limit {
@ -78,25 +97,6 @@ struct LOAD_DATA {
unsigned high_load;
};
enum EngineTypes
{
Unknown,
OpenGL,
Vulkan,
DXVK,
VKD3D,
DAMAVAND,
ZINK,
WINED3D,
Feral3D
};
extern const char* engines[];
extern enum EngineTypes engine;
extern struct fps_limit fps_limit_stats;
extern int32_t deviceID;

@ -72,6 +72,10 @@ int hudFirstRow, hudSecondRow;
VkPhysicalDeviceDriverProperties driverProps = {};
int32_t deviceID;
namespace MangoHud { namespace GL {
extern swapchain_stats sw_stats;
}}
/* Mapped from VkInstace/VkPhysicalDevice */
struct instance_data {
struct vk_instance_dispatch_table vtable;
@ -79,6 +83,7 @@ struct instance_data {
struct overlay_params params;
uint32_t api_version;
string engineName, engineVersion;
enum EngineTypes engine;
notify_thread notifier;
};
@ -1781,6 +1786,7 @@ static VkResult overlay_CreateSwapchainKHR(
swapchain_data->sw_stats.version_vk.patch = VK_VERSION_PATCH(prop.apiVersion);
swapchain_data->sw_stats.engineName = device_data->instance->engineName;
swapchain_data->sw_stats.engineVersion = device_data->instance->engineVersion;
swapchain_data->sw_stats.engine = device_data->instance->engine;
std::stringstream ss;
// ss << prop.deviceName;
@ -2138,6 +2144,7 @@ static VkResult overlay_CreateInstance(
get_instance_chain_info(pCreateInfo, VK_LAYER_LINK_INFO);
std::string engineVersion,engineName;
enum EngineTypes engine = EngineTypes::UNKNOWN;
if (!is_blacklisted(true)) {
const char* pEngineName = nullptr;
if (pCreateInfo->pApplicationInfo)
@ -2149,25 +2156,25 @@ static VkResult overlay_CreateInstance(
engineVersion = to_string(VK_VERSION_MAJOR(engineVer)) + "." + to_string(VK_VERSION_MINOR(engineVer)) + "." + to_string(VK_VERSION_PATCH(engineVer));
}
if (engine < 2){
if (engineName == "DXVK")
engine = DXVK;
if (engineName == "DXVK")
engine = DXVK;
else if (engineName == "vkd3d")
engine = VKD3D;
else if (engineName == "vkd3d")
engine = VKD3D;
else if(engineName == "mesa zink")
engine = ZINK;
else if(engineName == "mesa zink") {
engine = ZINK;
MangoHud::GL::sw_stats.engine = ZINK;
}
else if (engineName == "Damavand")
engine = DAMAVAND;
else if (engineName == "Damavand")
engine = DAMAVAND;
else if (engineName == "Feral3D")
engine = Feral3D;
else if (engineName == "Feral3D")
engine = FERAL3D;
else
engine = Vulkan;
}
else
engine = VULKAN;
}
assert(chain_info->u.pLayerInfo);
@ -2216,6 +2223,7 @@ static VkResult overlay_CreateInstance(
}
}
instance_data->engine = engine;
instance_data->engineName = engineName;
instance_data->engineVersion = engineVersion;
}

Loading…
Cancel
Save