Thanks Frank,I'll have a play with it as soon as I can get back into working on this project.Any ideas (apart from Tiling) for what I can try if this doesn't solve the problem? I am thinking that there's potentially something wrong with the install of macOS 10.14.6 on this customers machine and that his GPU driver is borked.However I am very hesitant to ask the customer to re-install his OS, incase it's not or for it to cause the customer more problems. Which is why for this function, I've been gradually replacing the Core Image with C++ via GCD, the conversion to the sRGB Tone Curve is the last function that I have to convert.
Post
Replies
Boosts
Views
Activity
> The strangest thing is that one row of pixels is there...Agreed> Are you sure rowBytes and the other properties are computed correctly?I am pretty certain ( although never 100% ), the numbers seem right and it works on the two machines I have to hand that run the same OS version as the customer, with the customers images. It works for the customer when using images just shy of 8192 in width.> Also, if you just want to achieve linear -> sRGB, you don't need any CIFilter. Just use the sRGB color space when rendering the image. Core Image will perform the conversion automatically.It's my understanding that this only changes the color profile, for this step I'm doing a tone curve adjustment. I can get close by using pow(), but I don't know the exact ratios, I also want to try to avoid changing the look of images unless I am left with zero choice.If I knew what the exact tone curve adjustments are, I would drop Core Image for this process in a heartbeat, I have everyhing else working in C++ code and using GCD, there is very little perceived performance penalty (at the moment).
Hi Frank,Your point on tiling might well be spot on, while for this test I am not doing any tiling myself, I wonder if it's CoreImage's own tiling system is incompatible with the 2010 Mac Pro. I have no idea what resolution Core Image auto tiles or the size of the tiles. I wonder if I try manually tiling the image via a CIImageAccumulator (like I did for my complex filters) if that would help.I am not doing anything fancy with Core Image for this test, simply creating a CIImage from a CGImage, applying the CILinearToneCurveTosRGB and then getting the pixel data back via [CIContext render:toBitmap:rowBytes:bounds:format:colorSpace:] I have also tried creating a CIContext from a CGBitmapContext and drawing the CIImage into the CIContext (so I can get at the RAW pixels), but that yields the same result, 1 row of pixels and the rest is black.I am amazed that this customer has the patience to persist with me, while I been trying a great many things, but no luck in solving it for them (doesn't help that I am not able to reproduce it here).These kind of issues with Core Image are simply driving me nuts.
Stupid forum software cut off the first line from the log report.<CIContext: 0x600003c57100 (metal-DG 738) MTLDevice=0x10d019000> priority: default workingSpace: <CGColorSpace 0x600001a44720> (kCGColorSpaceICCBased; kCGColorSpaceModelRGB; Generic HDR Profile) workingFormat: RGBAh downsampleQuality: High max sizes, in{16384 x 16384} out{16384 x 16384}