TSC Meeting Notes 2022-03-24

Attendance:

Cary Phillips
Christina Tempelaar-Leitz
John Mertic
Joseph Goldstone
Kimball Thurston
Larry Gritz
Nick Porcino
Peter Hillman
Rod Bogart

Discussion:

  • Filmlight’s issue with files that can’t be read with new core library:

  •  

    • Kimball: I can validate the changes. I have fixes, need to split into separate PR’s. Need another test case: reconstruction of a 0-ed chunk table for tiled exr files. Just causing me headaches.

    • Looking at multi-part reconstruction code. Yet a 3rd way of doing things.

    • Scanlines go up or down, not in random order, although each scanline is tagged with the number. Nothing in the format says order, but C++ API doesn’t let you write random order.

  • #1230 Add maximumSampleCount limit to CompositeDeepScanLine’

  •  

    • looks good to go.

  • #1211 ImfErrorMessage C Api and multithreading

  •  

    • Kimball: Had started working on ImfHeader to use the C library under the covers. Is triggering me to expose some of the functions I’d hidden.  But maybe should do the C API first.

  • Should the next release by 3.2 or 4? 

  •  

    • Have to change the API?

    • If we did to a 4, what else would go in? Alternate compression types?

    •  

      • Ask for: on disk be the GPU format, so the read just lifts into GPU.

      • Makes sense for uncompressed data, but not otherwise.

      • Nvidia peeps were looking into GPU compression, but haven’t heard from them in a while.

      • Having a compression type that is interleaved and uncompressed may be enough.

      • We’ve had compression types without a major bump.

    • Does the major version describe major file format changes or software versions. 

    • Should 4 be software only?

    • How many hoops do you have to jump through to keep the API the same?

    • Kimball: we could keep a lot of the API the same, but should we?

    • Example: String attribute. The value is a std::string in C++, so there’s be a strcpy.

    • Is there a minimal file version in the file? 

    •  

      • There’s a feature indicator in the files that says what features you’re using. 

      • That’s one of the problems with Filmlight.

      • One of the issues: very old version attribute length.

    • Should we seek out old versions of OpenEXR and encourage them to upgrade?

    •  

      • FFmpeg, but I’m not sure if I’m willing.

      • RGB: we care that modern files are in use.

      • We should have some element of outreach.

      • Vcpkg is blocked on Field3d. 

      • Feels like a TAC level problem

      • https://github.com/microsoft/vcpkg/pull/22463

      • Most of the VFX industry have switched to OIIO.

      • https://github.com/microsoft/vcpkg/pull/20957

      • Nick: I added a note to 20957 to try to bump it along

      • Blocked because there are 3 failing triples. How do you find them?

      • Maybe forever stalled.

    • ABI will be different, so we have to bump the minor version. 

    • But we can make it so it’s relatively transparent to the end developers who use the API. But I don't know if there'll be a performance hit, such as strcpy. And yes, it is noticeable. 

    •  

      • Cryptomatte strings are huge, you can have 60Mb of strings in your header.

    • #61 CI on Mac & Windows are not building the python bindings

    •  

      • weren’t we having boost problems with MacOS and Windows.

    • C++23 has introduced multi-dimentional array references. 

    • #238 ImportError: DLL load failed while importing imath in Python 3.9

    •  

      • You do have to gather all the DLLs and put them in a quarantined place. He was expecting rpath’s in the DLL’s, but that’s not a thing. “Fact of life” And not an OpenEXR issue. We shouldn’t try to do anything different.

    • #212 imath_half_to_float_table not properly exported from DLL

    •  

      • Need a repo test. Nick: I’m close to be able to try this on windows. Peculiar that no one has ever reported this problem.

    • #1204 Runpath woes

    •  

      • An artifact, we’re not explicitly doing it. CMake computes things relative to the install prefix. Assumes each of those are in a different location. Build rpath “use origin” flag? Definitely better to have the ORIGIN in there. Kimball: I can take a look at some point. $ORIGIN is the location of where the .so is. A special variable in libc.