diff options
author | Marek Olšák <[email protected]> | 2017-04-02 15:24:19 +0200 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2017-05-10 19:00:16 +0200 |
commit | 22f6624ed318e8131681ec1f2e7b3a59449df412 (patch) | |
tree | ba8d1d3e12d2a75fdf82eea5ac409974e76153ad /src/gallium/auxiliary | |
parent | c24c3b94ed29ecd99b1101c74c6c4606f9b5580e (diff) |
gallium: separate indirect stuff from pipe_draw_info - 80 -> 56 bytes
For faster initialization of non-indirect draws.
Diffstat (limited to 'src/gallium/auxiliary')
-rw-r--r-- | src/gallium/auxiliary/util/u_draw.c | 4 | ||||
-rw-r--r-- | src/gallium/auxiliary/util/u_dump_state.c | 15 | ||||
-rw-r--r-- | src/gallium/auxiliary/util/u_vbuf.c | 8 |
3 files changed, 16 insertions, 11 deletions
diff --git a/src/gallium/auxiliary/util/u_draw.c b/src/gallium/auxiliary/util/u_draw.c index ca786489786..e7abbfc422b 100644 --- a/src/gallium/auxiliary/util/u_draw.c +++ b/src/gallium/auxiliary/util/u_draw.c @@ -145,8 +145,8 @@ util_draw_indirect(struct pipe_context *pipe, params = (uint32_t *) pipe_buffer_map_range(pipe, - info_in->indirect, - info_in->indirect_offset, + info_in->indirect->buffer, + info_in->indirect->offset, num_params * sizeof(uint32_t), PIPE_TRANSFER_READ, &transfer); diff --git a/src/gallium/auxiliary/util/u_dump_state.c b/src/gallium/auxiliary/util/u_dump_state.c index b9e6b522589..5e42bdd3028 100644 --- a/src/gallium/auxiliary/util/u_dump_state.c +++ b/src/gallium/auxiliary/util/u_dump_state.c @@ -941,11 +941,16 @@ util_dump_draw_info(FILE *stream, const struct pipe_draw_info *state) util_dump_member(stream, ptr, state, count_from_stream_output); - util_dump_member(stream, ptr, state, indirect); - util_dump_member(stream, uint, state, indirect_offset); - util_dump_member(stream, uint, state, indirect_stride); - util_dump_member(stream, uint, state, indirect_count); - util_dump_member(stream, uint, state, indirect_params_offset); + if (!state->indirect) { + util_dump_member(stream, ptr, state, indirect); + } else { + util_dump_member(stream, uint, state, indirect->offset); + util_dump_member(stream, uint, state, indirect->stride); + util_dump_member(stream, uint, state, indirect->draw_count); + util_dump_member(stream, uint, state, indirect->indirect_draw_count_offset); + util_dump_member(stream, ptr, state, indirect->buffer); + util_dump_member(stream, ptr, state, indirect->indirect_draw_count); + } util_dump_struct_end(stream); } diff --git a/src/gallium/auxiliary/util/u_vbuf.c b/src/gallium/auxiliary/util/u_vbuf.c index 62b88acca58..9d6d5297e6a 100644 --- a/src/gallium/auxiliary/util/u_vbuf.c +++ b/src/gallium/auxiliary/util/u_vbuf.c @@ -1168,15 +1168,15 @@ void u_vbuf_draw_vbo(struct u_vbuf *mgr, const struct pipe_draw_info *info) int *data; if (new_info.indexed) { - data = pipe_buffer_map_range(pipe, new_info.indirect, - new_info.indirect_offset, 20, + data = pipe_buffer_map_range(pipe, new_info.indirect->buffer, + new_info.indirect->offset, 20, PIPE_TRANSFER_READ, &transfer); new_info.index_bias = data[3]; new_info.start_instance = data[4]; } else { - data = pipe_buffer_map_range(pipe, new_info.indirect, - new_info.indirect_offset, 16, + data = pipe_buffer_map_range(pipe, new_info.indirect->buffer, + new_info.indirect->offset, 16, PIPE_TRANSFER_READ, &transfer); new_info.start_instance = data[3]; } |