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

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26104>
This commit is contained in:
Jesse Natalie
2023-11-07 10:15:39 -08:00
committed by Marge Bot
parent a3899c4530
commit 3e36be7afe

View File

@@ -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));
}