> 2. Investigate if there's some way to hack around it (using RGB pixmaps 
> but somehow storing and reconstructing the alpha channel maybe?)

This sounds pretty workable to me.  We can send alpha as the R channel of a 
second pixmap/texture and the compositor can extract it within a fragment 
shader.

> 3. Shared memory with texture upload on the compositor side.
>
> #3 is guaranteed to work, but has bad performance implications (though
> no worse than the browsers of today).

If we're rendering on the CPU anyway, what's the performance hit of compositor 
upload?  Is the issue that we'd like to upload in parallel with compositor work 
(and thus avoid jank)?

I'm one of the people who can't use RGBA pixmaps, on Linux with NVIDIA binary 
drivers (which I naively thought were feature-complete).  When I switch to RGB 
pixmaps (patching rust-layers thus: 
https://gist.github.com/kmcallister/7206061), I can run servo with CPU 
rendering (./servo -c) but with GPU rendering I get

    X Error of failed request:  BadAlloc (insufficient resources for operation)
      Major opcode of failed request:  135 (GLX)
      Minor opcode of failed request:  22 (X_GLXCreatePixmap)
      Serial number of failed request:  141
      Current serial number in output stream:  142

I'm not sure why this is happening but I didn't have much time to dig into it 
yet.

keegan
_______________________________________________
dev-servo mailing list
dev-servo@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-servo

Reply via email to