mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-04 04:50:11 +01:00
pan/decode: Validate AFBC fields are zero when AFBC is disabled
There is no "chunknown" structure; that part of the union is an artefact from falsely believing vertex/tiler MFBDs could have render targets attached (they can't). These are just plain old AFBC fields, and if there is no AFBC, it's error to set these field. Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
This commit is contained in:
parent
4aeb694462
commit
c9b6233558
2 changed files with 19 additions and 32 deletions
|
|
@ -1522,27 +1522,21 @@ struct bifrost_render_target {
|
|||
|
||||
u64 zero1;
|
||||
|
||||
union {
|
||||
struct {
|
||||
/* Stuff related to ARM Framebuffer Compression. When AFBC is enabled,
|
||||
* there is an extra metadata buffer that contains 16 bytes per tile.
|
||||
* The framebuffer needs to be the same size as before, since we don't
|
||||
* know ahead of time how much space it will take up. The
|
||||
* framebuffer_stride is set to 0, since the data isn't stored linearly
|
||||
* anymore.
|
||||
*/
|
||||
struct {
|
||||
/* Stuff related to ARM Framebuffer Compression. When AFBC is enabled,
|
||||
* there is an extra metadata buffer that contains 16 bytes per tile.
|
||||
* The framebuffer needs to be the same size as before, since we don't
|
||||
* know ahead of time how much space it will take up. The
|
||||
* framebuffer_stride is set to 0, since the data isn't stored linearly
|
||||
* anymore.
|
||||
*
|
||||
* When AFBC is disabled, these fields are zero.
|
||||
*/
|
||||
|
||||
mali_ptr metadata;
|
||||
u32 stride; // stride in units of tiles
|
||||
u32 unk; // = 0x20000
|
||||
} afbc;
|
||||
|
||||
struct {
|
||||
/* Heck if I know */
|
||||
u64 unk;
|
||||
mali_ptr pointer;
|
||||
} chunknown;
|
||||
};
|
||||
mali_ptr metadata;
|
||||
u32 stride; // stride in units of tiles
|
||||
u32 unk; // = 0x20000
|
||||
} afbc;
|
||||
|
||||
mali_ptr framebuffer;
|
||||
|
||||
|
|
|
|||
|
|
@ -818,18 +818,11 @@ pandecode_render_target(uint64_t gpu_va, unsigned job_no, const struct bifrost_f
|
|||
|
||||
pandecode_indent--;
|
||||
pandecode_log("},\n");
|
||||
} else {
|
||||
pandecode_log(".chunknown = {\n");
|
||||
pandecode_indent++;
|
||||
|
||||
pandecode_prop("unk = 0x%" PRIx64, rt->chunknown.unk);
|
||||
|
||||
char *a = pointer_as_memory_reference(rt->chunknown.pointer);
|
||||
pandecode_prop("pointer = %s", a);
|
||||
free(a);
|
||||
|
||||
pandecode_indent--;
|
||||
pandecode_log("},\n");
|
||||
} else if (rt->afbc.metadata || rt->afbc.stride || rt->afbc.unk) {
|
||||
pandecode_msg("XXX: AFBC disabled but AFBC field set (0x%lX, 0x%x, 0x%x)\n",
|
||||
rt->afbc.metadata,
|
||||
rt->afbc.stride,
|
||||
rt->afbc.unk);
|
||||
}
|
||||
|
||||
MEMORY_PROP(rt, framebuffer);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue