From 8d3e0f2187d146e7b34abe1f852320ea5e14732e Mon Sep 17 00:00:00 2001 From: Axel Davy Date: Sat, 3 Dec 2016 23:01:56 +0100 Subject: st/nine: Implement nine_context_gen_mipmap To offload mipmap generation as well. Signed-off-by: Axel Davy --- src/gallium/state_trackers/nine/nine_state.c | 15 +++++++++++++++ src/gallium/state_trackers/nine/nine_state.h | 7 +++++++ 2 files changed, 22 insertions(+) (limited to 'src/gallium/state_trackers/nine') diff --git a/src/gallium/state_trackers/nine/nine_state.c b/src/gallium/state_trackers/nine/nine_state.c index 57a5c746642..a3a6e166538 100644 --- a/src/gallium/state_trackers/nine/nine_state.c +++ b/src/gallium/state_trackers/nine/nine_state.c @@ -44,6 +44,7 @@ #include "util/u_math.h" #include "util/u_box.h" #include "util/u_simple_shaders.h" +#include "util/u_gen_mipmap.h" /* CSMT headers */ #include "nine_queue.h" @@ -2692,6 +2693,20 @@ CSMT_ITEM_NO_WAIT(nine_context_clear_render_target, context->pipe->clear_render_target(context->pipe, surf, &rgba, x, y, width, height, false); } +CSMT_ITEM_NO_WAIT(nine_context_gen_mipmap, + ARG_BIND_RES(struct pipe_resource, res), + ARG_VAL(UINT, base_level), + ARG_VAL(UINT, last_level), + ARG_VAL(UINT, first_layer), + ARG_VAL(UINT, last_layer), + ARG_VAL(UINT, filter)) +{ + struct nine_context *context = &device->context; + + util_gen_mipmap(context->pipe, res, res->format, base_level, + last_level, first_layer, last_layer, filter); +} + CSMT_ITEM_NO_WAIT_WITH_COUNTER(nine_context_range_upload, ARG_BIND_RES(struct pipe_resource, res), ARG_VAL(unsigned, offset), diff --git a/src/gallium/state_trackers/nine/nine_state.h b/src/gallium/state_trackers/nine/nine_state.h index c0afbe0c8bf..0fa19a2fddc 100644 --- a/src/gallium/state_trackers/nine/nine_state.h +++ b/src/gallium/state_trackers/nine/nine_state.h @@ -539,6 +539,13 @@ nine_context_clear_render_target(struct NineDevice9 *device, UINT width, UINT height); +void +nine_context_gen_mipmap(struct NineDevice9 *device, + struct pipe_resource *res, + UINT base_level, UINT last_level, + UINT first_layer, UINT last_layer, + UINT filter); + void nine_context_range_upload(struct NineDevice9 *device, unsigned *counter, -- cgit v1.2.3