diff options
Diffstat (limited to 'src/gallium/state_trackers/nine')
-rw-r--r-- | src/gallium/state_trackers/nine/nine_state.c | 15 | ||||
-rw-r--r-- | src/gallium/state_trackers/nine/nine_state.h | 7 |
2 files changed, 22 insertions, 0 deletions
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 @@ -540,6 +540,13 @@ nine_context_clear_render_target(struct NineDevice9 *device, 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, struct pipe_resource *res, |