diff --git a/src/intel/tools/aubinator_viewer_decoder.cpp b/src/intel/tools/aubinator_viewer_decoder.cpp index 3844300eb8a..60b76c24fa6 100644 --- a/src/intel/tools/aubinator_viewer_decoder.cpp +++ b/src/intel/tools/aubinator_viewer_decoder.cpp @@ -270,14 +270,21 @@ dump_samplers(struct aub_viewer_decode_ctx *ctx, uint32_t offset, int count) return; } + const unsigned sampler_state_size = strct->dw_length * 4; + + if (count * sampler_state_size >= bo.size) { + ImGui::TextColored(ctx->cfg->missing_color, "sampler state ends after bo ends"); + return; + } + for (int i = 0; i < count; i++) { if (ImGui::TreeNodeEx(state_map, ImGuiTreeNodeFlags_Framed, "sampler state %d", i)) { aub_viewer_print_group(ctx, strct, state_addr, state_map); ImGui::TreePop(); } - state_addr += 16; - state_map += 16; + state_addr += sampler_state_size; + state_map += sampler_state_size; } }