[Mesa-dev] [PATCH v2] swr: fix resource backed constant buffers

Cherniak, Bruce bruce.cherniak at intel.com
Tue Apr 19 19:52:39 UTC 2016


Reviewed-by: Bruce Cherniak <bruce.cherniak at intel.com>




On 4/19/16, 12:25 PM, "mesa-dev on behalf of Tim Rowley" <mesa-dev-bounces at lists.freedesktop.org on behalf of timothy.o.rowley at intel.com> wrote:

>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
>
>_______________________________________________
>mesa-dev mailing list
>mesa-dev at lists.freedesktop.org
>https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list