radeonsi: add llvm processor names for CIK
[mesa.git] / src / gallium / drivers / radeonsi / r600_blit.c
index 35c8f9594460f6b549e01dd1d0b45ef0c9b7ff3a..34f14bae03479349679fb4e8bdd49041aea235e4 100644 (file)
@@ -80,8 +80,9 @@ static void r600_blitter_begin(struct pipe_context *ctx, enum r600_blitter_op op
 
        if ((op & R600_DISABLE_RENDER_COND) && rctx->current_render_cond) {
                rctx->saved_render_cond = rctx->current_render_cond;
+               rctx->saved_render_cond_cond = rctx->current_render_cond_cond;
                rctx->saved_render_cond_mode = rctx->current_render_cond_mode;
-               rctx->context.render_condition(&rctx->context, NULL, 0);
+               rctx->context.render_condition(&rctx->context, NULL, FALSE, 0);
        }
 
 }
@@ -92,27 +93,13 @@ static void r600_blitter_end(struct pipe_context *ctx)
        if (rctx->saved_render_cond) {
                rctx->context.render_condition(&rctx->context,
                                               rctx->saved_render_cond,
+                                              rctx->saved_render_cond_cond,
                                               rctx->saved_render_cond_mode);
                rctx->saved_render_cond = NULL;
        }
        r600_context_queries_resume(rctx);
 }
 
-static unsigned u_max_layer(struct pipe_resource *r, unsigned level)
-{
-       switch (r->target) {
-       case PIPE_TEXTURE_CUBE:
-               return 6 - 1;
-       case PIPE_TEXTURE_3D:
-               return u_minify(r->depth0, level) - 1;
-       case PIPE_TEXTURE_1D_ARRAY:
-       case PIPE_TEXTURE_2D_ARRAY:
-               return r->array_size - 1;
-       default:
-               return 0;
-       }
-}
-
 void si_blit_uncompress_depth(struct pipe_context *ctx,
                struct r600_resource_texture *texture,
                struct r600_resource_texture *staging,
@@ -151,7 +138,7 @@ void si_blit_uncompress_depth(struct pipe_context *ctx,
 
                /* The smaller the mipmap level, the less layers there are
                 * as far as 3D textures are concerned. */
-               max_layer = u_max_layer(&texture->resource.b.b, level);
+               max_layer = util_max_layer(&texture->resource.b.b, level);
                checked_last_layer = last_layer < max_layer ? last_layer : max_layer;
 
                for (layer = first_layer; layer <= checked_last_layer; layer++) {
@@ -202,7 +189,7 @@ static void si_blit_decompress_depth_in_place(struct r600_context *rctx,
 
                /* The smaller the mipmap level, the less layers there are
                 * as far as 3D textures are concerned. */
-               max_layer = u_max_layer(&texture->resource.b.b, level);
+               max_layer = util_max_layer(&texture->resource.b.b, level);
                checked_last_layer = last_layer < max_layer ? last_layer : max_layer;
 
                for (layer = first_layer; layer <= checked_last_layer; layer++) {
@@ -246,7 +233,7 @@ void si_flush_depth_textures(struct r600_context *rctx,
 
                si_blit_decompress_depth_in_place(rctx, tex,
                                                  view->u.tex.first_level, view->u.tex.last_level,
-                                                 0, u_max_layer(&tex->resource.b.b, view->u.tex.first_level));
+                                                 0, util_max_layer(&tex->resource.b.b, view->u.tex.first_level));
        }
 }
 
@@ -259,8 +246,7 @@ static void r600_clear(struct pipe_context *ctx, unsigned buffers,
 
        r600_blitter_begin(ctx, R600_CLEAR);
        util_blitter_clear(rctx->blitter, fb->width, fb->height,
-                          fb->nr_cbufs, buffers, fb->nr_cbufs ? fb->cbufs[0]->format : PIPE_FORMAT_NONE,
-                          color, depth, stencil);
+                          buffers, color, depth, stencil);
        r600_blitter_end(ctx);
 }
 
@@ -432,12 +418,30 @@ static void r600_resource_copy_region(struct pipe_context *ctx,
                        r600_change_format(dst, dst_level, &orig_info[1],
                                           PIPE_FORMAT_R8_UNORM);
                        break;
+               case 2:
+                       r600_change_format(src, src_level, &orig_info[0],
+                                          PIPE_FORMAT_R8G8_UNORM);
+                       r600_change_format(dst, dst_level, &orig_info[1],
+                                          PIPE_FORMAT_R8G8_UNORM);
+                       break;
                case 4:
                        r600_change_format(src, src_level, &orig_info[0],
                                           PIPE_FORMAT_R8G8B8A8_UNORM);
                        r600_change_format(dst, dst_level, &orig_info[1],
                                           PIPE_FORMAT_R8G8B8A8_UNORM);
                        break;
+               case 8:
+                       r600_change_format(src, src_level, &orig_info[0],
+                                          PIPE_FORMAT_R16G16B16A16_UINT);
+                       r600_change_format(dst, dst_level, &orig_info[1],
+                                          PIPE_FORMAT_R16G16B16A16_UINT);
+                       break;
+               case 16:
+                       r600_change_format(src, src_level, &orig_info[0],
+                                          PIPE_FORMAT_R32G32B32A32_UINT);
+                       r600_change_format(dst, dst_level, &orig_info[1],
+                                          PIPE_FORMAT_R32G32B32A32_UINT);
+                       break;
                default:
                        fprintf(stderr, "Unhandled format %s with blocksize %u\n",
                                util_format_short_name(src->format), blocksize);