panfrost: Remove ancient comment
[mesa.git] / src / gallium / drivers / panfrost / include / panfrost-job.h
index 35bc4a5a31ee112d11052fd262e6833f6ab63cd9..444e5ad9e69a30b312d8d9ab75c9d3b22bee6289 100644 (file)
@@ -2,7 +2,7 @@
  * © Copyright 2017-2018 Alyssa Rosenzweig
  * © Copyright 2017-2018 Connor Abbott
  * © Copyright 2017-2018 Lyude Paul
- * © Copyright2019 Collabora
+ * © Copyright2019 Collabora, Ltd.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the "Software"),
@@ -168,9 +168,6 @@ struct mali_stencil_test {
         unsigned zero                  : 4;
 } __attribute__((packed));
 
-/* Blending is a mess, since anything fancy triggers a blend shader, and
- * -those- are not understood whatsover yet */
-
 #define MALI_MASK_R (1 << 0)
 #define MALI_MASK_G (1 << 1)
 #define MALI_MASK_B (1 << 2)
@@ -321,6 +318,7 @@ enum mali_format {
        MALI_RGB32_FIXED    = MALI_FORMAT_SPECIAL | 0x13,
        MALI_RGBA32_FIXED   = MALI_FORMAT_SPECIAL | 0x14,
        MALI_R11F_G11F_B10F = MALI_FORMAT_SPECIAL | 0x19,
+        MALI_R9F_G9F_B9F_E5F = MALI_FORMAT_SPECIAL | 0x1b,
        /* Only used for varyings, to indicate the transformed gl_Position */
        MALI_VARYING_POS    = MALI_FORMAT_SPECIAL | 0x1e,
        /* Only used for varyings, to indicate that the write should be
@@ -402,7 +400,7 @@ enum mali_format {
 #define MALI_ALPHA_COVERAGE(clampf) ((uint16_t) (int) (clampf * 15.0f))
 #define MALI_GET_ALPHA_COVERAGE(nibble) ((float) nibble / 15.0f)
 
-/* Applies to unknown1 */
+/* Applies to midgard1.flags */
 
 /* Should the hardware perform early-Z testing? Normally should be set
  * for performance reasons. Clear if you use: discard,
@@ -410,19 +408,19 @@ enum mali_format {
  * forward-pixel kill; we're not quite sure which bit is which yet.
  * TODO: How does this interact with blending?*/
 
-#define MALI_EARLY_Z (1 << 10)
+#define MALI_EARLY_Z (1 << 6)
 
 /* Should the hardware calculate derivatives (via helper invocations)? Set in a
  * fragment shader that uses texturing or derivative functions */
 
-#define MALI_HELPER_INVOCATIONS (1 << 11)
+#define MALI_HELPER_INVOCATIONS (1 << 7)
 
 /* Flags denoting the fragment shader's use of tilebuffer readback. If the
  * shader might read any part of the tilebuffer, set MALI_READS_TILEBUFFER. If
  * it might read depth/stencil in particular, also set MALI_READS_ZS */
 
-#define MALI_READS_ZS (1 << 12)
-#define MALI_READS_TILEBUFFER (1 << 16)
+#define MALI_READS_ZS (1 << 8)
+#define MALI_READS_TILEBUFFER (1 << 12)
 
 /* The raw Midgard blend payload can either be an equation or a shader
  * address, depending on the context */
@@ -439,11 +437,14 @@ union midgard_blend {
 /* On MRT Midgard systems (using an MFBD), each render target gets its own
  * blend descriptor */
 
+#define MALI_BLEND_SRGB (0x400)
+
 struct midgard_blend_rt {
         /* Flags base value of 0x200 to enable the render target.
          * OR with 0x1 for blending (anything other than REPLACE).
          * OR with 0x2 for programmable blending with 0-2 registers
          * OR with 0x3 for programmable blending with 2+ registers
+         * OR with MALI_BLEND_SRGB for implicit sRGB
          */
 
         u64 flags;
@@ -538,9 +539,8 @@ struct mali_shader_meta {
                         u32 unk1 : 28; // = 0x800000 for vertex, 0x958020 for tiler
                 } bifrost1;
                 struct {
-                        /* 0x200 except MALI_NO_ALPHA_TO_COVERAGE. Mysterious 1
-                         * other times. Who knows really? */
-                        u16 unknown1;
+                        unsigned uniform_buffer_count : 4;
+                        unsigned flags : 12;
 
                         /* Whole number of uniform registers used, times two;
                          * whole number of work registers used (no scale).
@@ -1096,9 +1096,6 @@ struct bifrost_payload_fused {
         struct mali_vertex_tiler_postfix vertex_postfix;
 } __attribute__((packed));
 
-/* Pointed to from texture_trampoline, mostly unknown still, haven't
- * managed to replay successfully */
-
 /* Purposeful off-by-one in width, height fields. For example, a (64, 64)
  * texture is stored as (63, 63) in these fields. This adjusts for that.
  * There's an identical pattern in the framebuffer descriptor. Even vertex
@@ -1235,8 +1232,9 @@ struct mali_sampler_descriptor {
         enum mali_wrap_mode wrap_r : 4;
         enum mali_alt_func compare_func : 3;
 
-        /* A single set bit of unknown, ha! */
-        unsigned unknown2 : 1;
+        /* No effect on 2D textures. For cubemaps, set for ES3 and clear for
+         * ES2, controlling seamless cubemapping */
+        unsigned seamless_cube_map : 1;
 
         unsigned zero : 16;
 
@@ -1406,9 +1404,17 @@ struct mali_single_framebuffer {
         /* More below this, maybe */
 } __attribute__((packed));
 
+/* On Midgard, this "framebuffer descriptor" is used for the framebuffer field
+ * of compute jobs. Superficially resembles a single framebuffer descriptor */
+
+struct mali_compute_fbd {
+        u32 unknown1[16];
+} __attribute__((packed));
+
 /* Format bits for the render target flags */
 
 #define MALI_MFBD_FORMAT_MSAA    (1 << 1)
+#define MALI_MFBD_FORMAT_SRGB    (1 << 2)
 
 enum mali_mfbd_block_format {
         MALI_MFBD_BLOCK_TILED   = 0x0,