Module: Mesa
Branch: main
Commit: 3e36be7afe1a4ba33d119802d7320d5dfee38db8
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=3e36be7afe1a4ba33d119802d7320d5dfee38db8

Author: Jesse Natalie <jenat...@microsoft.com>
Date:   Tue Nov  7 10:15:39 2023 -0800

d3d12: Binding buffers as SSBO/storage image needs to add buffer ranges

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26104>

---

 src/gallium/drivers/d3d12/d3d12_context.cpp | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/src/gallium/drivers/d3d12/d3d12_context.cpp 
b/src/gallium/drivers/d3d12/d3d12_context.cpp
index 3d632b346b0..4e6cd24fc2b 100644
--- a/src/gallium/drivers/d3d12/d3d12_context.cpp
+++ b/src/gallium/drivers/d3d12/d3d12_context.cpp
@@ -1694,6 +1694,8 @@ d3d12_set_shader_buffers(struct pipe_context *pctx,
          pipe_resource_reference(&slot->buffer, buffers[i].buffer);
          slot->buffer_offset = buffers[i].buffer_offset;
          slot->buffer_size = buffers[i].buffer_size;
+         util_range_add(buffers[i].buffer, 
&d3d12_resource(buffers[i].buffer)->valid_buffer_range,
+                        buffers[i].buffer_offset, buffers[i].buffer_size);
          d3d12_increment_ssbo_bind_count(ctx, shader, 
d3d12_resource(buffers[i].buffer));
       } else
          memset(slot, 0, sizeof(*slot));
@@ -1798,6 +1800,10 @@ d3d12_set_shader_images(struct pipe_context *pctx,
             ctx->image_view_emulation_formats[shader][i] =
                get_shader_image_emulation_format(images[i].resource->format);
          }
+         if (images[i].resource->target == PIPE_BUFFER) {
+            util_range_add(images[i].resource, 
&d3d12_resource(images[i].resource)->valid_buffer_range,
+                           images[i].u.buf.offset, images[i].u.buf.size);
+         }
       } else
          memset(slot, 0, sizeof(*slot));
    }

Reply via email to