diff options
author | Tim Rowley <[email protected]> | 2016-04-18 18:10:39 -0500 |
---|---|---|
committer | Tim Rowley <[email protected]> | 2016-04-20 09:57:55 -0500 |
commit | 3bbe8a09eaf95548313db13b4e56dbdd35d2755e (patch) | |
tree | ff6f7df0d233f9cdb0966df3e06c43c520361ee5 /src/gallium | |
parent | 2ac2ecdd6c407e6d731474572193326844571f5e (diff) |
swr: fix resource backed constant buffers
Code was using an incorrect address for the base pointer.
v2: use swr_resource_data() utility function.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=94979
Reviewed-by: Bruce Cherniak <[email protected]>
Tested-by: Markus Wick <[email protected]>
Diffstat (limited to 'src/gallium')
-rw-r--r-- | src/gallium/drivers/swr/swr_resource.h | 2 | ||||
-rw-r--r-- | src/gallium/drivers/swr/swr_state.cpp | 12 |
2 files changed, 7 insertions, 7 deletions
diff --git a/src/gallium/drivers/swr/swr_resource.h b/src/gallium/drivers/swr/swr_resource.h index 59cf0284461..00001e94f79 100644 --- a/src/gallium/drivers/swr/swr_resource.h +++ b/src/gallium/drivers/swr/swr_resource.h @@ -85,7 +85,7 @@ swr_resource_is_texture(const struct pipe_resource *resource) } -static INLINE void * +static INLINE uint8_t * swr_resource_data(struct pipe_resource *resource) { struct swr_resource *swr_r = swr_resource(resource); diff --git a/src/gallium/drivers/swr/swr_state.cpp b/src/gallium/drivers/swr/swr_state.cpp index ded51a9b196..4ce2d12a48d 100644 --- a/src/gallium/drivers/swr/swr_state.cpp +++ b/src/gallium/drivers/swr/swr_state.cpp @@ -936,8 +936,7 @@ swr_update_derived(struct pipe_context *pipe, max_vertex = size / pitch; partial_inbounds = size % pitch; - p_data = (const uint8_t *)swr_resource_data(vb->buffer) - + vb->buffer_offset; + p_data = swr_resource_data(vb->buffer) + vb->buffer_offset; } else { /* Client buffer * client memory is one-time use, re-trigger SWR_NEW_VERTEX to @@ -989,8 +988,7 @@ swr_update_derived(struct pipe_context *pipe, * size is based on buffer->width0 rather than info.count * to prevent having to validate VBO on each draw */ size = ib->buffer->width0; - p_data = - (const uint8_t *)swr_resource_data(ib->buffer) + ib->offset; + p_data = swr_resource_data(ib->buffer) + ib->offset; } else { /* Client buffer * client memory is one-time use, re-trigger SWR_NEW_VERTEX to @@ -1138,7 +1136,8 @@ swr_update_derived(struct pipe_context *pipe, pDC->num_constantsVS[i] = cb->buffer_size; if (cb->buffer) pDC->constantVS[i] = - (const float *)((const uint8_t *)cb->buffer + cb->buffer_offset); + (const float *)(swr_resource_data(cb->buffer) + + cb->buffer_offset); else { /* Need to copy these constants to scratch space */ if (cb->user_buffer && cb->buffer_size) { @@ -1163,7 +1162,8 @@ swr_update_derived(struct pipe_context *pipe, pDC->num_constantsFS[i] = cb->buffer_size; if (cb->buffer) pDC->constantFS[i] = - (const float *)((const uint8_t *)cb->buffer + cb->buffer_offset); + (const float *)(swr_resource_data(cb->buffer) + + cb->buffer_offset); else { /* Need to copy these constants to scratch space */ if (cb->user_buffer && cb->buffer_size) { |