summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAxel Davy <[email protected]>2018-12-03 21:15:47 +0100
committerAxel Davy <[email protected]>2018-12-23 08:14:50 +0100
commit42d672fa6a766363e5703f119607f7c7975918aa (patch)
tree6773551afd3ff6bcdd471298c35eff21bc621eba
parentf91f748fabd7fec8f571124df23296c07102a983 (diff)
st/nine: Bind src not dst in nine_context_box_upload
nine_context_box_upload uploads a ram buffer (from src) to a pipe_resource (dst). We already have a refcount on the pipe_resource, what needs to be protected from release is the ram buffer, thus a reference to src. Signed-off-by: Axel Davy <[email protected]> Tested-by: Dieter Nützel <[email protected]> Cc: [email protected]
-rw-r--r--src/gallium/state_trackers/nine/nine_state.c6
-rw-r--r--src/gallium/state_trackers/nine/nine_state.h2
-rw-r--r--src/gallium/state_trackers/nine/surface9.c2
-rw-r--r--src/gallium/state_trackers/nine/volume9.c2
4 files changed, 6 insertions, 6 deletions
diff --git a/src/gallium/state_trackers/nine/nine_state.c b/src/gallium/state_trackers/nine/nine_state.c
index 273be88e2b8..4872e24f439 100644
--- a/src/gallium/state_trackers/nine/nine_state.c
+++ b/src/gallium/state_trackers/nine/nine_state.c
@@ -2434,7 +2434,7 @@ CSMT_ITEM_NO_WAIT_WITH_COUNTER(nine_context_range_upload,
}
CSMT_ITEM_NO_WAIT_WITH_COUNTER(nine_context_box_upload,
- ARG_BIND_REF(struct NineUnknown, dst),
+ ARG_BIND_REF(struct NineUnknown, src_ref),
ARG_BIND_RES(struct pipe_resource, res),
ARG_VAL(unsigned, level),
ARG_COPY_REF(struct pipe_box, dst_box),
@@ -2449,8 +2449,8 @@ CSMT_ITEM_NO_WAIT_WITH_COUNTER(nine_context_box_upload,
struct pipe_transfer *transfer = NULL;
uint8_t *map;
- /* We just bind dst for the bind count */
- (void)dst;
+ /* Binding src_ref avoids release before upload */
+ (void)src_ref;
map = pipe->transfer_map(pipe,
res,
diff --git a/src/gallium/state_trackers/nine/nine_state.h b/src/gallium/state_trackers/nine/nine_state.h
index 51e5e326527..8de9f84a256 100644
--- a/src/gallium/state_trackers/nine/nine_state.h
+++ b/src/gallium/state_trackers/nine/nine_state.h
@@ -568,7 +568,7 @@ nine_context_range_upload(struct NineDevice9 *device,
void
nine_context_box_upload(struct NineDevice9 *device,
unsigned *counter,
- struct NineUnknown *dst,
+ struct NineUnknown *src_ref,
struct pipe_resource *res,
unsigned level,
const struct pipe_box *dst_box,
diff --git a/src/gallium/state_trackers/nine/surface9.c b/src/gallium/state_trackers/nine/surface9.c
index 5fd662fa049..10518219a0a 100644
--- a/src/gallium/state_trackers/nine/surface9.c
+++ b/src/gallium/state_trackers/nine/surface9.c
@@ -660,7 +660,7 @@ NineSurface9_CopyMemToDefault( struct NineSurface9 *This,
nine_context_box_upload(This->base.base.device,
&From->pending_uploads_counter,
- (struct NineUnknown *)This,
+ (struct NineUnknown *)From,
r_dst,
This->level,
&dst_box,
diff --git a/src/gallium/state_trackers/nine/volume9.c b/src/gallium/state_trackers/nine/volume9.c
index ec811aeba13..840f01dae10 100644
--- a/src/gallium/state_trackers/nine/volume9.c
+++ b/src/gallium/state_trackers/nine/volume9.c
@@ -449,7 +449,7 @@ NineVolume9_CopyMemToDefault( struct NineVolume9 *This,
nine_context_box_upload(This->base.device,
&From->pending_uploads_counter,
- (struct NineUnknown *)This,
+ (struct NineUnknown *)From,
r_dst,
This->level,
&dst_box,