mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 18:08:40 +02:00
R6xx/r7xx: implement memcpy buffer swaps
This allows double buffered apps to run, but perfomance will be awful until we implement something faster. You must update to the latest kernel modules.
This commit is contained in:
parent
9385e4e1ff
commit
10b3e64bca
1 changed files with 18 additions and 0 deletions
|
|
@ -475,6 +475,24 @@ void radeonCopyBuffer( __DRIdrawablePrivate *dPriv,
|
||||||
if (!n)
|
if (!n)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
if (IS_R600_CLASS(rmesa->radeonScreen)) {
|
||||||
|
int src_pitch = rmesa->radeonScreen->backPitch * rmesa->radeonScreen->cpp;
|
||||||
|
int dst_pitch = rmesa->radeonScreen->frontPitch * rmesa->radeonScreen->cpp;
|
||||||
|
char *src = (char *)rmesa->radeonScreen->driScreen->pFB + rmesa->radeonScreen->backOffset;
|
||||||
|
char *dst = (char *)rmesa->radeonScreen->driScreen->pFB + rmesa->radeonScreen->frontOffset;
|
||||||
|
int j;
|
||||||
|
drm_clip_rect_t *pb = rmesa->sarea->boxes;
|
||||||
|
|
||||||
|
for (j = 0; j < n; j++) {
|
||||||
|
int x = pb[j].x1;
|
||||||
|
int y = pb[j].y1;
|
||||||
|
int w = pb[j].x2 - x;
|
||||||
|
int h = pb[j].y2 - y;
|
||||||
|
|
||||||
|
r600_sw_blit(src, src_pitch, dst, dst_pitch, x, y, w, h, rmesa->radeonScreen->cpp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ret = drmCommandNone( rmesa->dri.fd, DRM_RADEON_SWAP );
|
ret = drmCommandNone( rmesa->dri.fd, DRM_RADEON_SWAP );
|
||||||
|
|
||||||
if ( ret ) {
|
if ( ret ) {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue