unsigned depth = (zslice_pick < 0 ?
u_minify(src_tex->b.b.depth0, miplevel) : 1);
- svga_texture_copy_handle(svga,
- src_tex->handle,
- 0, 0, zoffset,
- miplevel,
- j + layeroffset,
- dst, 0, 0, 0, i, j,
- u_minify(src_tex->b.b.width0, miplevel),
- u_minify(src_tex->b.b.height0, miplevel),
- depth);
+ if (src_tex->b.b.nr_samples > 1) {
+ unsigned subResource = j * numMipLevels + i;
+ svga_texture_copy_region(svga, src_tex->handle,
+ subResource, 0, 0, zoffset,
+ dst, subResource, 0, 0, 0,
+ src_tex->b.b.width0, src_tex->b.b.height0, depth);
+ }
+ else {
+ svga_texture_copy_handle(svga,
+ src_tex->handle,
+ 0, 0, zoffset,
+ miplevel,
+ j + layeroffset,
+ dst, 0, 0, 0, i, j,
+ u_minify(src_tex->b.b.width0, miplevel),
+ u_minify(src_tex->b.b.height0, miplevel),
+ depth);
+ }
}
}
}
static const float pos1[1][2] = {
{ 0.5, 0.5 }
};
+ static const float pos2[2][2] = {
+ { 0.75, 0.75 },
+ { 0.25, 0.25 }
+ };
static const float pos4[4][2] = {
{ 0.375000, 0.125000 },
{ 0.875000, 0.375000 },
const float (*positions)[2];
switch (sample_count) {
+ case 2:
+ positions = pos2;
+ break;
case 4:
positions = pos4;
break;