panfrost: Remove mali_vertex_tiler_postfix
authorAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Wed, 26 Aug 2020 21:10:37 +0000 (17:10 -0400)
committerMarge Bot <eric+marge@anholt.net>
Fri, 28 Aug 2020 14:53:53 +0000 (14:53 +0000)
Now XMLified everywhere.

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6476>

src/panfrost/bifrost/test/bi_submit.c
src/panfrost/include/panfrost-job.h

index 73c971df4dd281dc93960b9f0b5adcee811e3710..1b7f65d2c9d331046a5d9fe84788852c42c54e96 100644 (file)
@@ -186,27 +186,31 @@ bit_vertex(struct panfrost_device *dev, panfrost_program prog,
                                 .opaque = { (5) << 26 }
                         }
                 },
-                .postfix = {
-                        .gl_enables = 0x2,
-                        .shared_memory = shmem->gpu,
-                        .shader = shader_desc->gpu,
-                        .uniforms = ubo->gpu + 1024,
-                        .uniform_buffers = ubo->gpu,
-                        .attribute_meta = attr->gpu,
-                        .attributes = attr->gpu + 256,
-                        .varying_meta = var->gpu,
-                        .varyings = var->gpu + 256,
-                },
         };
 
+        struct mali_draw_packed draw;
         struct mali_invocation_packed invocation;
 
+        pan_pack(&draw, DRAW, cfg) {
+                cfg.unknown_1 = 0x2;
+                cfg.shared = shmem->gpu;
+                cfg.state = shader_desc->gpu;
+                cfg.push_uniforms = ubo->gpu + 1024;
+                cfg.uniform_buffers = ubo->gpu;
+                cfg.attributes = attr->gpu;
+                cfg.attribute_buffers = attr->gpu + 256;
+                cfg.varyings = var->gpu;
+                cfg.varying_buffers = var->gpu + 256;
+        }
+
         panfrost_pack_work_groups_compute(&invocation,
                         1, 1, 1,
                         1, 1, 1,
                         true);
 
         payload.prefix.invocation = invocation;
+        payload.postfix = draw;
 
         struct panfrost_bo *bos[] = {
                 scratchpad, shmem, shader, shader_desc, ubo, var, attr
index 14102bea14339b80fd609bf0dd6dc6eb731a5f22..634f62b47ad6f72d6fd35530a3e158847a52051a 100644 (file)
@@ -38,21 +38,6 @@ typedef uint32_t u32;
 typedef uint64_t u64;
 typedef uint64_t mali_ptr;
 
-/* Applies to tiler_gl_enables */
-
-#define MALI_OCCLUSION_QUERY    (1 << 3)
-#define MALI_OCCLUSION_PRECISE  (1 << 4)
-
-/* Set for a glFrontFace(GL_CCW) in a Y=0=TOP coordinate system (like Gallium).
- * In OpenGL, this would corresponds to glFrontFace(GL_CW). Mesa and the blob
- * disagree about how to do viewport flipping, so the blob actually sets this
- * for GL_CW but then has a negative viewport stride */
-
-#define MALI_FRONT_CCW_TOP      (1 << 5)
-
-#define MALI_CULL_FACE_FRONT    (1 << 6)
-#define MALI_CULL_FACE_BACK     (1 << 7)
-
 enum mali_nondominant_mode {
         MALI_BLEND_NON_MIRROR = 0,
         MALI_BLEND_NON_ZERO = 1
@@ -464,72 +449,15 @@ struct bifrost_tiler_meta {
         u64 zeros[20];
 } __attribute__((packed));
 
-struct mali_vertex_tiler_postfix {
-        u16 gl_enables; // 0x6 on Midgard, 0x2 on Bifrost
-
-        /* Both zero for non-instanced draws. For instanced draws, a
-         * decomposition of padded_num_vertices. See the comments about the
-         * corresponding fields in mali_attr for context. */
-
-        unsigned instance_shift : 5;
-        unsigned instance_odd : 3;
-
-        u8 zero4;
-
-        /* Offset for first vertex in buffer */
-        u32 offset_start;
-
-       u64 zero5;
-
-        /* Zero for vertex jobs. Pointer to the position (gl_Position) varying
-         * output from the vertex shader for tiler jobs.
-         */
-
-        u64 position_varying;
-
-        /* An array of mali_uniform_buffer_meta's. The size is given by the
-         * shader_meta.
-         */
-        u64 uniform_buffers;
-
-        /* On Bifrost, this is a pointer to an array of bifrost_texture_descriptor.
-         * On Midgard, this is a pointer to an array of pointers to the texture
-         * descriptors, number of pointers bounded by number of textures. The
-         * indirection is needed to accomodate varying numbers and sizes of
-         * texture descriptors */
-        u64 textures;
-
-        /* For OpenGL, from what I've seen, this is intimately connected to
-         * texture_meta. cwabbott says this is not the case under Vulkan, hence
-         * why this field is seperate (Midgard is Vulkan capable). Pointer to
-         * array of sampler descriptors (which are uniform in size) */
-        u64 sampler_descriptor;
-
-        u64 uniforms;
-        u64 shader;
-        u64 attributes; /* struct attribute_buffer[] */
-        u64 attribute_meta; /* attribute_meta[] */
-        u64 varyings; /* struct attr */
-        u64 varying_meta; /* pointer */
-        u64 viewport;
-        u64 occlusion_counter; /* A single bit as far as I can tell */
-
-        /* On Bifrost, this points directly to a mali_shared_memory structure.
-         * On Midgard, this points to a framebuffer (either SFBD or MFBD as
-         * tagged), which embeds a mali_shared_memory structure */
-        mali_ptr shared_memory;
-} __attribute__((packed));
-
 struct midgard_payload_vertex_tiler {
         struct mali_vertex_tiler_prefix prefix;
-        struct mali_vertex_tiler_postfix postfix;
-
+        struct mali_draw_packed postfix;
         union midgard_primitive_size primitive_size;
 } __attribute__((packed));
 
 struct bifrost_payload_vertex {
         struct mali_vertex_tiler_prefix prefix;
-        struct mali_vertex_tiler_postfix postfix;
+        struct mali_draw_packed postfix;
 } __attribute__((packed));
 
 struct bifrost_payload_tiler {
@@ -537,7 +465,7 @@ struct bifrost_payload_tiler {
         union midgard_primitive_size primitive_size;
         mali_ptr tiler_meta;
         u64 zero1, zero2, zero3, zero4, zero5, zero6;
-        struct mali_vertex_tiler_postfix postfix;
+        struct mali_draw_packed postfix;
 } __attribute__((packed));
 
 /* Purposeful off-by-one in width, height fields. For example, a (64, 64)