panfrost: Explain and include compute FBD

Squint at it hard enough and you realize it's the beginning of an
SFBD... I guess...

A compute shader with register spilling would be able to confirm this,
but we would expect to see the first field | 1 and an address splattered
later, setting up TLS.

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
This commit is contained in:
Alyssa Rosenzweig 2019-07-31 14:22:37 -07:00
parent 3113be3127
commit 748ccbc808

View file

@ -70,6 +70,23 @@ panfrost_launch_grid(struct pipe_context *pipe,
/* TODO: Stub */
struct midgard_payload_vertex_tiler *payload = &ctx->payloads[PIPE_SHADER_COMPUTE];
/* Compute jobs have a "compute FBD". It's not a real framebuffer
* descriptor - there is no framebuffer - but it takes the place of
* one. As far as I can tell, it's actually the beginning of a
* single-render-target framebuffer descriptor with almost everything
* zeroed out.
*/
struct mali_compute_fbd compute_fbd = {
.unknown1 = {
0, 0x1F, 0, 0, 0, 0, 0, 0
}
};
payload->postfix.framebuffer =
panfrost_upload_transient(ctx, &compute_fbd, sizeof(compute_fbd));
/* Upload the payload */
struct panfrost_transfer transfer = panfrost_allocate_transient(ctx, sizeof(job) + sizeof(*payload));
memcpy(transfer.cpu, &job, sizeof(job));
memcpy(transfer.cpu + sizeof(job), payload, sizeof(*payload));