fix GL_BACK color material bug
[mesa.git] / src / mesa / drivers / glide / fxglidew.c
index dc51ee9d1ef777e7cc671c8d0ff6dac6a90bcdde..5155c825a857907bc0e8be5e757764e6705066e5 100644 (file)
@@ -68,6 +68,9 @@ FxI32 FX_grGetInteger_NoLock(FxU32 pname)
        return FXFALSE;
     case FX_PENDING_BUFFERSWAPS:
        return grBufferNumPending();
+    case FX_TEXTURE_ALIGN:
+        /* This is a guess from reading the glide3 docs */
+        return 8;
     default:
        if (MESA_VERBOSE&VERBOSE_DRIVER) {
           fprintf(stderr,"Wrong parameter in FX_grGetInteger!\n");
@@ -84,6 +87,7 @@ FxI32 FX_grGetInteger_NoLock(FxU32 pname)
      case FX_GLIDE_STATE_SIZE:
      case FX_LFB_PIXEL_PIPE:
      case FX_PENDING_BUFFERSWAPS:
+     case FX_TEXTURE_ALIGN:
        grname = pname;
        break;
      default:
@@ -150,7 +154,17 @@ extern FxU32 FX_grTexMaxAddress(GrChipID_t tmu) {
 FxBool FX_grSstControl(FxU32 code)
 {
 #if defined(FX_GLIDE3)
-  (void) code;
+  /* The glide 3 sources call for grEnable/grDisable to be called in exchange
+   * for grSstControl. */
+  switch(code) {
+    case GR_CONTROL_ACTIVATE:
+      grEnable(GR_PASSTHRU);
+      break;
+    case GR_CONTROL_DEACTIVATE:
+      grDisable(GR_PASSTHRU);
+      break;
+  }
+  /* Appearently GR_CONTROL_RESIZE can be ignored. */
   return 1;  /* OK? */
 #else
   FxU32 result;
@@ -221,12 +235,12 @@ void FX_grGlideGetVersion(char *buf)
 
 void FX_grSstPerfStats(GrSstPerfStats_t *st)
 {
-  /* ToDo */
-  st->pixelsIn = 0;
-  st->chromaFail = 0;
-  st->zFuncFail = 0;
-  st->aFuncFail = 0;
-  st->pixelsOut = 0;
+  FxI32 n;
+  grGet(GR_STATS_PIXELS_IN, 4, &n);              st->pixelsIn = n;
+  grGet(GR_STATS_PIXELS_CHROMA_FAIL, 4, &n);     st->chromaFail = n;
+  grGet(GR_STATS_PIXELS_DEPTHFUNC_FAIL, 4, &n);  st->zFuncFail = n;
+  grGet(GR_STATS_PIXELS_AFUNC_FAIL, 4, &n);      st->aFuncFail = n;
+  grGet(GR_STATS_PIXELS_OUT, 4, &n);             st->pixelsOut = n;
 }
 
 void FX_grAADrawLine(GrVertex *a,GrVertex *b)
@@ -381,6 +395,10 @@ int FX_grSstQueryHardware(GrHwConfiguration *c)
    return i;
 } 
 
+
+#endif  /* FX_GLIDE3 */
+
+/* It appears to me that this function is needed either way. */
 FX_GrContext_t FX_grSstWinOpen( FxU32                hWnd,
                                 GrScreenResolution_t screen_resolution,
                                 GrScreenRefresh_t    refresh_rate,
@@ -419,7 +437,6 @@ FX_GrContext_t FX_grSstWinOpen( FxU32                hWnd,
 
 
 
-#endif 
 #else
 
 /*