summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAxel Davy <[email protected]>2015-01-21 08:59:05 +0100
committerAxel Davy <[email protected]>2015-02-06 00:07:19 +0100
commitd8d48f6f7181fa6cc7c4ff5b1c0e8883d6f8ce6d (patch)
treef698ecba2619e225cc9c8b8cdc23831c673c308b
parenta1d369e804623663e78002c0101d668bd3d42762 (diff)
st/nine: Fix multisampling support detection
Reviewed-by: Tiziano Bacocco <[email protected]> Signed-off-by: Axel Davy <[email protected]>
-rw-r--r--src/gallium/state_trackers/nine/adapter9.c12
-rw-r--r--src/gallium/state_trackers/nine/nine_pipe.h25
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 e9bb9c08ee9..069cc03a031 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 7295bdf9c6e..17844d5556b 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)
{