diff options
author | Axel Davy <[email protected]> | 2015-01-21 08:59:05 +0100 |
---|---|---|
committer | Axel Davy <[email protected]> | 2015-02-06 00:07:19 +0100 |
commit | d8d48f6f7181fa6cc7c4ff5b1c0e8883d6f8ce6d (patch) | |
tree | f698ecba2619e225cc9c8b8cdc23831c673c308b | |
parent | a1d369e804623663e78002c0101d668bd3d42762 (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.c | 12 | ||||
-rw-r--r-- | 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 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) { |