mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-04 13:30:11 +01:00
intel/decoders: fix end of batch limit
Pointer arithmetic...
v2: s/4/sizeof(uint32_t)/ (Eric)
v3: Give bytes to print_batch() in error_decode (Lionel)
Make clear what values we're dealing with in error_decode (Lionel)
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com> (v2)
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
parent
55e7de7b19
commit
a8594887bc
3 changed files with 10 additions and 9 deletions
|
|
@ -818,7 +818,7 @@ gen_print_batch(struct gen_batch_decode_ctx *ctx,
|
|||
const uint32_t *batch, uint32_t batch_size,
|
||||
uint64_t batch_addr)
|
||||
{
|
||||
const uint32_t *p, *end = batch + batch_size;
|
||||
const uint32_t *p, *end = batch + batch_size / sizeof(uint32_t);
|
||||
int length;
|
||||
struct gen_group *inst;
|
||||
|
||||
|
|
|
|||
|
|
@ -292,7 +292,7 @@ struct section {
|
|||
char *ring_name;
|
||||
const char *buffer_name;
|
||||
uint32_t *data;
|
||||
int count;
|
||||
int dword_count;
|
||||
};
|
||||
|
||||
#define MAX_SECTIONS 256
|
||||
|
|
@ -389,11 +389,11 @@ get_gen_batch_bo(void *user_data, uint64_t address)
|
|||
{
|
||||
for (int s = 0; s < num_sections; s++) {
|
||||
if (sections[s].gtt_offset <= address &&
|
||||
address < sections[s].gtt_offset + sections[s].count * 4) {
|
||||
address < sections[s].gtt_offset + sections[s].dword_count * 4) {
|
||||
return (struct gen_batch_decode_bo) {
|
||||
.addr = sections[s].gtt_offset,
|
||||
.map = sections[s].data,
|
||||
.size = sections[s].count * 4,
|
||||
.size = sections[s].dword_count * 4,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
@ -424,14 +424,14 @@ read_data_file(FILE *file)
|
|||
|
||||
if (line[0] == ':' || line[0] == '~') {
|
||||
uint32_t *data = NULL;
|
||||
int count = ascii85_decode(line+1, &data, line[0] == ':');
|
||||
if (count == 0) {
|
||||
int dword_count = ascii85_decode(line+1, &data, line[0] == ':');
|
||||
if (dword_count == 0) {
|
||||
fprintf(stderr, "ASCII85 decode failed.\n");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
assert(num_sections < MAX_SECTIONS);
|
||||
sections[num_sections].data = data;
|
||||
sections[num_sections].count = count;
|
||||
sections[num_sections].dword_count = dword_count;
|
||||
num_sections++;
|
||||
continue;
|
||||
}
|
||||
|
|
@ -610,7 +610,8 @@ read_data_file(FILE *file)
|
|||
strcmp(sections[s].buffer_name, "batch buffer") == 0 ||
|
||||
strcmp(sections[s].buffer_name, "ring buffer") == 0 ||
|
||||
strcmp(sections[s].buffer_name, "HW Context") == 0) {
|
||||
gen_print_batch(&batch_ctx, sections[s].data, sections[s].count,
|
||||
gen_print_batch(&batch_ctx, sections[s].data,
|
||||
sections[s].dword_count * 4,
|
||||
sections[s].gtt_offset);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -888,7 +888,7 @@ aub_viewer_render_batch(struct aub_viewer_decode_ctx *ctx,
|
|||
uint64_t batch_addr)
|
||||
{
|
||||
struct gen_group *inst;
|
||||
const uint32_t *p, *batch = (const uint32_t *) _batch, *end = batch + batch_size;
|
||||
const uint32_t *p, *batch = (const uint32_t *) _batch, *end = batch + batch_size / sizeof(uint32_t);
|
||||
int length;
|
||||
|
||||
for (p = batch; p < end; p += length) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue