nouveau: nv10 and nv11,15 are different
authorPatrice Mandin <pmandin@caramail.com>
Sat, 14 Jul 2007 16:54:22 +0000 (18:54 +0200)
committerPatrice Mandin <pmandin@caramail.com>
Sat, 14 Jul 2007 16:54:22 +0000 (18:54 +0200)
src/mesa/drivers/dri/nouveau/nouveau_context.c
src/mesa/drivers/dri/nouveau/nouveau_object.c
src/mesa/drivers/dri/nouveau/nouveau_state.c
src/mesa/drivers/dri/nouveau/nv10_state.c
src/mesa/drivers/dri/nouveau/nv10_swtcl.c

index 3b2bd21..44392c0 100644 (file)
@@ -224,6 +224,7 @@ GLboolean nouveauCreateContext( const __GLcontextModes *glVisual,
                        nv04TriInitFunctions( ctx );
                        break;
                case NV_10:
+               case NV_11:
                case NV_17:
                case NV_20:
                case NV_30:
index ec517f8..a143488 100644 (file)
@@ -34,10 +34,13 @@ void nouveauObjectInit(nouveauContextPtr nmesa)
        nouveauCreateContextObject(nmesa, Nv3D, nmesa->screen->card->class_3d);
        if (nmesa->screen->card->type>=NV_10) {
                nouveauCreateContextObject(nmesa, NvCtxSurf2D, NV10_CONTEXT_SURFACES_2D);
-               nouveauCreateContextObject(nmesa, NvImageBlit, NV10_IMAGE_BLIT);
        } else {
                nouveauCreateContextObject(nmesa, NvCtxSurf2D, NV04_CONTEXT_SURFACES_2D);
                nouveauCreateContextObject(nmesa, NvCtxSurf3D, NV04_CONTEXT_SURFACES_3D);
+       }
+       if (nmesa->screen->card->type>=NV_11) {
+               nouveauCreateContextObject(nmesa, NvImageBlit, NV10_IMAGE_BLIT);
+       } else {
                nouveauCreateContextObject(nmesa, NvImageBlit, NV_IMAGE_BLIT);
        }
        nouveauCreateContextObject(nmesa, NvMemFormat, NV_MEMORY_TO_MEMORY_FORMAT);
index 41fdd2d..f618dcf 100644 (file)
@@ -162,6 +162,7 @@ void nouveauDDInitState(nouveauContextPtr nmesa)
             nv04InitStateFuncs(nmesa->glCtx, &nmesa->glCtx->Driver);
             break;
         case NV_10:
+        case NV_11:
         case NV_17:
             nv10InitStateFuncs(nmesa->glCtx, &nmesa->glCtx->Driver);
             break;
index 4db8296..47c4b14 100644 (file)
@@ -697,8 +697,7 @@ static GLboolean nv10InitCard(nouveauContextPtr nmesa)
        BEGIN_RING_SIZE(NvSub3D, 0x03f4, 1);
        OUT_RING(0);
 
-       /* not for nv10, only for >= nv11 */
-       if ((nmesa->screen->card->id>>4) >= 0x11) {
+       if (nmesa->screen->card->type >= NV_11) {
                BEGIN_RING_SIZE(NvSub3D, 0x120, 3);
                OUT_RING(0);
                OUT_RING(1);
index 586e0b9..611469b 100644 (file)
@@ -58,7 +58,7 @@ static void nv10ResetLineStipple( GLcontext *ctx );
 
 static inline void nv10StartPrimitive(struct nouveau_context* nmesa,uint32_t primitive,uint32_t size)
 {
-       if ((nmesa->screen->card->type==NV_10) || (nmesa->screen->card->type==NV_17))
+       if ((nmesa->screen->card->type>=NV_10) && (nmesa->screen->card->type<=NV_17))
                BEGIN_RING_SIZE(NvSub3D,NV10_TCL_PRIMITIVE_3D_BEGIN_END,1);
        else if (nmesa->screen->card->type==NV_20)
                BEGIN_RING_SIZE(NvSub3D,NV20_TCL_PRIMITIVE_3D_BEGIN_END,1);
@@ -66,7 +66,7 @@ static inline void nv10StartPrimitive(struct nouveau_context* nmesa,uint32_t pri
                BEGIN_RING_SIZE(NvSub3D,NV30_TCL_PRIMITIVE_3D_BEGIN_END,1);
        OUT_RING(primitive);
 
-       if ((nmesa->screen->card->type==NV_10) || (nmesa->screen->card->type==NV_17))
+       if ((nmesa->screen->card->type>=NV_10) && (nmesa->screen->card->type<=NV_17))
                BEGIN_RING_SIZE(NvSub3D,NV10_TCL_PRIMITIVE_3D_VERTEX_ARRAY_DATA|NONINC_METHOD,size);
        else if (nmesa->screen->card->type==NV_20)
                BEGIN_RING_SIZE(NvSub3D,NV20_TCL_PRIMITIVE_3D_VERTEX_DATA|NONINC_METHOD,size);
@@ -76,7 +76,7 @@ static inline void nv10StartPrimitive(struct nouveau_context* nmesa,uint32_t pri
 
 inline void nv10FinishPrimitive(struct nouveau_context *nmesa)
 {
-       if ((nmesa->screen->card->type==NV_10) || (nmesa->screen->card->type==NV_17))
+       if ((nmesa->screen->card->type>=NV_10) && (nmesa->screen->card->type<=NV_17))
                BEGIN_RING_SIZE(NvSub3D,NV10_TCL_PRIMITIVE_3D_BEGIN_END,1);
        else if (nmesa->screen->card->type==NV_20)
                BEGIN_RING_SIZE(NvSub3D,NV20_TCL_PRIMITIVE_3D_BEGIN_END,1);
@@ -454,7 +454,7 @@ static inline void nv10OutputVertexFormat(struct nouveau_context* nmesa)
        /* 
         * Tell the hardware about the vertex format
         */
-       if ((nmesa->screen->card->type==NV_10) || (nmesa->screen->card->type==NV_17)) {
+       if ((nmesa->screen->card->type>=NV_10) && (nmesa->screen->card->type<=NV_17)) {
                int size;
 
 #define NV_VERTEX_ATTRIBUTE_TYPE_FLOAT 2