[Mesa-dev] [PATCH 0/8] gallium: create a generic way to validate fb params

Ilia Mirkin imirkin at alum.mit.edu
Fri Oct 4 01:34:11 PDT 2013


NV30 is blessed with all manners of hardware restrictions. One of them is that
the render target format's color and depth outputs need to be the same
bit-ness, i.e. either both 16 or both 32 bits. (In addition to all color
attachments needing to be the same, and everything needing to be the same
size.)

There is a PIPE_CAP_MIXED_COLORBUFFER_FORMATS that currently handles the
requirement of all the cbuf attachments having the same format. This series
creates a more generic mechanism to perform such validation which allows nv30
to also check the sizes of the cbuf/zsbuf formats. At the end, I remove that
PIPE_CAP as it is no longer necessary.

I first tried to use a pipe_framebuffer_state as the parameter to this new
call, however I couldn't quite figure out how to populate it in case that the
depth output buffer was a texture (seems to map to a pipe_resource, not a
pipe_surface).

This series is a follow-up to the discussion started in
http://lists.freedesktop.org/archives/mesa-dev/2013-September/044658.html

Ilia Mirkin (8):
  mesa/st: create interface to verify fb format, reject bad fbs
  gallium: add helper to use as a replacement for the MIXED_COLOR cap
  i915: hook up is_fb_format_supported
  r300: hook up is_fb_format_supported
  softpipe: hook up is_fb_format_supported
  nv30: hook up is_fb_format_supported
  gallium: remove PIPE_CAP_MIXED_COLORBUFFER_FORMATS
  nv30: make sure that cbufs and zsbuf have the same depth

 src/gallium/auxiliary/util/u_format.c            | 20 +++++++++++
 src/gallium/auxiliary/util/u_format.h            | 11 +++++++
 src/gallium/docs/source/screen.rst               |  2 --
 src/gallium/drivers/freedreno/freedreno_screen.c |  1 -
 src/gallium/drivers/i915/i915_screen.c           |  2 +-
 src/gallium/drivers/ilo/ilo_screen.c             |  2 --
 src/gallium/drivers/llvmpipe/lp_screen.c         |  2 --
 src/gallium/drivers/nouveau/nv30/nv30_screen.c   | 20 ++++++++++-
 src/gallium/drivers/nouveau/nv50/nv50_screen.c   |  1 -
 src/gallium/drivers/nouveau/nvc0/nvc0_screen.c   |  1 -
 src/gallium/drivers/r300/r300_screen.c           |  3 +-
 src/gallium/drivers/r600/r600_pipe.c             |  1 -
 src/gallium/drivers/radeonsi/radeonsi_pipe.c     |  1 -
 src/gallium/drivers/softpipe/sp_screen.c         |  3 +-
 src/gallium/drivers/svga/svga_screen.c           |  3 --
 src/gallium/include/pipe/p_defines.h             |  1 -
 src/gallium/include/pipe/p_screen.h              | 18 +++++++++-
 src/mesa/state_tracker/st_cb_fbo.c               | 42 ++++++++++++++----------
 18 files changed, 95 insertions(+), 39 deletions(-)

-- 
1.8.1.5



More information about the mesa-dev mailing list