[Mesa-dev] [PATCH 36/43] st/nine: Fix multisampling support detection

Axel Davy axel.davy at ens.fr
Fri Jan 30 12:34:35 PST 2015


Signed-off-by: Axel Davy <axel.davy at ens.fr>
---
 src/gallium/state_trackers/nine/adapter9.c  | 12 +++++++++---
 src/gallium/state_trackers/nine/nine_pipe.h | 25 -------------------------
 2 files changed, 9 insertions(+), 28 deletions(-)

diff --git a/src/gallium/state_trackers/nine/adapter9.c b/src/gallium/state_trackers/nine/adapter9.c
index e9bb9c0..069cc03 100644
--- a/src/gallium/state_trackers/nine/adapter9.c
+++ b/src/gallium/state_trackers/nine/adapter9.c
@@ -359,6 +359,7 @@ NineAdapter9_CheckDeviceMultiSampleType( struct NineAdapter9 *This,
     struct pipe_screen *screen;
     HRESULT hr;
     enum pipe_format pf;
+    unsigned bind;
 
     DBG("This=%p DeviceType=%s SurfaceFormat=%s Windowed=%i MultiSampleType=%u "
         "pQualityLevels=%p\n", This, nine_D3DDEVTYPE_to_str(DeviceType),
@@ -369,9 +370,14 @@ NineAdapter9_CheckDeviceMultiSampleType( struct NineAdapter9 *This,
     if (FAILED(hr))
         return hr;
 
-    pf = d3d9_to_pipe_format_checked_no_bind(screen, SurfaceFormat,
-                                             PIPE_TEXTURE_2D,
-                                             MultiSampleType, FALSE);
+    if (depth_stencil_format(SurfaceFormat))
+        bind = d3d9_get_pipe_depth_format_bindings(SurfaceFormat);
+    else /* render-target */
+        bind = PIPE_BIND_SAMPLER_VIEW | PIPE_BIND_TRANSFER_READ |
+               PIPE_BIND_TRANSFER_WRITE | PIPE_BIND_RENDER_TARGET;
+
+    pf = d3d9_to_pipe_format_checked(screen, SurfaceFormat, PIPE_TEXTURE_2D,
+                                     MultiSampleType, bind, FALSE);
 
     if (pf == PIPE_FORMAT_NONE) {
         DBG("%s with %u samples not available.\n",
diff --git a/src/gallium/state_trackers/nine/nine_pipe.h b/src/gallium/state_trackers/nine/nine_pipe.h
index 7295bdf..17844d5 100644
--- a/src/gallium/state_trackers/nine/nine_pipe.h
+++ b/src/gallium/state_trackers/nine/nine_pipe.h
@@ -309,31 +309,6 @@ d3d9_to_pipe_format_checked(struct pipe_screen *screen,
     return PIPE_FORMAT_NONE;
 }
 
-/* same that above, but determines binding flags */
-static INLINE enum pipe_format
-d3d9_to_pipe_format_checked_no_bind(struct pipe_screen *screen,
-                                    D3DFORMAT format,
-                                    enum pipe_texture_target target,
-                                    unsigned sample_count,
-                                    boolean srgb)
-{
-    enum pipe_format result;
-    unsigned bindings;
-
-    result = d3d9_to_pipe_format_internal(format);
-    if (result == PIPE_FORMAT_NONE)
-        return PIPE_FORMAT_NONE;
-
-    bindings = util_format_is_depth_or_stencil(result) ?
-        PIPE_BIND_DEPTH_STENCIL : PIPE_BIND_RENDER_TARGET;
-    if (srgb)
-        result = util_format_srgb(result);
-
-    if (format_check_internal(result))
-        return result;
-    return PIPE_FORMAT_NONE;
-}
-
 static INLINE const char *
 d3dformat_to_string(D3DFORMAT fmt)
 {
-- 
2.1.0



More information about the mesa-dev mailing list