r600g: do GL-compliant integer resolves
authorMarek Olšák <marek.olsak@amd.com>
Tue, 31 May 2016 10:03:32 +0000 (12:03 +0200)
committerMarek Olšák <marek.olsak@amd.com>
Tue, 31 May 2016 14:48:55 +0000 (16:48 +0200)
The GL spec has been clarified and the new rule says we should just
copy 1 sample. u_blitter does the right thing.

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
src/gallium/drivers/r600/r600_blit.c

index 9230b4021b5dbbd8fa5d75323cbbec9e76eb3e05..282645f149696248dabcdf0f02a0173bc03e1542 100644 (file)
@@ -756,42 +756,6 @@ void r600_resource_copy_region(struct pipe_context *ctx,
        pipe_sampler_view_reference(&src_view, NULL);
 }
 
-/* For MSAA integer resolving to work, we change the format to NORM using this function. */
-static enum pipe_format int_to_norm_format(enum pipe_format format)
-{
-       switch (format) {
-#define REPLACE_FORMAT_SIGN(format,sign) \
-       case PIPE_FORMAT_##format##_##sign##INT: \
-               return PIPE_FORMAT_##format##_##sign##NORM
-#define REPLACE_FORMAT(format) \
-               REPLACE_FORMAT_SIGN(format, U); \
-               REPLACE_FORMAT_SIGN(format, S)
-
-       REPLACE_FORMAT_SIGN(B10G10R10A2, U);
-       REPLACE_FORMAT(R8);
-       REPLACE_FORMAT(R8G8);
-       REPLACE_FORMAT(R8G8B8X8);
-       REPLACE_FORMAT(R8G8B8A8);
-       REPLACE_FORMAT(A8);
-       REPLACE_FORMAT(I8);
-       REPLACE_FORMAT(L8);
-       REPLACE_FORMAT(L8A8);
-       REPLACE_FORMAT(R16);
-       REPLACE_FORMAT(R16G16);
-       REPLACE_FORMAT(R16G16B16X16);
-       REPLACE_FORMAT(R16G16B16A16);
-       REPLACE_FORMAT(A16);
-       REPLACE_FORMAT(I16);
-       REPLACE_FORMAT(L16);
-       REPLACE_FORMAT(L16A16);
-
-#undef REPLACE_FORMAT
-#undef REPLACE_FORMAT_SIGN
-       default:
-               return format;
-       }
-}
-
 static bool do_hardware_msaa_resolve(struct pipe_context *ctx,
                                     const struct pipe_blit_info *info)
 {
@@ -799,7 +763,7 @@ static bool do_hardware_msaa_resolve(struct pipe_context *ctx,
        struct r600_texture *dst = (struct r600_texture*)info->dst.resource;
        unsigned dst_width = u_minify(info->dst.resource->width0, info->dst.level);
        unsigned dst_height = u_minify(info->dst.resource->height0, info->dst.level);
-       enum pipe_format format = int_to_norm_format(info->dst.format);
+       enum pipe_format format = info->dst.format;
        unsigned sample_mask =
                rctx->b.chip_class == CAYMAN ? ~0 :
                ((1ull << MAX2(1, info->src.resource->nr_samples)) - 1);