diff options
-rw-r--r-- | src/gallium/state_trackers/vega/vg_context.c | 44 | ||||
-rw-r--r-- | src/gallium/state_trackers/vega/vg_context.h | 2 |
2 files changed, 26 insertions, 20 deletions
diff --git a/src/gallium/state_trackers/vega/vg_context.c b/src/gallium/state_trackers/vega/vg_context.c index c6361881683..46c7d9649fd 100644 --- a/src/gallium/state_trackers/vega/vg_context.c +++ b/src/gallium/state_trackers/vega/vg_context.c @@ -41,7 +41,6 @@ #include "cso_cache/cso_context.h" #include "util/u_memory.h" -#include "util/u_blit.h" #include "util/u_sampler.h" #include "util/u_surface.h" #include "util/u_format.h" @@ -138,8 +137,6 @@ struct vg_context * vg_create_context(struct pipe_context *pipe, ctx->sc = shaders_cache_create(ctx); ctx->shader = shader_create(ctx); - ctx->blit = util_create_blit(ctx->pipe, ctx->cso_context); - return ctx; } @@ -147,7 +144,6 @@ void vg_destroy_context(struct vg_context *ctx) { struct pipe_resource **cbuf = &ctx->mask.cbuf; - util_destroy_blit(ctx->blit); renderer_destroy(ctx->renderer); shaders_cache_destroy(ctx->sc); shader_destroy(ctx->shader); @@ -443,23 +439,35 @@ static void vg_prepare_blend_texture(struct vg_context *ctx, struct pipe_sampler_view *src) { struct st_framebuffer *stfb = ctx->draw_buffer; - struct pipe_surface *surf; - struct pipe_surface surf_tmpl; + struct pipe_context *pipe = ctx->pipe; + struct pipe_blit_info info; vg_context_update_blend_texture_view(ctx, stfb->width, stfb->height); - u_surface_default_template(&surf_tmpl, stfb->blend_texture_view->texture); - surf = ctx->pipe->create_surface(ctx->pipe, - stfb->blend_texture_view->texture, - &surf_tmpl); - if (surf) { - util_blit_pixels_tex(ctx->blit, - src, 0, 0, stfb->width, stfb->height, - surf, 0, 0, stfb->width, stfb->height, - 0.0, PIPE_TEX_MIPFILTER_NEAREST); - - pipe_surface_reference(&surf, NULL); - } + memset(&info, 0, sizeof info); + info.dst.resource = stfb->blend_texture_view->texture; + info.dst.level = 0; + info.dst.box.x = 0; + info.dst.box.y = 0; + info.dst.box.z = 0; + info.dst.box.width = stfb->width; + info.dst.box.height = stfb->height; + info.dst.box.depth = 1; + info.dst.format = stfb->blend_texture_view->format; + info.src.resource = src->texture; + info.src.level = src->u.tex.first_level; + info.src.box.x = 0; + info.src.box.y = 0; + info.src.box.z = src->u.tex.first_layer; + info.src.box.width = stfb->width; + info.src.box.height = stfb->height; + info.src.box.depth = 1; + info.src.format = src->format; + info.mask = PIPE_MASK_RGBA; + info.filter = PIPE_TEX_MIPFILTER_NEAREST; + info.scissor_enable = 0; + + pipe->blit(pipe, &info); } struct pipe_sampler_view *vg_prepare_blend_surface(struct vg_context *ctx) diff --git a/src/gallium/state_trackers/vega/vg_context.h b/src/gallium/state_trackers/vega/vg_context.h index d61c7cfeff1..5a2a322743d 100644 --- a/src/gallium/state_trackers/vega/vg_context.h +++ b/src/gallium/state_trackers/vega/vg_context.h @@ -129,8 +129,6 @@ struct vg_context struct pipe_sampler_state blend_sampler; struct vg_paint *default_paint; - struct blit_state *blit; - int32_t draw_stamp; }; |