[Mesa-dev] [PATCH v2] swr: fix resource backed constant buffers
Tim Rowley
timothy.o.rowley at intel.com
Tue Apr 19 17:25:55 UTC 2016
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
---
src/gallium/drivers/swr/swr_resource.h | 2 +-
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 59cf028..00001e9 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 ded51a9..4ce2d12 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) {
--
1.9.1
More information about the mesa-dev
mailing list