<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <p>Hi Lionel,</p>
    <p>Indeed the value 8 here is questionable. I picked it because
      other drivers advertise the same value e.g. in Mesa radeon returns
      8 for gl and vulkan or on Windows Intel's driver returns 8. But
      why 8? It's some kind of mystery. <br>
    </p>
    <blockquote type="cite">"If the implementation truely has floating
      point viewport bounds, it may report a sufficiently high value to
      indicate this. "</blockquote>
    8 seems to be a sufficiently high value (it seems if someone even
    checks the value it's going like 'precision > 0' - it is used as
    a flag). But still it's probably not good enough argument... <br>
    <br>
    Floating point (IEEE 754) has 24 bits of significand precision, in
    other way - 6 to 9 significant decimal digits. And drivers return 8,
    the only 8 in float-point is 8 exponent bits.<br>
    <br>
    Unless someone knows why 8, there two paths: <br>
    <ul>
      <li>Left it to be 8 - be the same as other drivers<br>
      </li>
      <li>Make 24 - to reflect 24 bits of significand precision of float<br>
      </li>
    </ul>
    <br>
    - Danil<br>
    <br>
    <br>
    <div class="moz-cite-prefix">On 18.06.18 17:27, Lionel Landwerlin
      wrote:<br>
    </div>
    <blockquote type="cite"
      cite="mid:10e7cf48-9890-a56c-2745-a6aff8280b1e@intel.com">
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      <div class="moz-cite-prefix">Hey Danylo,<br>
        <br>
        Thanks for this patch.<br>
        I'm not really an expert here but my understanding is that it
        should reflect the number of bits in fixed point precision.<br>
        We use 32bits floats in the packets sent to the hardware.<br>
        Quoting the spec :<br>
        <br>
        "If the implementation truely has floating point viewport
        bounds, it may report a sufficiently high value to indicate
        this. "<br class="Apple-interchange-newline">
        <br>
        Maybe we should use something a bit bigger than 8?<br>
        <br>
        Cheers,<br>
        <br>
        -<br>
        Lionel<br>
        <br>
        On 18/06/18 13:50, Danylo Piliaiev wrote:<br>
      </div>
      <blockquote type="cite"
cite="mid:1529326361-16523-1-git-send-email-danylo.piliaiev@globallogic.com">
        <pre wrap="">We use floating-points for viewport bounds so VIEWPORT_SUBPIXEL_BITS
should reflect this.

Bugzilla: <a class="moz-txt-link-freetext" href="https://bugs.freedesktop.org/show_bug.cgi?id=105975" moz-do-not-send="true">https://bugs.freedesktop.org/show_bug.cgi?id=105975</a>

Signed-off-by: Danylo Piliaiev <a class="moz-txt-link-rfc2396E" href="mailto:danylo.piliaiev@globallogic.com" moz-do-not-send="true"><danylo.piliaiev@globallogic.com></a>
---
 src/mesa/drivers/dri/i965/brw_context.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/mesa/drivers/dri/i965/brw_context.c b/src/mesa/drivers/dri/i965/brw_context.c
index 9ced230..eacf326 100644
--- a/src/mesa/drivers/dri/i965/brw_context.c
+++ b/src/mesa/drivers/dri/i965/brw_context.c
@@ -688,7 +688,7 @@ brw_initialize_context_constants(struct brw_context *brw)
    /* ARB_viewport_array, OES_viewport_array */
    if (devinfo->gen >= 6) {
       ctx->Const.MaxViewports = GEN6_NUM_VIEWPORTS;
-      ctx->Const.ViewportSubpixelBits = 0;
+      ctx->Const.ViewportSubpixelBits = 8;
 
       /* Cast to float before negating because MaxViewportWidth is unsigned.
        */
</pre>
      </blockquote>
      <p><br>
      </p>
    </blockquote>
    <br>
  </body>
</html>