diff options
author | Marek Olšák <[email protected]> | 2017-02-17 12:55:24 +0100 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2017-02-19 17:16:26 +0100 |
commit | c8ef5123980f9f538c79e626b0092660a2256ae6 (patch) | |
tree | 491984bef34198d50c76e704df683aa5e75cea6c /src/gallium/auxiliary/util | |
parent | a264fee6245856340fab9024e1a428626e966335 (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/util')
-rw-r--r-- | src/gallium/auxiliary/util/u_index_modify.c | 9 | ||||
-rw-r--r-- | src/gallium/auxiliary/util/u_index_modify.h | 3 |
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); |