mirror of
https://github.com/hrydgard/ppsspp.git
synced 2024-10-07 02:43:32 +00:00
Vulkan validation layers: Cap outputting the same message at 10 times.
This commit is contained in:
parent
463d703feb
commit
708162a2b0
@ -17,16 +17,30 @@
|
||||
|
||||
#include <string>
|
||||
#include <sstream>
|
||||
#include <map>
|
||||
#include <mutex>
|
||||
|
||||
#include "Common/Log.h"
|
||||
#include "Common/GPU/Vulkan/VulkanContext.h"
|
||||
#include "Common/GPU/Vulkan/VulkanDebug.h"
|
||||
|
||||
const int MAX_SAME_ERROR_COUNT = 10;
|
||||
|
||||
// Used to stop outputting the same message over and over.
|
||||
static std::map<int, int> g_errorCount;
|
||||
std::mutex g_errorCountMutex;
|
||||
|
||||
// TODO: Call this when launching games in some clean way.
|
||||
void VulkanClearValidationErrorCounts() {
|
||||
std::lock_guard<std::mutex> lock(g_errorCountMutex);
|
||||
g_errorCount.clear();
|
||||
}
|
||||
|
||||
VKAPI_ATTR VkBool32 VKAPI_CALL VulkanDebugUtilsCallback(
|
||||
VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
|
||||
VkDebugUtilsMessageTypeFlagsEXT messageType,
|
||||
const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData,
|
||||
void* pUserData) {
|
||||
const VkDebugUtilsMessengerCallbackDataEXT *pCallbackData,
|
||||
void *pUserData) {
|
||||
const VulkanLogOptions *options = (const VulkanLogOptions *)pUserData;
|
||||
std::ostringstream message;
|
||||
|
||||
@ -49,6 +63,18 @@ VKAPI_ATTR VkBool32 VKAPI_CALL VulkanDebugUtilsCallback(
|
||||
return false;
|
||||
}
|
||||
|
||||
int count;
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(g_errorCountMutex);
|
||||
count = g_errorCount[messageCode]++;
|
||||
}
|
||||
if (count == MAX_SAME_ERROR_COUNT) {
|
||||
WARN_LOG(G3D, "Too many validation messages with message %d, stopping", messageCode);
|
||||
}
|
||||
if (count >= MAX_SAME_ERROR_COUNT) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (messageSeverity & VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT) {
|
||||
message << "ERROR(";
|
||||
} else if (messageSeverity & VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT) {
|
||||
|
@ -26,3 +26,5 @@ struct VulkanLogOptions {
|
||||
};
|
||||
|
||||
VKAPI_ATTR VkBool32 VKAPI_CALL VulkanDebugUtilsCallback(VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, VkDebugUtilsMessageTypeFlagsEXT messageType, const VkDebugUtilsMessengerCallbackDataEXT *pCallbackData, void *pUserData);
|
||||
|
||||
void VulkanClearValidationErrorCounts();
|
||||
|
Loading…
Reference in New Issue
Block a user