From: Brad Smith Subject: Re: UPDATE: blender To: ports@openbsd.org Date: Wed, 3 Apr 2024 17:32:21 -0400 ping. On 2024-03-24 12:31 a.m., Brad Smith wrote: > 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) {