[Mesa-dev] RFC: Fixing FB issues in nv30 gallium
Roland Scheidegger
sroland at vmware.com
Thu Sep 12 17:49:49 PDT 2013
Am 13.09.2013 01:09, schrieb Ilia Mirkin:
> Hello,
>
> I sent a patch earlier to add a new PIPE_CAP about disallowing mixed
> fb cbuf/zsbuf sizes, which would be used to disable ARB_fbo. I think
> people were generally in favor, but I didn't see any actual
> Reviewed-By's, I'll resend it with updated nouveau directories (I
> guess everything got moved for some reason) and help text that more
> accurately describes the situation.
>
> However, as it turns out, that doesn't go quite far enough. The bpp of
> cbuf/zsbuf has to match up as well
your hardware sucks :-).
> , which apparently can happen even
> without ARB_fbo. Currently st_validate_framebuffer has special logic
> to deal with PIPE_CAP_MIXED_COLORBUFFER_FORMATS and return
> FRAMEBUFFER_UNSUPPORTED as necessary. I was thinking this could be
> handled by adding a pipe_screen->validate_fb() hook, and folding the
> MIXED_COLORBUFFER_FORMATS stuff into it (as well as implementing the
> nv30-specific logic as well). I could alternatively add another
> PIPE_CAP, but I think it's getting to be too much.
>
> Thoughts? Alternate proposals?
>
> Thanks for any feedback,
>
Theoretically this sounds like the right approach, since currently with
the PIPE_CAP_MIXED_COLORBUFFER_FORMATS this just enforces that color
formats are all the same - but this may not really be what the hw
limitation is (even wrt just color buffers), I could imagine some hw
only not supporting some but not all possible combinations. The
framebuffer_unsupported stuff is all entirely implementation dependent
after all (though I guess in the EXT_fbo version the only possibility to
hit that is indeed with non-matching color/zs combinations since
different color formats are explicitly prohibited).
I'm not sure though it's worth having this in the pipe interface since
it only seems to affect some fairly arcane hw, but I could live with it.
Roland
More information about the mesa-dev
mailing list