>> The single CGContextDrawImage in drawRect: should end up essentially being a 
>> memcpy which will be ridiculously fast, as long as your contexts/backing all 
>> use the same color space and bitmap layout as the view’s context’s backing. 
>> Definitely make sure they’re using the same color space because converting 
>> is really slow.
> 
> But how can you do that? There’s no CGContextGetColorspace function, except 
> for a bitmap context, and the context that’s current when drawRect: is 
> entered does not seem to be a bitmap context. I would have expected it to be, 
> but it returns nil for all of the CGBitmapContextxxx functions, so my 
> assumption is it’s a private variant. Same goes for the format, even if it 
> has one. I’m using the genericRGB colourspace and premultiplied alpha first 
> for my own contexts.

Offhand I couldn’t tell you. The main thing is to look at the profile and 
inspect what’s happening within the draw call. It’ll be obvious if it’s doing 
colorspace conversion. 

Just thinking out loud: There’s NSView’s bitmapImageRepForCachingDisplayInRect: 
and you can grab a colorspace from the rep. I would certainly imagine that has 
the ideal space and you can confirm it’s one or another. You can use that 
method to create your presumably ideal backing and then create multiple 
contexts that share the same buffer as that original bitmap rep on your 
background threads. I can’t say whether it’s better or not, but it’s something 
that comes to mind. 


(CATiledLayer still sounds like a good idea to me as well.)


--
Seth Willits

_______________________________________________

Cocoa-dev mailing list ([email protected])

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to