Backport a patch to allow Blender 3.3 to build with OpenColorIO 2.3.
Index: Makefile =================================================================== RCS file: /cvs/ports/graphics/blender/Makefile,v retrieving revision 1.121 diff -u -p -u -p -r1.121 Makefile --- Makefile 23 Mar 2024 13:34:46 -0000 1.121 +++ Makefile 24 Mar 2024 04:23:31 -0000 @@ -8,7 +8,7 @@ DPB_PROPERTIES = parallel COMMENT = 3D creation software DISTNAME = blender-3.3.16 - +REVISION = 0 CATEGORIES = graphics HOMEPAGE = https://www.blender.org/ Index: patches/patch-intern_opencolorio_ocio_impl_glsl_cc =================================================================== RCS file: patches/patch-intern_opencolorio_ocio_impl_glsl_cc diff -N patches/patch-intern_opencolorio_ocio_impl_glsl_cc --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-intern_opencolorio_ocio_impl_glsl_cc 24 Mar 2024 04:23:31 -0000 @@ -0,0 +1,41 @@ +Build: support OpenColorIO 2.3 +Ref #113157 +https://projects.blender.org/blender/blender/pulls/113163 + +Index: intern/opencolorio/ocio_impl_glsl.cc +--- intern/opencolorio/ocio_impl_glsl.cc.orig ++++ intern/opencolorio/ocio_impl_glsl.cc +@@ -319,8 +319,15 @@ static bool addGPULut1D2D(OCIO_GPUTextures &textures, + unsigned int height = 0; + GpuShaderCreator::TextureType channel = GpuShaderCreator::TEXTURE_RGB_CHANNEL; + Interpolation interpolation = INTERP_LINEAR; ++#if OCIO_VERSION_HEX >= 0x02030000 ++ /* Always use 2D textures in OpenColorIO 2.3, simpler and same performance. */ ++ GpuShaderDesc::TextureDimensions dimensions = GpuShaderDesc::TEXTURE_2D; + shader_desc->getTexture( ++ index, texture_name, sampler_name, width, height, channel, dimensions, interpolation); ++#else ++ shader_desc->getTexture( + index, texture_name, sampler_name, width, height, channel, interpolation); ++#endif + + const float *values; + shader_desc->getTextureValues(index, values); +@@ -333,13 +340,16 @@ static bool addGPULut1D2D(OCIO_GPUTextures &textures, + GPU_R16F; + + OCIO_GPULutTexture lut; ++#if OCIO_VERSION_HEX < 0x02030000 + /* There does not appear to be an explicit way to check if a texture is 1D or 2D. + * It depends on more than height. So check instead by looking at the source. */ + std::string sampler1D_name = std::string("sampler1D ") + sampler_name; + if (strstr(shader_desc->getShaderText(), sampler1D_name.c_str()) != nullptr) { + lut.texture = GPU_texture_create_1d(texture_name, width, 1, format, values); + } +- else { ++ else ++#endif ++ { + lut.texture = GPU_texture_create_2d(texture_name, width, height, 1, format, values); + } + if (lut.texture == nullptr) {