[Mesa-dev] [PATCH 1/5] st/formats: split choose format into non-erroring internal version

Dave Airlie airlied at gmail.com
Wed Apr 10 21:17:48 PDT 2013


From: Dave Airlie <airlied at redhat.com>

This allows us to reuse this for choosing formats for MSAA limits.

Signed-off-by: Dave Airlie <airlied at redhat.com>
---
 src/mesa/state_tracker/st_format.c | 24 +++++++++++++++++++-----
 src/mesa/state_tracker/st_format.h |  5 +++++
 2 files changed, 24 insertions(+), 5 deletions(-)

diff --git a/src/mesa/state_tracker/st_format.c b/src/mesa/state_tracker/st_format.c
index c9c6163..ee72bda 100644
--- a/src/mesa/state_tracker/st_format.c
+++ b/src/mesa/state_tracker/st_format.c
@@ -1614,10 +1614,10 @@ find_exact_format(GLint internalFormat, GLenum format, GLenum type)
  *                   when we're getting called from gl[Copy]TexImage().
  */
 enum pipe_format
-st_choose_format(struct st_context *st, GLenum internalFormat,
-                 GLenum format, GLenum type,
-                 enum pipe_texture_target target, unsigned sample_count,
-                 unsigned bindings, boolean allow_dxt)
+st_choose_format_internal(struct st_context *st, GLenum internalFormat,
+                          GLenum format, GLenum type,
+                          enum pipe_texture_target target, unsigned sample_count,
+                          unsigned bindings, boolean allow_dxt)
 {
    struct pipe_screen *screen = st->pipe->screen;
    int i, j;
@@ -1651,10 +1651,24 @@ st_choose_format(struct st_context *st, GLenum internalFormat,
       }
    }
 
-   _mesa_problem(NULL, "unhandled format!\n");
    return PIPE_FORMAT_NONE;
 }
 
+enum pipe_format
+st_choose_format(struct st_context *st, GLenum internalFormat,
+                 GLenum format, GLenum type,
+                 enum pipe_texture_target target, unsigned sample_count,
+                 unsigned bindings, boolean allow_dxt)
+{
+   enum pipe_format pformat;
+
+   pformat = st_choose_format_internal(st, internalFormat, format, type,
+                                       target, sample_count, bindings,
+                                       allow_dxt);
+   if (pformat == PIPE_FORMAT_NONE)
+      _mesa_problem(NULL, "unhandled format!\n");
+   return pformat;
+}
 
 /**
  * Called by FBO code to choose a PIPE_FORMAT_ for drawing surfaces.
diff --git a/src/mesa/state_tracker/st_format.h b/src/mesa/state_tracker/st_format.h
index 0a1c18d..9f1d4ef 100644
--- a/src/mesa/state_tracker/st_format.h
+++ b/src/mesa/state_tracker/st_format.h
@@ -46,6 +46,11 @@ st_mesa_format_to_pipe_format(gl_format mesaFormat);
 extern gl_format
 st_pipe_format_to_mesa_format(enum pipe_format pipeFormat);
 
+extern enum pipe_format
+st_choose_format_internal(struct st_context *st, GLenum internalFormat,
+                          GLenum format, GLenum type,
+                          enum pipe_texture_target target, unsigned sample_count,
+                          unsigned bindings, boolean allow_dxt);
 
 extern enum pipe_format
 st_choose_format(struct st_context *st, GLenum internalFormat,
-- 
1.8.2



More information about the mesa-dev mailing list