panfrost: Add the lod_bias field
authorAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Wed, 20 Nov 2019 14:26:48 +0000 (09:26 -0500)
committerTomeu Vizoso <tomeu.vizoso@collabora.co.uk>
Thu, 21 Nov 2019 06:05:12 +0000 (06:05 +0000)
Enough trial and error ... just think even *more* Midgard about where
this field might be!

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
src/gallium/drivers/panfrost/pan_context.c
src/panfrost/include/panfrost-job.h
src/panfrost/pandecode/decode.c

index bae8527d87e83926a38a41bda64e369912c2932d..08b208b703ae62dc209cca18ffb3c516fa80afe9 100644 (file)
@@ -1824,6 +1824,7 @@ panfrost_create_sampler_state(
                 },
                 .min_lod = FIXED_16(cso->min_lod),
                 .max_lod = FIXED_16(cso->max_lod),
+                .lod_bias = FIXED_16(cso->lod_bias),
                 .seamless_cube_map = cso->seamless_cube_map,
         };
 
index d9a3fe9327e9874379e532f072947c704330a72a..06a45d186d3899ceb10e00e325c938f582fbfa53 100644 (file)
@@ -1280,12 +1280,13 @@ FIXED_16(float x)
 }
 
 struct mali_sampler_descriptor {
-        uint32_t filter_mode;
+        uint16_t filter_mode;
 
         /* Fixed point. Upper 8-bits is before the decimal point, although it
          * caps [0-31]. Lower 8-bits is after the decimal point: int(round(x *
          * 256)) */
 
+        uint16_t lod_bias;
         uint16_t min_lod;
         uint16_t max_lod;
 
index 70a3a355cb7b4ade94ec0a557db14571aa083062..847a0d7e7b0581fd4b2b1a49d9a1417b9b072f62 100644 (file)
@@ -2464,6 +2464,9 @@ pandecode_vertex_tiler_postfix_pre(
                                 pandecode_prop("min_lod = FIXED_16(%f)", DECODE_FIXED_16(s->min_lod));
                                 pandecode_prop("max_lod = FIXED_16(%f)", DECODE_FIXED_16(s->max_lod));
 
+                                if (s->lod_bias)
+                                        pandecode_prop("lod_bias = FIXED_16(%f)", DECODE_FIXED_16(s->lod_bias));
+
                                 pandecode_prop("wrap_s = %s", pandecode_wrap_mode(s->wrap_s));
                                 pandecode_prop("wrap_t = %s", pandecode_wrap_mode(s->wrap_t));
                                 pandecode_prop("wrap_r = %s", pandecode_wrap_mode(s->wrap_r));