olive-editor/olive

[BUILD] OpenColorIO 2.3.0 demands new argument at GetColorContext

meerfrau opened this issue · 6 comments

Commit Hash
8ce00fd

Platform
ArchLinux

Summary
Sorry for being in German:

./olive/app/render/renderer.cpp: In Elementfunktion »bool olive::Renderer::GetColorContext(const olive::ColorTransformJob&, ColorContext*)«:
./olive/app/render/renderer.cpp:245:30: Fehler: keine passende Funktion für Aufruf von »OpenColorIO_v2_3dev::GpuShaderDesc::getTexture(unsigned int&, const char*&, const char*&, unsigned int&, unsigned int&, OpenColorIO_v2_3dev::GpuShaderCreator::TextureType&, OpenColorIO_v2_3dev::Interpolation&)«
  245 |       shader_desc->getTexture(i, tex_name, sampler_name, width, height, channel, interpolation);
      |       ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In Datei, eingebunden von ./olive/app/common/ocioutils.h:24,
                 von ./olive/app/render/colorprocessor.h:25,
                 von ./olive/app/render/renderer.h:30,
                 von ./olive/app/render/renderer.cpp:21:
/usr/include/OpenColorIO/OpenColorIO.h:3534:18: Anmerkung: Kandidat: »virtual void OpenColorIO_v2_3dev::GpuShaderDesc::getTexture(unsigned int, const char*&, const char*&, unsigned int&, unsigned int&, OpenColorIO_v2_3dev::GpuShaderCreator::TextureType&, OpenColorIO_v2_3dev::GpuShaderCreator::TextureDimensions&, OpenColorIO_v2_3dev::Interpolation&) const«
 3534 |     virtual void getTexture(unsigned index,
      |                  ^~~~~~~~~~
/usr/include/OpenColorIO/OpenColorIO.h:3534:18: Anmerkung:   Kandidat erwartet 8 Argumente, 7 angegeben

OpenColorIO 3.2.02.3.0 introduced TextureDimensions & dimensions between channel and interpolation:

    virtual void getTexture(unsigned index,
                            const char *& textureName,
                            const char *& samplerName,
                            unsigned & width,
                            unsigned & height,
                            TextureType & channel,
                            TextureDimensions & dimensions,
                            Interpolation & interpolation) const = 0;

which is either TEXTURE_1D = 1, or TEXTURE_2D = 2,

As far as I'm aware there is no OpenColorIO 3, the latest is 2.3

Ah, but yes that is an issue with 2.3. Olive aims to compile to the VFX Reference Platform (more or less) and that is still using OCIO 2.2

Fixable by adding
OCIO::GpuShaderDesc::TextureDimensions dimensions = OCIO::GpuShaderDesc::TEXTURE_2D;

@ThomasWilshaw May I ask you how to enforce compiling against system libraries? My system e.g. has OpenEXR 3.2.0, but olive has chosen libOpenEXR-3_1.so.30 ...

Thanks, we'll keep this around for as and when we update to OCIO 2.3

I'm afraid I'm not a Linuxexpert so can't reall help here mayeb @Simran-B can?

Fixable by adding OCIO::GpuShaderDesc::TextureDimensions dimensions = OCIO::GpuShaderDesc::TEXTURE_2D;

@ThomasWilshaw May I ask you how to enforce compiling against system libraries? My system e.g. has OpenEXR 3.2.0, but olive has chosen libOpenEXR-3_1.so.30 ...

works like a charm (no other change needed) :)
tested on a M1