diff options
author | Axel Davy <[email protected]> | 2016-12-03 23:01:56 +0100 |
---|---|---|
committer | Axel Davy <[email protected]> | 2016-12-20 23:47:08 +0100 |
commit | 8d3e0f2187d146e7b34abe1f852320ea5e14732e (patch) | |
tree | 64f844061e3089f2a6fa6cabf2ddd2ed3cb84cdd | |
parent | 16b6fb65ae03902f731b863802c094c4d854def1 (diff) |
st/nine: Implement nine_context_gen_mipmap
To offload mipmap generation as well.
Signed-off-by: Axel Davy <[email protected]>
-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, |