swrast: move resampleRow setup code in blit_nearest()
The resampleRow setup depends on pixelSize. For color buffers, we don't know the pixelSize until we're in the buffer loop. Move that code inside the loop. Fixes: http://bugs.freedesktop.org/show_bug.cgi?id=59541 Reviewed-by: José Fonseca <jfonseca@vmware.com>
This commit is contained in:
parent
0a60ea4ddc
commit
728bf86a23
|
@ -188,29 +188,6 @@ blit_nearest(struct gl_context *ctx,
|
|||
return;
|
||||
}
|
||||
|
||||
/* choose row resampler */
|
||||
switch (pixelSize) {
|
||||
case 1:
|
||||
resampleRow = resample_row_1;
|
||||
break;
|
||||
case 2:
|
||||
resampleRow = resample_row_2;
|
||||
break;
|
||||
case 4:
|
||||
resampleRow = resample_row_4;
|
||||
break;
|
||||
case 8:
|
||||
resampleRow = resample_row_8;
|
||||
break;
|
||||
case 16:
|
||||
resampleRow = resample_row_16;
|
||||
break;
|
||||
default:
|
||||
_mesa_problem(ctx, "unexpected pixel size (%d) in blit_nearest",
|
||||
pixelSize);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Blit to all the draw buffers */
|
||||
for (i = 0; i < numDrawBuffers; i++) {
|
||||
if (buffer == GL_COLOR_BUFFER_BIT) {
|
||||
|
@ -232,6 +209,29 @@ blit_nearest(struct gl_context *ctx,
|
|||
}
|
||||
}
|
||||
|
||||
/* choose row resampler */
|
||||
switch (pixelSize) {
|
||||
case 1:
|
||||
resampleRow = resample_row_1;
|
||||
break;
|
||||
case 2:
|
||||
resampleRow = resample_row_2;
|
||||
break;
|
||||
case 4:
|
||||
resampleRow = resample_row_4;
|
||||
break;
|
||||
case 8:
|
||||
resampleRow = resample_row_8;
|
||||
break;
|
||||
case 16:
|
||||
resampleRow = resample_row_16;
|
||||
break;
|
||||
default:
|
||||
_mesa_problem(ctx, "unexpected pixel size (%d) in blit_nearest",
|
||||
pixelSize);
|
||||
return;
|
||||
}
|
||||
|
||||
if ((readRb == drawRb) ||
|
||||
(readAtt->Texture && drawAtt->Texture &&
|
||||
(readAtt->Texture == drawAtt->Texture))) {
|
||||
|
|
Loading…
Reference in New Issue