Hi;

On Wed, 2008-11-05 at 10:22 -0500, Owen Taylor wrote:
> So, I've been working on getting the beginnings of gnome-shell going
> based on mutter (metacity-clutter.) And a large part of that has been
> debugging mutter on various hardware.
> 
> The biggest problem so far is that ClutterGLXPixmapTexture has no
> support for the ARB_texture_rectangle extension. So, it either uses 
> ARB_texture_non_power_of_two, or it falls back to tiling.
> 
> Talking to Neil, he said that support for ARB_texture_rectangle used to
> exist in clutter, but was removed because there was an assumption that
> if EXT_texture_for_pixmap extension was present, then
> ARB_texture_non_power_of_two would be present as well.

IIRC it was removed due to issues around ARB_texture_rectangle using non
normalised co-ords (adding complexity's to things making shaders work
everywhere), lack of mipmap support, issues around repeating and other
oddities. I believe ARB_texture_rectangle is regarded as 'legacy' in the
GL world with use of ARB_texture_non_power_of_two being much preferred
and more modern approach (with less issues).

> 
> Unfortunately, that's not the case - in particular Radeon r3xx and r5xx
> don't have full hardware support for NPOT textures; they are pretty
> much restricted to supporting only ARB_texture_rectangle. On these
> cards mutter performs poorly using the GetImage fallback.

I could be wrong here, but I thought ATI did actually support npots
sized regular textures, they just did not advertise the fact. Worth
checking.

> 
> In addition, there seem to be a wide variety of driver/hardware
> combinations where compiz works but mutter badly misbehaves (anything
> but the very latest Intel drivers, some versions of the nVidia
> proprietary drivers, etc.) It's pure speculation that using
> ARB_texture_rectangle would resolve these issues, but it's at least
> something I want to try.
> 
> So, anyways, the conclusion is that I need ARB_texture_rectangle
> support. I have a hacked up version of GLXPixmapTexture that does this
> by either using cogl_texture or directly using a GL texture, but this
> runs into some problems because mutter uses CloneTexture and otherwise
> expects to be able to get the cogl_texture and draw with it.
> 
> I see two basic routes I could take:
> 
> 1) I could add support for ARB_texture_rectangle into cogl_texture.
>    Presumably this would look like cogl_texture_new_rectangle()
>    or something ... you'd have to explicitly ask to get a rectangular
>    texture, since they do behave significantly different.
> 
>    (Though more different than a sliced up texture? Not sure...)
> 
>    The main downside here, assuming I could get a change like this
>    into clutter, would by tying gnome-shell to the devel branch
>    of clutter.

I think making it usage explicit and contained like this is really the
only way to go in we do bring back in support for ARB_texture_rectangle
without a lot of complexity and other pain elsewhere. 

Re devel branch - I dont see why this could not end up in the stable
branch of which we are already having to track pretty much with mutter.

  == Matthew

-- 
Matthew Allum, Intel Open Source Technology Center

-- 
To unsubscribe send a mail to [EMAIL PROTECTED]

Reply via email to