radeonsi: add ability to bind images as image buffers
so that we can bind DCC (texture) as an image buffer.
This commit is contained in:
parent
fe3bfd7971
commit
029bfa3d25
|
@ -669,7 +669,8 @@ si_mark_image_range_valid(const struct pipe_image_view *view)
|
||||||
{
|
{
|
||||||
struct si_resource *res = si_resource(view->resource);
|
struct si_resource *res = si_resource(view->resource);
|
||||||
|
|
||||||
assert(res && res->b.b.target == PIPE_BUFFER);
|
if (res->b.b.target != PIPE_BUFFER)
|
||||||
|
return;
|
||||||
|
|
||||||
util_range_add(&res->valid_buffer_range,
|
util_range_add(&res->valid_buffer_range,
|
||||||
view->u.buf.offset,
|
view->u.buf.offset,
|
||||||
|
@ -686,7 +687,8 @@ static void si_set_shader_image_desc(struct si_context *ctx,
|
||||||
|
|
||||||
res = si_resource(view->resource);
|
res = si_resource(view->resource);
|
||||||
|
|
||||||
if (res->b.b.target == PIPE_BUFFER) {
|
if (res->b.b.target == PIPE_BUFFER ||
|
||||||
|
view->shader_access & SI_IMAGE_ACCESS_AS_BUFFER) {
|
||||||
if (view->access & PIPE_IMAGE_ACCESS_WRITE)
|
if (view->access & PIPE_IMAGE_ACCESS_WRITE)
|
||||||
si_mark_image_range_valid(view);
|
si_mark_image_range_valid(view);
|
||||||
|
|
||||||
|
@ -787,7 +789,8 @@ static void si_set_shader_image(struct si_context *ctx,
|
||||||
|
|
||||||
si_set_shader_image_desc(ctx, view, skip_decompress, desc, NULL);
|
si_set_shader_image_desc(ctx, view, skip_decompress, desc, NULL);
|
||||||
|
|
||||||
if (res->b.b.target == PIPE_BUFFER) {
|
if (res->b.b.target == PIPE_BUFFER ||
|
||||||
|
view->shader_access & SI_IMAGE_ACCESS_AS_BUFFER) {
|
||||||
images->needs_color_decompress_mask &= ~(1 << slot);
|
images->needs_color_decompress_mask &= ~(1 << slot);
|
||||||
res->bind_history |= PIPE_BIND_SHADER_IMAGE;
|
res->bind_history |= PIPE_BIND_SHADER_IMAGE;
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -123,6 +123,8 @@ enum si_clear_code
|
||||||
DCC_UNCOMPRESSED = 0xFFFFFFFF,
|
DCC_UNCOMPRESSED = 0xFFFFFFFF,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define SI_IMAGE_ACCESS_AS_BUFFER (1 << 7)
|
||||||
|
|
||||||
/* Debug flags. */
|
/* Debug flags. */
|
||||||
enum {
|
enum {
|
||||||
/* Shader logging options: */
|
/* Shader logging options: */
|
||||||
|
|
Loading…
Reference in New Issue