Mesa (master): ilo: decode INTERFACE_DESCRIPTOR_DATA
Chia-I Wu
olv at kemper.freedesktop.org
Fri Nov 7 15:37:19 UTC 2014
Module: Mesa
Branch: master
Commit: d3c5976a3b317cc347fe7c8ed5255ed687cf5af5
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=d3c5976a3b317cc347fe7c8ed5255ed687cf5af5
Author: Chia-I Wu <olvaffe at gmail.com>
Date: Fri Nov 7 15:45:25 2014 +0800
ilo: decode INTERFACE_DESCRIPTOR_DATA
This is at least much better than decoding as blobs.
Signed-off-by: Chia-I Wu <olvaffe at gmail.com>
---
src/gallium/drivers/ilo/ilo_builder.h | 1 +
src/gallium/drivers/ilo/ilo_builder_decode.c | 40 ++++++++++++++++++++++++++
src/gallium/drivers/ilo/ilo_builder_media.h | 2 +-
3 files changed, 42 insertions(+), 1 deletion(-)
diff --git a/src/gallium/drivers/ilo/ilo_builder.h b/src/gallium/drivers/ilo/ilo_builder.h
index 102f11a..c11dba2 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 3a9ae24..05afe12 100644
--- a/src/gallium/drivers/ilo/ilo_builder_decode.c
+++ b/src/gallium/drivers/ilo/ilo_builder_decode.c
@@ -393,6 +393,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,
const struct ilo_builder_item *item)
@@ -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 bae329b..f5d634f 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];
More information about the mesa-commit
mailing list