From aabbeac3d9e2ac0f293ab43fec71e56091c823e8 Mon Sep 17 00:00:00 2001 From: hachem Date: Tue, 18 Aug 2026 15:00:34 +0200 Subject: fix: macOS compatibility --- src/platform/opengl/opengl_shader.cpp | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'src/platform/opengl/opengl_shader.cpp') diff --git a/src/platform/opengl/opengl_shader.cpp b/src/platform/opengl/opengl_shader.cpp index 3b0108e..ddcd5e2 100644 --- a/src/platform/opengl/opengl_shader.cpp +++ b/src/platform/opengl/opengl_shader.cpp @@ -120,7 +120,12 @@ namespace Donut std::vector info_log(max_length); glGetShaderInfoLog(shader, max_length, &max_length, &info_log[0]); glDeleteShader(shader); - std::cout << "Shader compilation failure!" << std::endl << info_log.data() << std::endl; + for (auto id : glShaderIDs) + glDeleteShader(id); + glDeleteProgram(program); + m_renderer_id = 0; + const char* log = info_log.empty() ? "" : info_log.data(); + std::cout << "Shader compilation failure!" << std::endl << log << std::endl; return; } glAttachShader(program, shader); @@ -141,7 +146,9 @@ namespace Donut glDeleteProgram(m_renderer_id); for (auto id : glShaderIDs) glDeleteShader(id); - std::cout << "Shader link failure!" << std::endl << info_log.data() << std::endl; + m_renderer_id = 0; + const char* log = info_log.empty() ? "" : info_log.data(); + std::cout << "Shader link failure!" << std::endl << log << std::endl; return; } @@ -247,16 +254,22 @@ namespace Donut void OpenGLShader::dispatch(uint32_t x, uint32_t y, uint32_t z) { + if (m_renderer_id == 0 || glDispatchCompute == nullptr) + return; glDispatchCompute(x, y, z); } void OpenGLShader::dispatch_indirect(uint32_t offset) { + if (m_renderer_id == 0 || glDispatchComputeIndirect == nullptr) + return; glDispatchComputeIndirect(offset); } void OpenGLShader::memory_barrier(uint32_t barriers) { + if (glMemoryBarrier == nullptr) + return; glMemoryBarrier(barriers); } }; -- cgit v1.3