summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/gallium/state_trackers/vega/vg_context.c44
-rw-r--r--src/gallium/state_trackers/vega/vg_context.h2
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;
};