Files
test/source/blender/gpu/opengl/gl_shader_log.cc
Clément Foucault 7f7e1ab088 GL: Remove Apple platform specific workarounds
We don't ship with OpenGL anymore on Mac platform.
The build option is not even available anymore.

This removes any reference to Apple or Mac in the
Opengl module.

Note that I left the depth_blitting_workaround
even if it originaly meant for Mac because it
might be still useful for other hardware.

Pull Request: https://projects.blender.org/blender/blender/pulls/113126
2023-10-02 10:29:57 +02:00

82 lines
2.6 KiB
C++

/* SPDX-FileCopyrightText: 2021 Blender Authors
*
* SPDX-License-Identifier: GPL-2.0-or-later */
/** \file
* \ingroup gpu
*/
#include "gl_shader.hh"
#include "GPU_platform.h"
namespace blender::gpu {
const char *GLLogParser::parse_line(const char *log_line, GPULogItem &log_item)
{
/* Skip ERROR: or WARNING:. */
log_line = skip_severity_prefix(log_line, log_item);
log_line = skip_separators(log_line, "(: ");
/* Parse error line & char numbers. */
if (at_number(log_line)) {
const char *error_line_number_end;
log_item.cursor.row = parse_number(log_line, &error_line_number_end);
/* Try to fetch the error character (not always available). */
if (at_any(error_line_number_end, "(:") && at_number(&error_line_number_end[1])) {
log_item.cursor.column = parse_number(error_line_number_end + 1, &log_line);
}
else {
log_line = error_line_number_end;
}
/* There can be a 3rd number (case of mesa driver). */
if (at_any(log_line, "(:") && at_number(&log_line[1])) {
log_item.cursor.source = log_item.cursor.row;
log_item.cursor.row = log_item.cursor.column;
log_item.cursor.column = parse_number(log_line + 1, &error_line_number_end);
log_line = error_line_number_end;
}
}
if ((log_item.cursor.row != -1) && (log_item.cursor.column != -1)) {
if (GPU_type_matches(GPU_DEVICE_NVIDIA, GPU_OS_ANY, GPU_DRIVER_OFFICIAL)) {
/* 0:line */
log_item.cursor.row = log_item.cursor.column;
log_item.cursor.column = -1;
}
else if (GPU_type_matches(GPU_DEVICE_ATI, GPU_OS_UNIX, GPU_DRIVER_OFFICIAL) &&
/* WORKAROUND(@fclem): Both Mesa and AMDGPU-PRO are reported as official. */
StringRefNull(GPU_platform_version()).find(" Mesa ") == -1)
{
/* source:row */
log_item.cursor.source = log_item.cursor.row;
log_item.cursor.row = log_item.cursor.column;
log_item.cursor.column = -1;
log_item.source_base_row = true;
}
else {
/* line:char */
}
}
log_line = skip_separators(log_line, ":) ");
/* Skip to message. Avoid redundant info. */
log_line = skip_severity_keyword(log_line, log_item);
log_line = skip_separators(log_line, ":) ");
return log_line;
}
const char *GLLogParser::skip_severity_prefix(const char *log_line, GPULogItem &log_item)
{
return skip_severity(log_line, log_item, "ERROR", "WARNING", "NOTE");
}
const char *GLLogParser::skip_severity_keyword(const char *log_line, GPULogItem &log_item)
{
return skip_severity(log_line, log_item, "error", "warning", "note");
}
} // namespace blender::gpu