From: Chia-I Wu Date: Fri, 7 Nov 2014 07:45:25 +0000 (+0800) Subject: ilo: decode INTERFACE_DESCRIPTOR_DATA X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=d3c5976a3b317cc347fe7c8ed5255ed687cf5af5;p=mesa.git ilo: decode INTERFACE_DESCRIPTOR_DATA This is at least much better than decoding as blobs. Signed-off-by: Chia-I Wu --- diff --git a/src/gallium/drivers/ilo/ilo_builder.h b/src/gallium/drivers/ilo/ilo_builder.h index 102f11a1853..c11dba2d616 100644 --- a/src/gallium/drivers/ilo/ilo_builder.h +++ b/src/gallium/drivers/ilo/ilo_builder.h @@ -49,6 +49,7 @@ enum ilo_builder_item_type { ILO_BUILDER_ITEM_DEPTH_STENCIL, ILO_BUILDER_ITEM_BLEND, ILO_BUILDER_ITEM_SAMPLER, + ILO_BUILDER_ITEM_INTERFACE_DESCRIPTOR, /* for surface buffer */ ILO_BUILDER_ITEM_SURFACE, diff --git a/src/gallium/drivers/ilo/ilo_builder_decode.c b/src/gallium/drivers/ilo/ilo_builder_decode.c index 3a9ae248d1d..05afe128627 100644 --- a/src/gallium/drivers/ilo/ilo_builder_decode.c +++ b/src/gallium/drivers/ilo/ilo_builder_decode.c @@ -392,6 +392,45 @@ writer_decode_sampler(const struct ilo_builder *builder, } } +static void +writer_decode_interface_descriptor(const struct ilo_builder *builder, + enum ilo_builder_writer_type which, + const struct ilo_builder_item *item) +{ + const unsigned state_size = sizeof(uint32_t) * 8; + const unsigned count = item->size / state_size; + unsigned offset = item->offset; + unsigned i; + + for (i = 0; i < count; i++) { + writer_dw(builder, which, offset, 0, "IDRT[%d]", i); + ilo_printf("kernel\n"); + + writer_dw(builder, which, offset, 1, "IDRT[%d]", i); + ilo_printf("spf, fp mode\n"); + + writer_dw(builder, which, offset, 2, "IDRT[%d]", i); + ilo_printf("sampler\n"); + + writer_dw(builder, which, offset, 3, "IDRT[%d]", i); + ilo_printf("binding table\n"); + + writer_dw(builder, which, offset, 4, "IDRT[%d]", i); + ilo_printf("curbe read len\n"); + + writer_dw(builder, which, offset, 5, "IDRT[%d]", i); + ilo_printf("rounding mode, slm size\n"); + + writer_dw(builder, which, offset, 6, "IDRT[%d]", i); + ilo_printf("cross-thread curbe read len\n"); + + writer_dw(builder, which, offset, 7, "IDRT[%d]", i); + ilo_printf("mbz\n"); + + offset += state_size; + } +} + static void writer_decode_surface_gen7(const struct ilo_builder *builder, enum ilo_builder_writer_type which, @@ -526,6 +565,7 @@ static const struct { [ILO_BUILDER_ITEM_DEPTH_STENCIL] = { writer_decode_depth_stencil }, [ILO_BUILDER_ITEM_BLEND] = { writer_decode_blend }, [ILO_BUILDER_ITEM_SAMPLER] = { writer_decode_sampler }, + [ILO_BUILDER_ITEM_INTERFACE_DESCRIPTOR] = { writer_decode_interface_descriptor }, [ILO_BUILDER_ITEM_SURFACE] = { writer_decode_surface }, [ILO_BUILDER_ITEM_BINDING_TABLE] = { writer_decode_binding_table }, [ILO_BUILDER_ITEM_KERNEL] = { writer_decode_kernel }, diff --git a/src/gallium/drivers/ilo/ilo_builder_media.h b/src/gallium/drivers/ilo/ilo_builder_media.h index bae329b7e7f..f5d634f28e1 100644 --- a/src/gallium/drivers/ilo/ilo_builder_media.h +++ b/src/gallium/drivers/ilo/ilo_builder_media.h @@ -217,7 +217,7 @@ gen6_INTERFACE_DESCRIPTOR_DATA(struct ilo_builder *builder, ILO_DEV_ASSERT(builder->dev, 7, 7.5); state_offset = ilo_builder_dynamic_pointer(builder, - ILO_BUILDER_ITEM_BLOB, state_align, state_len, &dw); + ILO_BUILDER_ITEM_INTERFACE_DESCRIPTOR, state_align, state_len, &dw); for (i = 0; i < idrt_count; i++) { const struct gen6_idrt_data *idrt = &data[i];