rectangular fp16 fixes (Ewald Snel)
authorAapo Tahkola <aet@rasterburn.org>
Tue, 11 Apr 2006 04:20:25 +0000 (04:20 +0000)
committerAapo Tahkola <aet@rasterburn.org>
Tue, 11 Apr 2006 04:20:25 +0000 (04:20 +0000)
src/mesa/drivers/dri/r300/r300_texmem.c

index a9f64b47c4c45a44d583509ff0f11041e6bde82a..c1d01020cdb18065fc20e6483955c25c7183f80a 100644 (file)
@@ -130,6 +130,12 @@ static void r300UploadGARTClientSubImage(r300ContextPtr rmesa,
                srcPitch = t->image[0][0].width * texFormat->TexelBytes;
                dstPitch = t->image[0][0].width * texFormat->TexelBytes;
                break;
+       case 8:
+       case 16:
+               blit_format = R200_CP_COLOR_FORMAT_CI8;
+               srcPitch = t->image[0][0].width * texFormat->TexelBytes;
+               dstPitch = t->image[0][0].width * texFormat->TexelBytes;
+               break;
        default:
                return;
        }
@@ -144,6 +150,10 @@ static void r300UploadGARTClientSubImage(r300ContextPtr rmesa,
        width = texImage->Width;
        height = texImage->Height;
 
+       if (texFormat->TexelBytes > 4) {
+               width *= texFormat->TexelBytes;
+       }
+
        r300EmitWait(rmesa, R300_WAIT_3D);
 
        r300EmitBlit(rmesa, blit_format,
@@ -177,6 +187,10 @@ static void r300UploadRectSubImage(r300ContextPtr rmesa,
        case 4:
                blit_format = R200_CP_COLOR_FORMAT_ARGB8888;
                break;
+       case 8:
+       case 16:
+               blit_format = R200_CP_COLOR_FORMAT_CI8;
+               break;
        default:
                return;
        }
@@ -189,6 +203,10 @@ static void r300UploadRectSubImage(r300ContextPtr rmesa,
        height = texImage->Height;
        dstPitch = t->pitch;
 
+       if (texFormat->TexelBytes > 4) {
+               width *= texFormat->TexelBytes;
+       }
+
        if (rmesa->prefer_gart_client_texturing && texImage->IsClientData) {
                /* In this case, could also use GART texturing.  This is
                 * currently disabled, but has been tested & works.