summaryrefslogtreecommitdiffstats
path: root/src/gallium/auxiliary
diff options
context:
space:
mode:
authorMarek Olšák <[email protected]>2017-02-17 12:55:24 +0100
committerMarek Olšák <[email protected]>2017-02-19 17:16:26 +0100
commitc8ef5123980f9f538c79e626b0092660a2256ae6 (patch)
tree491984bef34198d50c76e704df683aa5e75cea6c /src/gallium/auxiliary
parenta264fee6245856340fab9024e1a428626e966335 (diff)
gallium/u_index_modify: don't add PIPE_TRANSFER_UNSYNCHRONIZED unconditionally
It's OK for r300g (because r300g can't write to buffers via the GPU), but not later hardware. This issue was spotted randomly. Cc: [email protected] Reviewed-by: Nicolai Hähnle <[email protected]>
Diffstat (limited to 'src/gallium/auxiliary')
-rw-r--r--src/gallium/auxiliary/util/u_index_modify.c9
-rw-r--r--src/gallium/auxiliary/util/u_index_modify.h3
2 files changed, 9 insertions, 3 deletions
diff --git a/src/gallium/auxiliary/util/u_index_modify.c b/src/gallium/auxiliary/util/u_index_modify.c
index 5c4fc3c05d1..7b072b29a0f 100644
--- a/src/gallium/auxiliary/util/u_index_modify.c
+++ b/src/gallium/auxiliary/util/u_index_modify.c
@@ -28,6 +28,7 @@
void util_shorten_ubyte_elts_to_userptr(struct pipe_context *context,
struct pipe_index_buffer *ib,
+ unsigned add_transfer_flags,
int index_bias,
unsigned start,
unsigned count,
@@ -43,7 +44,7 @@ void util_shorten_ubyte_elts_to_userptr(struct pipe_context *context,
} else {
in_map = pipe_buffer_map(context, ib->buffer,
PIPE_TRANSFER_READ |
- PIPE_TRANSFER_UNSYNCHRONIZED,
+ add_transfer_flags,
&src_transfer);
}
in_map += start;
@@ -62,6 +63,7 @@ void util_shorten_ubyte_elts_to_userptr(struct pipe_context *context,
void util_rebuild_ushort_elts_to_userptr(struct pipe_context *context,
struct pipe_index_buffer *ib,
+ unsigned add_transfer_flags,
int index_bias,
unsigned start, unsigned count,
void *out)
@@ -76,7 +78,7 @@ void util_rebuild_ushort_elts_to_userptr(struct pipe_context *context,
} else {
in_map = pipe_buffer_map(context, ib->buffer,
PIPE_TRANSFER_READ |
- PIPE_TRANSFER_UNSYNCHRONIZED,
+ add_transfer_flags,
&in_transfer);
}
in_map += start;
@@ -95,6 +97,7 @@ void util_rebuild_ushort_elts_to_userptr(struct pipe_context *context,
void util_rebuild_uint_elts_to_userptr(struct pipe_context *context,
struct pipe_index_buffer *ib,
+ unsigned add_transfer_flags,
int index_bias,
unsigned start, unsigned count,
void *out)
@@ -109,7 +112,7 @@ void util_rebuild_uint_elts_to_userptr(struct pipe_context *context,
} else {
in_map = pipe_buffer_map(context, ib->buffer,
PIPE_TRANSFER_READ |
- PIPE_TRANSFER_UNSYNCHRONIZED,
+ add_transfer_flags,
&in_transfer);
}
in_map += start;
diff --git a/src/gallium/auxiliary/util/u_index_modify.h b/src/gallium/auxiliary/util/u_index_modify.h
index 1d34b12e519..0cfc189ede1 100644
--- a/src/gallium/auxiliary/util/u_index_modify.h
+++ b/src/gallium/auxiliary/util/u_index_modify.h
@@ -29,6 +29,7 @@ struct pipe_index_buffer;
void util_shorten_ubyte_elts_to_userptr(struct pipe_context *context,
struct pipe_index_buffer *ib,
+ unsigned add_transfer_flags,
int index_bias,
unsigned start,
unsigned count,
@@ -36,12 +37,14 @@ void util_shorten_ubyte_elts_to_userptr(struct pipe_context *context,
void util_rebuild_ushort_elts_to_userptr(struct pipe_context *context,
struct pipe_index_buffer *ib,
+ unsigned add_transfer_flags,
int index_bias,
unsigned start, unsigned count,
void *out);
void util_rebuild_uint_elts_to_userptr(struct pipe_context *context,
struct pipe_index_buffer *ib,
+ unsigned add_transfer_flags,
int index_bias,
unsigned start, unsigned count,
void *out);