gallium/u_blitter: check PIPE_CAP_TEXTURE_MULTISAMPLE
authorMarek Olšák <maraeo@gmail.com>
Wed, 12 Sep 2012 20:29:23 +0000 (22:29 +0200)
committerMarek Olšák <maraeo@gmail.com>
Sun, 30 Sep 2012 16:57:56 +0000 (18:57 +0200)
Tested-by: Michel Dänzer <michel.daenzer@amd.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
src/gallium/auxiliary/util/u_blitter.c

index 35b8edba75cd73b8b2a87fcb593c325cae6c9e3a..b94366b998d81eb3e1cd8a2708cd23f37e513ae4 100644 (file)
@@ -121,6 +121,7 @@ struct blitter_context_priv
    boolean vertex_has_integers;
    boolean has_stream_out;
    boolean has_stencil_export;
+   boolean has_texture_multisample;
 };
 
 
@@ -169,6 +170,9 @@ struct blitter_context *util_blitter_create(struct pipe_context *pipe)
          pipe->screen->get_param(pipe->screen,
                                  PIPE_CAP_SHADER_STENCIL_EXPORT);
 
+   ctx->has_texture_multisample =
+      pipe->screen->get_param(pipe->screen, PIPE_CAP_TEXTURE_MULTISAMPLE);
+
    /* blend state objects */
    memset(&blend, 0, sizeof(blend));
    ctx->blend_keep_color = pipe->create_blend_state(pipe, &blend);
@@ -1057,6 +1061,10 @@ boolean util_blitter_is_copy_supported(struct blitter_context *blitter,
    }
 
    if (src) {
+      if (src->nr_samples > 1 && !ctx->has_texture_multisample) {
+         return FALSE;
+      }
+
       if (!screen->is_format_supported(screen, src->format, src->target,
                                  src->nr_samples, PIPE_BIND_SAMPLER_VIEW)) {
          return FALSE;