Skip to content

Commit

Permalink
st/nine: Fix multisampling support detection
Browse files Browse the repository at this point in the history
Signed-off-by: Axel Davy <axel.davy@ens.fr>
  • Loading branch information
Axel Davy committed Jan 23, 2015
1 parent 139db03 commit 2fe2070
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 28 deletions.
12 changes: 9 additions & 3 deletions src/gallium/state_trackers/nine/adapter9.c
Original file line number Diff line number Diff line change
Expand Up @@ -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),
Expand All @@ -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",
Expand Down
25 changes: 0 additions & 25 deletions src/gallium/state_trackers/nine/nine_pipe.h
Original file line number Diff line number Diff line change
Expand Up @@ -309,31 +309,6 @@ d3d9_to_pipe_format_checked(struct pipe_screen *screen,
return PIPE_FORMAT_NONE;
}

/* same that above, but well determine 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)
{
Expand Down

0 comments on commit 2fe2070

Please sign in to comment.