Re: [Openexr-devel] Removing register keyword

2016-09-30 Thread Ed Hanway
I ran some more tests, and with proper CMake flags set for release, and
decent optimization, the difference in code generation goes away.  So it's
gone.  Thanks for the PR.

On Fri, Sep 30, 2016 at 5:30 PM, Larry Gritz <l...@larrygritz.com> wrote:

> I should also point out: it's a higher priority to remove it from public
> headers, which are subject to the build flags and language mode of other
> apps that use OpenEXR, than it is to remove it from OpenEXR's internals
> which are only subject to OpenEXR's own build flags and rules.
>
>
> > On Sep 30, 2016, at 5:09 PM, Larry Gritz <l...@larrygritz.com> wrote:
> >
> > Don't let me bully you into removing it, if it really does something
> useful for performance.
> >
> > But it will eventually disappear from the language, and it already (even
> in C++11 mode, per current VFX Platform specs) is a deprecation warning,
> which a lot of software build defaults intentionally turns into
> full-fledged errors.
> >
> > Sorry about the duplicate PR, I should have scanned the list of pending
> requests before submitting.
> >
> >
>
> --
> Larry Gritz
> l...@larrygritz.com
>
>
>


-- 
Ed Hanway
R Supervisor // ILM // SF
___
Openexr-devel mailing list
Openexr-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/openexr-devel


[Openexr-devel] Removing register keyword

2016-09-30 Thread Ed Hanway
We have multiple pending pull requests to remove the register keyword from
the OpenEXR source.  I've looked at the code generated by gcc 4.8 with and
without the register keyword, and, despite the claim that compilers don't
care about the register keyword any more, the resulting object code for
x86-64 is different, and slightly worse without the keyword.  That choice
of compiler and platform isn't arbitrary -- it's consistent with the VFX
reference platform.

However, since the difference is relatively small, and may not be present
at all for other compilers and target architectures, and people will keep
submitting bugs and pull requests as long as the register keyword is there,
I'm inclined to go ahead and remove the keyword anyway.  If anybody is that
concerned about a performance regression on the order of a few percent in
the half-from-float constructor, speak now or forever hold your peace.

-- 
Ed Hanway
___
Openexr-devel mailing list
Openexr-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/openexr-devel


Re: [Openexr-devel] EXR texture memory overhead

2016-09-16 Thread Ed Hanway
Regarding OpenEXR pull requests in general, we've been making some slow
progress on the backlog, handling the trivial ones first.  The develop
branch has the latest.

Regarding PR 141 specifically, looking back at my notes at the time, there
was some concern that the change originally proposed didn't catch all
unsupported cases, such as memory-mapped streams, but that doesn't appear
to be the case with the PR.  Being limited to scan-line files, it won't
help in the current case, but it can establish the pattern for another
change.  I'll merge it now.


On Fri, Sep 16, 2016 at 11:55 AM, Larry Gritz <l...@larrygritz.com> wrote:

> So it's holding two tiles, per thread, per open tiled input file!
>
> 2 x RGBA half 64^2 tiles -> 64k per thread per file
> x 1000 files x 16 threads -> 1 GB, just for this source of overhead, not
> counting anything else like header data or other allocations
>
> For 64k (two reasonably sized tiles), maybe it would be better to do a
> stack allocation just when the extra decode buffer is needed, so there
> would be no call to malloc/free and no retained memory. Switch back to a
> true malloc only for the rare case of huge tiles where it doesn't seem safe
> to do a stack allocation.\?
>
>
> On Sep 16, 2016, at 11:45 AM, Karl Rasche <karlras...@gmail.com> wrote:
>
>
>
> But it's not optimal for a use pattern like TextureSystem where the
>> typical request is ONE tile, and the next tile it wants may not even be
>> adjacent.
>>
>
> Whoops. What I pointed at look like its only the case if you read through
> Imf::InputFile.  If you use Imf::TiledInputFile (like in exrinput.cpp), I
> don't think you hit that buffering.
>
>
>
> Wait, I'm not quite sure how threads play into this. Is this allocated
>> framebuffer part of the ImageInptut itself? Do threads lock to use it? Or
>> is this per thread, per file?
>>
>
> I think the per-thread part is around ImfTiledInputFile.cpp::267
> <https://github.com/openexr/openexr/blob/develop/OpenEXR/IlmImf/ImfTiledInputFile.cpp#L267>.
> Each TileBuffer has an uncompressedData ptr which is what the compressor
> fills during decode.
>
> This *should* just be a tile per thread, but it does look like it's held
> over the lifetime of the ImfTiledInputFile.
>
>
>
> --
> Larry Gritz
> l...@larrygritz.com
>
>
>
> ___
> Openexr-devel mailing list
> Openexr-devel@nongnu.org
> https://lists.nongnu.org/mailman/listinfo/openexr-devel
>
>


-- 
Ed Hanway
R Supervisor // ILM // SF
___
Openexr-devel mailing list
Openexr-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/openexr-devel


Re: [Openexr-devel] testOptimizedInterleavePatterns.cpp

2015-07-06 Thread Ed Hanway
It is noted in the comments for this issue: 
https://github.com/openexr/openexr/issues/67  Per the latest comment on the 
issue thread, the problem is in the test rather than in the library itself.  
Sorry that it hasn't been addressed since the issue was filed in 2013 -- it 
doesn't show up on the platforms we use regularly build for, which are mainly 
64-bit, or we would have cleaned it up long ago.

From: openexr-devel-bounces+ehanway=ilm@nongnu.org 
[mailto:openexr-devel-bounces+ehanway=ilm@nongnu.org] On Behalf Of Mathieu 
Malaterre
Sent: Sunday, July 05, 2015 9:35 AM
To: openexr-devel@nongnu.org
Cc: 791...@bugs.debian.org
Subject: [Openexr-devel] testOptimizedInterleavePatterns.cpp

Hi all,

I am preparing the debian package for openexr. I am running in the following 
issue, when the test suite runs, here is what I get (debian jessie x86/32bits):

[...]
Running testOptimizedInterleavePatterns
Testing SSE optimisation with different interleave patterns (large images)
...
 0, 0: RGBHalf read as RGBHalf...OK
 0, 1: RGBHalf read as RGBAHalf...   OK
 0, 2: RGBHalf read as ABGRHalf...   OK
 0, 3: RGBHalf read as RGBFloat...

error reading back channel B pixel 96,-62 got -nan expected -nan
lt-IlmImfTest: testOptimizedInterleavePatterns.cpp:238: bool
{anonymous}::compare(const Imf_2_2::FrameBuffer, const
Imf_2_2::FrameBuffer, const Box2i, bool): Assertion
`writtenHalf.bits()==readHalf.bits()' failed.
/bin/bash: line 5: 25131 Aborted ${dir}$tst
FAIL: IlmImfTest
==
1 of 1 test failed
==
[...]

This is a hard-failure based on an assert(). Is there an actual issue in 
openexr 2.2.0 ?

Thanks much,
___
Openexr-devel mailing list
Openexr-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/openexr-devel


Re: [Openexr-devel] AC103A8D public key ?

2015-01-30 Thread Ed Hanway
I've published the public key via pgp.mit.edu.  It should work now

From: openexr-devel-bounces+ehanway=ilm@nongnu.org 
[mailto:openexr-devel-bounces+ehanway=ilm@nongnu.org] On Behalf Of Piotr 
Stanczyk
Sent: Friday, January 30, 2015 9:34 AM
To: Mathieu Malaterre
Cc: openexr-devel@nongnu.org openexr-devel@nongnu.org
Subject: Re: [Openexr-devel] AC103A8D public key ?

Hi Mathieu,

How did you get the distro? The keys should be available from here normally 
http://download.savannah.gnu.org/releases/openexr/

Cheers

Piotr


On 30 January 2015 at 00:01, Mathieu Malaterre 
ma...@debian.orgmailto:ma...@debian.org wrote:
If this was not clear from my post, I am using the new infrastructure
provided by Debian to check upstream source code. Therefore until this
public key is accessible somewhere, the following bug cannot be
resolved:

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=776558

Regards,

On Thu, Jan 29, 2015 at 8:02 PM, Dillon Bailey 
shdw...@gmail.commailto:shdw...@gmail.com wrote:
 Sometimes I will just do:
 $ wget http://package.tar.gz --no-check-certificate

 It can bypass it though perhaps you are big into checking and confirming you
 download. Otherwise just bypass it...

 On Thu, Jan 29, 2015 at 3:52 AM, Mathieu Malaterre 
 ma...@debian.orgmailto:ma...@debian.org wrote:

 Hi,

 I am trying to check ilmbase download:

 $ wget
 http://download.savannah.gnu.org/releases/openexr/ilmbase-2.2.0.tar.gz
 $ wget
 http://download.savannah.gnu.org/releases/openexr/ilmbase-2.2.0.tar.gz.sig
 $ gpg --verify ilmbase-2.2.0.tar.gz.sig
 gpg: assuming signed data in `ilmbase-2.2.0.tar.gz'
 gpg: Signature made Sun 10 Aug 2014 07:11:49 AM CEST using RSA key ID
 AC103A8D
 gpg: Can't check signature: public key not found

 Where is the public key AC103A8D ? I could not find it anywhere :

 $ gpg --keyserver pgp.mit.eduhttp://pgp.mit.edu --search-keys AC103A8D
 gpg: searching for AC103A8D from hkp server pgp.mit.eduhttp://pgp.mit.edu
 gpg: key AC103A8D not found on keyserver


 Thanks much

 ___
 Openexr-devel mailing list
 Openexr-devel@nongnu.orgmailto:Openexr-devel@nongnu.org
 https://lists.nongnu.org/mailman/listinfo/openexr-devel



___
Openexr-devel mailing list
Openexr-devel@nongnu.orgmailto:Openexr-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/openexr-devel

___
Openexr-devel mailing list
Openexr-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/openexr-devel


Re: [Openexr-devel] Virtual destructor for Imath::Frustum.

2014-11-06 Thread Ed Hanway
 Imath::Frustum has a virtual destructor. Is this intentional? 

It's been that way forever, but I see no current usage of it as a polymorphic 
base class, nor can I envision any, so there's no need for the destructor to be 
virtual and it probably wasn't intentional.
___
Openexr-devel mailing list
Openexr-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/openexr-devel


Re: [Openexr-devel] Behavioural change in InputPart::readPixels()

2014-10-31 Thread Ed Hanway
I see that check for no slices in several places, some dating back 10 years and 
the most recent change being from early to mid 2013, which would have been out 
in 2.1, if not earlier.  Which prior version are you comparing to?

-Original Message-
From: openexr-devel-bounces+ehanway=ilm@nongnu.org 
[mailto:openexr-devel-bounces+ehanway=ilm@nongnu.org] On Behalf Of Halfdan 
Ingvarsson
Sent: Thursday, October 30, 2014 1:56 PM
To: openexr-devel@nongnu.org
Subject: [Openexr-devel] Behavioural change in InputPart::readPixels()

Hello

In OpenEXR 2.2, if no slices are specified in a Framebuffer object, when 
InputPart::readPixels is called, it throws an exception ('No frame buffer 
specified as pixel data destination.'). In prior versions, it would just return 
without reading any data.

Before I determine which side of the fence to patch; was this change 
intentional?

Thanks,

  - ½


___
Openexr-devel mailing list
Openexr-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/openexr-devel
___
Openexr-devel mailing list
Openexr-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/openexr-devel


Re: [Openexr-devel] testOptimizedInterleavePatterns

2014-08-13 Thread Ed Hanway
That's noted in this issue:

https://github.com/openexr/openexr/issues/67

though you'd have to dig through the comments to see it.  It's apparently in 
the test program and not in the library, and has only been reported for i386.

-Original Message-
From: openexr-devel-bounces+ehanway=ilm@nongnu.org 
[mailto:openexr-devel-bounces+ehanway=ilm@nongnu.org] On Behalf Of Richard 
PALO
Sent: Wednesday, August 13, 2014 2:32 PM
To: openexr-devel@nongnu.org
Subject: [Openexr-devel] testOptimizedInterleavePatterns

Hi, after adding the files missing from the tarball I'm able to get further 
into the tests...

I'm now getting the following (on SunOS 5.11 i386 (32bit) pkgsrc gcc47)

 ===
 Running testOptimizedInterleavePatterns Testing SSE optimisation with 
 different interleave patterns (large images) ...
  0, 0: RGBHalf read as RGBHalf...OK OPTIMISED
  0, 1: RGBHalf read as RGBAHalf...   OK OPTIMISED
  0, 2: RGBHalf read as ABGRHalf...   OK
  0, 3: RGBHalf read as RGBFloat...

 error reading back channel B pixel 96,-81 got -NaN expected -NaN 
 Assertion failed: writtenHalf.bits()==readHalf.bits(), file 
 testOptimizedInterleavePatterns.cpp, line 238, function compare Abort 
 (core dumped)
 FAIL: IlmImfTest

sort of green on where to start debugging, but first I'm curious to know if the 
issue be in the library or perhaps in the test program...

thanks for any suggestions


___
Openexr-devel mailing list
Openexr-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/openexr-devel

___
Openexr-devel mailing list
Openexr-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/openexr-devel


Re: [Openexr-devel] 2.2.0 release plans

2014-07-16 Thread Ed Hanway
I believe it's only when using USE_ZLIB_WINAPI that the min/max issue happens.  
With that option enabled, zlib.h drags in the windows headers, causing the 
conflict.  There are places in IlmBase that use windows includes directly 
(IlmThread) already use the #define NOMINMAX prior to the include to avoid this.

Question: does anybody really count on the USE_ZLIB_WINAPI option?

From: openexr-devel-bounces+ehanway=ilm@nongnu.org 
[mailto:openexr-devel-bounces+ehanway=ilm@nongnu.org] On Behalf Of Karl 
Rasche
Sent: Wednesday, July 16, 2014 11:08 AM
To: Larry Gritz
Cc: openexr-devel@nongnu.org
Subject: Re: [Openexr-devel] 2.2.0 release plans

It sure looks like std::min/max usage is contained to within .cpp files.

There's a variety of other places that use the same functions - but only 
IlmDwaCompressor.cpp was causing problems? That seems a bit wierd.

Karl

On Wednesday, July 16, 2014, Larry Gritz 
l...@larrygritz.commailto:l...@larrygritz.com wrote:
Another application that uses the OpenEXR libraries will #include the OpenEXR 
headers, but will not actually use the OpenEXR build system and its command 
line preprocessor settings.

So if this issue extends to any of the header files, you need to fix it in the 
headers, or it'll be broken in the user's app
___
Openexr-devel mailing list
Openexr-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/openexr-devel