X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fgallium%2Fdrivers%2Fr300%2Fr300_blit.c;h=b627e01389823f00ee051137a74a833ca8e22a39;hb=d2f8105b606269c0e71cd599f57997279385d300;hp=b5c3ae5ac3bf91a5a457d66906665998f78d455f;hpb=7df15389afea467163b8edc09a61bf1f9b3000fa;p=mesa.git diff --git a/src/gallium/drivers/r300/r300_blit.c b/src/gallium/drivers/r300/r300_blit.c index b5c3ae5ac3b..b627e013898 100644 --- a/src/gallium/drivers/r300/r300_blit.c +++ b/src/gallium/drivers/r300/r300_blit.c @@ -25,7 +25,7 @@ #include "r300_texture.h" #include "r300_reg.h" -#include "util/u_format.h" +#include "util/format/u_format.h" #include "util/u_half.h" #include "util/u_pack_color.h" #include "util/u_surface.h" @@ -202,6 +202,7 @@ DEBUG_GET_ONCE_BOOL_OPTION(hyperz, "RADEON_HYPERZ", FALSE) /* Clear currently bound buffers. */ static void r300_clear(struct pipe_context* pipe, unsigned buffers, + const struct pipe_scissor_state *scissor_state, const union pipe_color_union *color, double depth, unsigned stencil) @@ -328,7 +329,7 @@ static void r300_clear(struct pipe_context* pipe, /* Pair the resource with the CMASK to avoid other resources * accessing it. */ if (!r300->screen->cmask_resource) { - pipe_mutex_lock(r300->screen->cmask_mutex); + mtx_lock(&r300->screen->cmask_mutex); /* Double checking (first unlocked, then locked). */ if (!r300->screen->cmask_resource) { /* Don't reference this, so that the texture can be @@ -336,7 +337,7 @@ static void r300_clear(struct pipe_context* pipe, * Then in texture_destroy, we set cmask_resource to NULL. */ r300->screen->cmask_resource = fb->cbufs[0]->texture; } - pipe_mutex_unlock(r300->screen->cmask_mutex); + mtx_unlock(&r300->screen->cmask_mutex); } if (r300->screen->cmask_resource == fb->cbufs[0]->texture) { @@ -366,7 +367,8 @@ static void r300_clear(struct pipe_context* pipe, /* Clear using the blitter. */ r300_blitter_begin(r300, R300_CLEAR); util_blitter_clear(r300->blitter, width, height, 1, - buffers, color, depth, stencil); + buffers, color, depth, stencil, + util_framebuffer_get_num_samples(fb) > 1); r300_blitter_end(r300); } else if (r300->zmask_clear.dirty || r300->hiz_clear.dirty || @@ -382,8 +384,8 @@ static void r300_clear(struct pipe_context* pipe, r300_get_num_cs_end_dwords(r300); /* Reserve CS space. */ - if (!r300->rws->cs_check_space(r300->cs, dwords)) { - r300_flush(&r300->context, RADEON_FLUSH_ASYNC, NULL); + if (!r300->rws->cs_check_space(r300->cs, dwords, false)) { + r300_flush(&r300->context, PIPE_FLUSH_ASYNC, NULL); } /* Emit clear packets. */ @@ -567,17 +569,17 @@ static void r300_resource_copy_region(struct pipe_context *pipe, * colorbuffers. */ util_blitter_default_dst_texture(&dst_templ, dst, dst_level, dstz); - util_blitter_default_src_texture(&src_templ, src, src_level); + util_blitter_default_src_texture(r300->blitter, &src_templ, src, src_level); layout = util_format_description(dst_templ.format)->layout; /* Handle non-renderable plain formats. */ if (layout == UTIL_FORMAT_LAYOUT_PLAIN && (!screen->is_format_supported(screen, src_templ.format, src->target, - src->nr_samples, + src->nr_samples, src->nr_storage_samples, PIPE_BIND_SAMPLER_VIEW) || !screen->is_format_supported(screen, dst_templ.format, dst->target, - dst->nr_samples, + dst->nr_samples, dst->nr_storage_samples, PIPE_BIND_RENDER_TARGET))) { switch (util_format_get_blocksize(dst_templ.format)) { case 1: @@ -644,9 +646,11 @@ static void r300_resource_copy_region(struct pipe_context *pipe, /* Fallback for textures. */ if (!screen->is_format_supported(screen, dst_templ.format, dst->target, dst->nr_samples, + dst->nr_storage_samples, PIPE_BIND_RENDER_TARGET) || !screen->is_format_supported(screen, src_templ.format, src->target, src->nr_samples, + src->nr_storage_samples, PIPE_BIND_SAMPLER_VIEW)) { assert(0 && "this shouldn't happen, update r300_is_blit_supported"); util_resource_copy_region(pipe, dst, dst_level, dstx, dsty, dstz,