As far as I can tell, the patch series (1->3) looks good. I was wondering how the copyright header will be handled. Is that to be added manually later on?
Thanks, Armin -----Original Message----- From: Mika Kuoppala [mailto:mika.kuopp...@linux.intel.com] Sent: Wednesday, September 24, 2014 5:51 AM To: intel-gfx@lists.freedesktop.org Cc: Reese, Armin C; m...@iki.fi Subject: [PATCH 1/3] tools/null_state_gen: add macro to emit commands with null state In null/golden context there are multiple state commands where the actual state is always zero. For more compact batch representation add a macro which just emits command and the rest of the state as zero. Signed-off-by: Mika Kuoppala <mika.kuopp...@intel.com> --- tools/null_state_gen/intel_batchbuffer.c | 12 ++++++++++++ tools/null_state_gen/intel_batchbuffer.h | 6 +++++- tools/null_state_gen/intel_null_state_gen.c | 12 +++++++++++- 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/tools/null_state_gen/intel_batchbuffer.c b/tools/null_state_gen/intel_batchbuffer.c index 2a0b340..6e86aef 100644 --- a/tools/null_state_gen/intel_batchbuffer.c +++ b/tools/null_state_gen/intel_batchbuffer.c @@ -274,3 +274,15 @@ const char *intel_batch_type_as_str(const struct bb_item *item) return "UNKNOWN"; } + +void intel_batch_cmd_emit_null(struct intel_batchbuffer *batch, const +int cmd, const int len, const char *str) { + int i; + + assert(len > 1); + + bb_area_emit(batch->cmds, (cmd | (len - 2)), CMD, str); + + for (i = 1; i < len; i++) + OUT_BATCH(0); +} diff --git a/tools/null_state_gen/intel_batchbuffer.h b/tools/null_state_gen/intel_batchbuffer.h index e44c5c9..b4eed25 100644 --- a/tools/null_state_gen/intel_batchbuffer.h +++ b/tools/null_state_gen/intel_batchbuffer.h @@ -34,7 +34,7 @@ #include <stdint.h> #define MAX_RELOCS 64 -#define MAX_ITEMS 4096 +#define MAX_ITEMS 1024 #define MAX_STRLEN 256 #define ALIGN(x, y) (((x) + (y)-1) & ~((y)-1)) @@ -69,6 +69,7 @@ struct intel_batchbuffer { struct intel_batchbuffer *intel_batchbuffer_create(void); +#define OUT_CMD(cmd, len) intel_batch_cmd_emit_null(batch, cmd, len, +#cmd " " #len) #define OUT_BATCH(d) bb_area_emit(batch->cmds, d, CMD, #d) #define OUT_BATCH_STATE_OFFSET(d) bb_area_emit(batch->cmds, d, STATE_OFFSET, #d) #define OUT_RELOC(batch, read_domain, write_domain, d) bb_area_emit(batch->cmds, d, RELOC, #d) @@ -81,6 +82,7 @@ uint32_t intel_batch_state_copy(struct intel_batchbuffer *batch, void *d, unsign const char *name); uint32_t intel_batch_state_alloc(struct intel_batchbuffer *batch, unsigned bytes, unsigned align, const char *name); +uint32_t intel_batch_state_offset(struct intel_batchbuffer *batch, +unsigned align); unsigned intel_batch_num_cmds(struct intel_batchbuffer *batch); @@ -94,4 +96,6 @@ const char *intel_batch_type_as_str(const struct bb_item *item); void bb_area_emit(struct bb_area *a, uint32_t dword, item_type type, const char *str); void bb_area_emit_offset(struct bb_area *a, unsigned i, uint32_t dword, item_type type, const char *str); +void intel_batch_cmd_emit_null(struct intel_batchbuffer *batch, const +int cmd, const int len, const char *str); + #endif diff --git a/tools/null_state_gen/intel_null_state_gen.c b/tools/null_state_gen/intel_null_state_gen.c index b337706..a7eb22b 100644 --- a/tools/null_state_gen/intel_null_state_gen.c +++ b/tools/null_state_gen/intel_null_state_gen.c @@ -23,6 +23,9 @@ static void print_usage(char *s) static int print_state(int gen, struct intel_batchbuffer *batch) { int i; + unsigned long cmds; + + fprintf(stderr, "Generating for gen%d\n", gen); printf("#include \"intel_renderstate.h\"\n\n"); @@ -43,8 +46,10 @@ static int print_state(int gen, struct intel_batchbuffer *batch) printf("\t /* 0x%08x %s '%s' */", i * 4, intel_batch_type_as_str(cmd), cmd->str); - if (i * 4 == batch->cmds_end_offset) + if (i * 4 == batch->cmds_end_offset) { + cmds = i + 1; printf("\t /* cmds end */"); + } if (intel_batch_is_reloc(batch, i)) printf("\t /* reloc */"); @@ -60,6 +65,11 @@ static int print_state(int gen, struct intel_batchbuffer *batch) printf("};\n\nRO_RENDERSTATE(%d);\n", gen); + fprintf(stderr, "Commands %lu (%lu bytes)\n", cmds, cmds * 4); + fprintf(stderr, "State %lu (%lu bytes)\n", batch->state->num_items, batch->state->num_items * 4); + fprintf(stderr, "Total %lu (%lu bytes)\n", batch->cmds->num_items, batch->cmds->num_items * 4); + fprintf(stderr, "\n"); + return 0; } -- 1.9.1 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx