aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAxel Davy <[email protected]>2016-12-03 23:01:56 +0100
committerAxel Davy <[email protected]>2016-12-20 23:47:08 +0100
commit8d3e0f2187d146e7b34abe1f852320ea5e14732e (patch)
tree64f844061e3089f2a6fa6cabf2ddd2ed3cb84cdd
parent16b6fb65ae03902f731b863802c094c4d854def1 (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.c15
-rw-r--r--src/gallium/state_trackers/nine/nine_state.h7
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,