i965: Change the hiz-override env var to a driconf option.
authorEric Anholt <eric@anholt.net>
Tue, 6 Mar 2012 19:05:20 +0000 (11:05 -0800)
committerEric Anholt <eric@anholt.net>
Tue, 20 Mar 2012 22:47:48 +0000 (15:47 -0700)
The force-enable option is dropped, now that the hardware we were
concerned about has HiZ on by default.  Now, instead of doing
INTEL_HIZ=0 to test disabling hiz, you can set hiz=false.

v2: Disable separate stencil on gen6 when HIZ is turned off.
    (previously, this had to be done manually in addition).

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> (v1)
src/mesa/drivers/dri/intel/intel_context.c
src/mesa/drivers/dri/intel/intel_screen.c
src/mesa/drivers/dri/intel/intel_screen.h

index 5432fb1f6001f3e3ac2a60d5ed616e7f90223d6d..d2ec0265e7c7a6b2ba7fc7886490897ac9dbb616 100644 (file)
@@ -627,7 +627,7 @@ intelInitContext(struct intel_context *intel,
 
    intel->has_separate_stencil = intel->intelScreen->hw_has_separate_stencil;
    intel->must_use_separate_stencil = intel->intelScreen->hw_must_use_separate_stencil;
-   intel->has_hiz = intel->intelScreen->hw_has_hiz;
+   intel->has_hiz = intel->gen >= 6;
    intel->has_llc = intel->intelScreen->hw_has_llc;
    intel->has_swizzling = intel->intelScreen->hw_has_swizzling;
 
@@ -740,6 +740,13 @@ intelInitContext(struct intel_context *intel,
                                               "texture_tiling");
    intel->use_early_z = driQueryOptionb(&intel->optionCache, "early_z");
 
+   if (!driQueryOptionb(&intel->optionCache, "hiz")) {
+       intel->has_hiz = false;
+       /* On gen6, you can only do separate stencil with HIZ. */
+       if (intel->gen == 6)
+         intel->has_separate_stencil = false;
+   }
+
    intel->prim.primitive = ~0;
 
    /* Force all software fallbacks */
index 48762d00a3ad3543fb591c4b4fc5761fbd8ce05f..229eeb1f5ada7721b1b81a599493a6812b1bf783 100644 (file)
@@ -57,6 +57,10 @@ PUBLIC const char __driConfigOptions[] =
         DRI_CONF_DESC(en, "Enable texture tiling")
       DRI_CONF_OPT_END
 
+      DRI_CONF_OPT_BEGIN(hiz, bool, true)
+        DRI_CONF_DESC(en, "Enable Hierarchical Z on gen6+")
+      DRI_CONF_OPT_END
+
       DRI_CONF_OPT_BEGIN(early_z, bool, false)
         DRI_CONF_DESC(en, "Enable early Z in classic mode (unstable, 945-only).")
       DRI_CONF_OPT_END
@@ -86,7 +90,7 @@ PUBLIC const char __driConfigOptions[] =
    DRI_CONF_SECTION_END
 DRI_CONF_END;
 
-const GLuint __driNConfigOptions = 13;
+const GLuint __driNConfigOptions = 14;
 
 #include "intel_batchbuffer.h"
 #include "intel_buffers.h"
@@ -619,29 +623,6 @@ intel_init_bufmgr(struct intel_screen *intelScreen)
    return true;
 }
 
-/**
- * Override intel_screen.hw_has_hiz with environment variable INTEL_HIZ.
- *
- * Valid values for INTEL_HIZ are "0" and "1". If an invalid valid value is
- * encountered, a warning is emitted and INTEL_HIZ is ignored.
- */
-static void
-intel_override_hiz(struct intel_screen *intel)
-{
-   const char *s = getenv("INTEL_HIZ");
-   if (!s) {
-      return;
-   } else if (!strncmp("0", s, 2)) {
-      intel->hw_has_hiz = false;
-   } else if (!strncmp("1", s, 2)) {
-      intel->hw_has_hiz = true;
-   } else {
-      fprintf(stderr,
-             "warning: env variable INTEL_HIZ=\"%s\" has invalid value "
-             "and is ignored", s);
-   }
-}
-
 /**
  * Override intel_screen.hw_has_separate_stencil with environment variable
  * INTEL_SEPARATE_STENCIL.
@@ -761,7 +742,6 @@ __DRIconfig **intelInitScreen2(__DRIscreen *psp)
 
    intelScreen->hw_has_separate_stencil = intelScreen->gen >= 6;
    intelScreen->hw_must_use_separate_stencil = intelScreen->gen >= 7;
-   intelScreen->hw_has_hiz = intelScreen->gen >= 6;
    intelScreen->dri2_has_hiz = INTEL_DRI2_HAS_HIZ_UNKNOWN;
 
 #if defined(I915_PARAM_HAS_LLC)
@@ -772,7 +752,6 @@ __DRIconfig **intelInitScreen2(__DRIscreen *psp)
    intelScreen->hw_has_llc = intelScreen->gen >= 6;
 #endif
 
-   intel_override_hiz(intelScreen);
    intel_override_separate_stencil(intelScreen);
 
    api_mask = (1 << __DRI_API_OPENGL);
index 1998f7eb675eaeb323cb95123b765151e5d08d78..3f03641b7f49765b462b6fdd6dd14fb306c800a4 100644 (file)
@@ -111,7 +111,6 @@ struct intel_screen
     */
    bool hw_has_separate_stencil;
    bool hw_must_use_separate_stencil;
-   bool hw_has_hiz;
    enum intel_dri2_has_hiz dri2_has_hiz;
 
    bool kernel_has_gen7_sol_reset;