From fda8a3705f0573e3d95c398373ec57944df3ff79 Mon Sep 17 00:00:00 2001 From: rnbhatt <55766810+rnbhatt@users.noreply.github.com> Date: Wed, 12 Apr 2023 13:16:58 -0400 Subject: [PATCH] Fix for #2822 -- points rendering error on Apple silicon (#3079) * Add pointsize to SPIRV-Cross output before writing Adds float bgfx_metal_pointSize [[point_size]] = 1; to xlatMtlMain_out, ensuring that it always has a value. * Update shaderc_metal.cpp Only apply patch to vertex shaders --- tools/shaderc/shaderc_metal.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/tools/shaderc/shaderc_metal.cpp b/tools/shaderc/shaderc_metal.cpp index 744e3e366..a4ed0337e 100644 --- a/tools/shaderc/shaderc_metal.cpp +++ b/tools/shaderc/shaderc_metal.cpp @@ -638,6 +638,17 @@ namespace bgfx { namespace metal } std::string source = msl.compile(); + + // fix https://github.com/bkaradzic/bgfx/issues/2822 + // insert struct member which declares point size, defaulted to 1 + if (_options.shaderType == 'v'){ + auto findName = "xlatMtlMain_out\n{"; + auto pos = source.find(findName); + if (pos != std::string::npos){ + pos += strlen(findName); + source.insert(pos, "\n\tfloat bgfx_metal_pointSize [[point_size]] = 1;"); + } + } if ('c' == _options.shaderType) {