Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 55081
b: refs/heads/master
c: 453ff94
h: refs/heads/master
i:
  55079: cb09dec
v: v3
  • Loading branch information
Michel Dänzer authored and Dave Airlie committed May 8, 2007
1 parent fd913ac commit 1748727
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 29 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: f2b04cd219e5c0f1214c0eeeec814ddd08a12c1b
refs/heads/master: 453ff94ca502d0a7441912823f20ed130f685429
1 change: 0 additions & 1 deletion trunk/drivers/char/drm/radeon_drv.h
Original file line number Diff line number Diff line change
Expand Up @@ -243,7 +243,6 @@ typedef struct drm_radeon_private {

int do_boxes;
int page_flipping;
int current_page;

u32 color_fmt;
unsigned int front_offset;
Expand Down
46 changes: 19 additions & 27 deletions trunk/drivers/char/drm/radeon_state.c
Original file line number Diff line number Diff line change
Expand Up @@ -773,7 +773,7 @@ static void radeon_clear_box(drm_radeon_private_t * dev_priv,
RADEON_GMC_SRC_DATATYPE_COLOR |
RADEON_ROP3_P | RADEON_GMC_CLR_CMP_CNTL_DIS);

if (dev_priv->page_flipping && dev_priv->current_page == 1) {
if (dev_priv->sarea_priv->pfCurrentPage == 1) {
OUT_RING(dev_priv->front_pitch_offset);
} else {
OUT_RING(dev_priv->back_pitch_offset);
Expand Down Expand Up @@ -861,7 +861,7 @@ static void radeon_cp_dispatch_clear(drm_device_t * dev,

dev_priv->stats.clears++;

if (dev_priv->page_flipping && dev_priv->current_page == 1) {
if (dev_priv->sarea_priv->pfCurrentPage == 1) {
unsigned int tmp = flags;

flags &= ~(RADEON_FRONT | RADEON_BACK);
Expand Down Expand Up @@ -1382,7 +1382,7 @@ static void radeon_cp_dispatch_swap(drm_device_t * dev)
/* Make this work even if front & back are flipped:
*/
OUT_RING(CP_PACKET0(RADEON_SRC_PITCH_OFFSET, 1));
if (dev_priv->current_page == 0) {
if (dev_priv->sarea_priv->pfCurrentPage == 0) {
OUT_RING(dev_priv->back_pitch_offset);
OUT_RING(dev_priv->front_pitch_offset);
} else {
Expand Down Expand Up @@ -1416,12 +1416,12 @@ static void radeon_cp_dispatch_flip(drm_device_t * dev)
{
drm_radeon_private_t *dev_priv = dev->dev_private;
drm_sarea_t *sarea = (drm_sarea_t *) dev_priv->sarea->handle;
int offset = (dev_priv->current_page == 1)
int offset = (dev_priv->sarea_priv->pfCurrentPage == 1)
? dev_priv->front_offset : dev_priv->back_offset;
RING_LOCALS;
DRM_DEBUG("%s: page=%d pfCurrentPage=%d\n",
DRM_DEBUG("%s: pfCurrentPage=%d\n",
__FUNCTION__,
dev_priv->current_page, dev_priv->sarea_priv->pfCurrentPage);
dev_priv->sarea_priv->pfCurrentPage);

/* Do some trivial performance monitoring...
*/
Expand Down Expand Up @@ -1449,8 +1449,8 @@ static void radeon_cp_dispatch_flip(drm_device_t * dev)
* performing the swapbuffer ioctl.
*/
dev_priv->sarea_priv->last_frame++;
dev_priv->sarea_priv->pfCurrentPage = dev_priv->current_page =
1 - dev_priv->current_page;
dev_priv->sarea_priv->pfCurrentPage =
1 - dev_priv->sarea_priv->pfCurrentPage;

BEGIN_RING(2);

Expand Down Expand Up @@ -2152,24 +2152,10 @@ static int radeon_do_init_pageflip(drm_device_t * dev)
ADVANCE_RING();

dev_priv->page_flipping = 1;
dev_priv->current_page = 0;
dev_priv->sarea_priv->pfCurrentPage = dev_priv->current_page;

return 0;
}

/* Called whenever a client dies, from drm_release.
* NOTE: Lock isn't necessarily held when this is called!
*/
static int radeon_do_cleanup_pageflip(drm_device_t * dev)
{
drm_radeon_private_t *dev_priv = dev->dev_private;
DRM_DEBUG("\n");
if (dev_priv->sarea_priv->pfCurrentPage != 1)
dev_priv->sarea_priv->pfCurrentPage = 0;

if (dev_priv->current_page != 0)
radeon_cp_dispatch_flip(dev);

dev_priv->page_flipping = 0;
return 0;
}

Expand Down Expand Up @@ -3174,9 +3160,7 @@ void radeon_driver_preclose(drm_device_t * dev, DRMFILE filp)
{
if (dev->dev_private) {
drm_radeon_private_t *dev_priv = dev->dev_private;
if (dev_priv->page_flipping) {
radeon_do_cleanup_pageflip(dev);
}
dev_priv->page_flipping = 0;
radeon_mem_release(filp, dev_priv->gart_heap);
radeon_mem_release(filp, dev_priv->fb_heap);
radeon_surfaces_release(filp, dev_priv);
Expand All @@ -3185,6 +3169,14 @@ void radeon_driver_preclose(drm_device_t * dev, DRMFILE filp)

void radeon_driver_lastclose(drm_device_t * dev)
{
if (dev->dev_private) {
drm_radeon_private_t *dev_priv = dev->dev_private;

if (dev_priv->sarea_priv &&
dev_priv->sarea_priv->pfCurrentPage != 0)
radeon_cp_dispatch_flip(dev);
}

radeon_do_release(dev);
}

Expand Down

0 comments on commit 1748727

Please sign in to comment.