On 24 May 2010, at 22:09, David Levin wrote: > > that even if it was implemented everywhere, this solution involves readback > > from the GPU which, as Chris mentioned, is generally evil and should be > > avoided at all costs. > > This I'm not qualified to comment on, though. To the best of my > knowledge, GPUs are magical boxes that make things go faster via pixie > dust. ;) > > Thanks for your opinion. :) > > Chris is qualified so are other people whom I've spoken to who have said the > same thing, so using the gpu is not pixie dust in this particular scenario > even though folks would like to be believe it so.
I think GPU readback is a red herring. It's an operation that takes milliseconds. It's "slow" for realtime graphics, but it's not something that user is going to notice when uploading images — users are not uploading hundreds of images per second. If UA can parallelize decoding, scaling, encoding and sending, the operation can be very fast and memory-efficient, even if scaling is done very slowly (it won't have noticeable impact as long as it's not slower than uploading). JPEG can be efficiently decoded at fraction of its size — without full decode and scale process. This process also needs only fraction of memory required for full scaling, which might matter on low-end mobile devices. Letting UA utilize this feature may give huge performance gains. Scaling isn't the only operation desirable — in some cases users might also want to crop the image (e.g., to upload only their face as an avatar), and cropping interface needs to be platform-specific — on touchscreen devices I'd rather use gestures than select-by-click'n'drag interface typical for desktop. I think scaling of images before upload might be left completely up to UA. From site's perspective it could look like user simply selected scaled-down file. It could even be done declaratively — site could define desired size and whether user should be asked to crop the image: <input type="file" accept="image/*" max-image-size="1000x1000" crop="allowed"> Actually, I wish UAs offered scaling even for plain <input type=file>, because I don't expect every site with image upload to add extra code for resizing. -- regards, Kornel
