summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Deucher <alexdeucher@gmail.com>2009-08-25 18:05:43 -0400
committerAlex Deucher <alexdeucher@gmail.com>2009-08-25 18:05:43 -0400
commit2e83cca8d7efaf1a6836cfb9ea5893fd9d70175f (patch)
tree0921618b5cc692758a7a1dddaac887ca2c79d58d
parent65852de027989c105246fa4e4eed432f29525a22 (diff)
r6xx/r7xx: more cs exa wip
-rw-r--r--src/r600_exa.c22
-rw-r--r--src/r600_textured_videofuncs.c5
-rw-r--r--src/r6xx_accel.c12
3 files changed, 16 insertions, 23 deletions
diff --git a/src/r600_exa.c b/src/r600_exa.c
index b6a1a15b..4d09d6e7 100644
--- a/src/r600_exa.c
+++ b/src/r600_exa.c
@@ -167,8 +167,6 @@ R600PrepareSolid(PixmapPtr pPix, int alu, Pixel pm, Pixel fg)
#endif
r600_cp_start(pScrn);
- if (!r600_vb_get(pScrn))
- RADEON_FALLBACK(("Can't get VB\n"));
/* Init */
#if defined(XF86DRM_MODE)
@@ -325,8 +323,6 @@ R600Solid(PixmapPtr pPix, int x1, int y1, int x2, int y2)
if (((accel_state->vb_index + 3) * 8) > accel_state->vb_total) {
R600DoneSolid(pPix);
r600_cp_start(pScrn);
- if (!r600_vb_get(pScrn))
- return;
}
vb = (pointer)((char*)accel_state->vb_ptr+accel_state->vb_index*8);
@@ -408,6 +404,7 @@ R600DoneSolid(PixmapPtr pPix)
accel_state->src_bo[0] = NULL;
accel_state->src_bo[1] = NULL;
accel_state->dst_bo = NULL;
+ accel_state->vb_bo = NULL;
}
static void
@@ -449,8 +446,6 @@ R600DoPrepareCopy(ScrnInfoPtr pScrn,
accel_state->dst_bo = dst_bo;
r600_cp_start(pScrn);
- if (!r600_vb_get(pScrn))
- return;
/* Init */
start_3d(pScrn, accel_state->ib);
@@ -681,8 +676,6 @@ R600AppendCopyVertex(ScrnInfoPtr pScrn,
if (((accel_state->vb_index + 3) * 16) > accel_state->vb_total) {
R600DoCopy(pScrn);
r600_cp_start(pScrn);
- if (!r600_vb_get(pScrn))
- return;
}
vb = (pointer)((char*)accel_state->vb_ptr+accel_state->vb_index*16);
@@ -1092,6 +1085,7 @@ R600DoneCopy(PixmapPtr pDst)
accel_state->src_bo[0] = NULL;
accel_state->src_bo[1] = NULL;
accel_state->dst_bo = NULL;
+ accel_state->vb_bo = NULL;
}
@@ -1627,8 +1621,6 @@ static Bool R600PrepareComposite(int op, PicturePtr pSrcPicture,
CLEAR (ps_conf);
r600_cp_start(pScrn);
- if (!r600_vb_get(pScrn))
- RADEON_FALLBACK(("Can't get VB\n"));
/* Init */
start_3d(pScrn, accel_state->ib);
@@ -1818,8 +1810,6 @@ static void R600Composite(PixmapPtr pDst,
if (((accel_state->vb_index + 3) * 24) > accel_state->vb_total) {
R600DoneComposite(pDst);
r600_cp_start(pScrn);
- if (!r600_vb_get(pScrn))
- return;
}
vb = (pointer)((char*)accel_state->vb_ptr+accel_state->vb_index*24);
@@ -1858,8 +1848,6 @@ static void R600Composite(PixmapPtr pDst,
if (((accel_state->vb_index + 3) * 16) > accel_state->vb_total) {
R600DoneComposite(pDst);
r600_cp_start(pScrn);
- if (!r600_vb_get(pScrn))
- return;
}
vb = (pointer)((char*)accel_state->vb_ptr+accel_state->vb_index*16);
@@ -1954,6 +1942,7 @@ static void R600DoneComposite(PixmapPtr pDst)
accel_state->src_bo[0] = NULL;
accel_state->src_bo[1] = NULL;
accel_state->dst_bo = NULL;
+ accel_state->vb_bo = NULL;
}
Bool
@@ -2374,6 +2363,11 @@ R600DrawInit(ScreenPtr pScreen)
info->accel_state->XInited3D = FALSE;
info->accel_state->copy_area = NULL;
+ info->accel_state->src_bo[0] = NULL;
+ info->accel_state->src_bo[1] = NULL;
+ info->accel_state->dst_bo = NULL;
+ info->accel_state->copy_area_bo = NULL;
+ info->accel_state->vb_bo = NULL;
if (!R600AllocShaders(pScrn, pScreen))
return FALSE;
diff --git a/src/r600_textured_videofuncs.c b/src/r600_textured_videofuncs.c
index 9cbfea43..631a40cc 100644
--- a/src/r600_textured_videofuncs.c
+++ b/src/r600_textured_videofuncs.c
@@ -254,8 +254,6 @@ R600DisplayTexturedVideo(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv)
#endif
r600_cp_start(pScrn);
- if (!r600_vb_get(pScrn))
- return;
/* Init */
start_3d(pScrn, accel_state->ib);
@@ -587,8 +585,7 @@ R600DisplayTexturedVideo(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv)
if (((accel_state->vb_index + 3) * 16) > accel_state->vb_total) {
R600DoneTexturedVideo(pScrn);
- accel_state->ib = RADEONCPGetBuffer(pScrn);
- r600_vb_get(pScrn);
+ r600_cp_start(pScrn);
}
vb = (pointer)((char*)accel_state->vb_ptr+accel_state->vb_index*16);
diff --git a/src/r6xx_accel.c b/src/r6xx_accel.c
index 4aa46504..6e4c8eac 100644
--- a/src/r6xx_accel.c
+++ b/src/r6xx_accel.c
@@ -1188,7 +1188,7 @@ r600_cp_start(ScrnInfoPtr pScrn)
#if defined(XF86DRM_MODE)
if (info->cs) {
if (!r600_vb_get(pScrn))
- return FALSE;
+ return -1;
radeon_cs_space_reset_bos(info->cs);
radeon_cs_space_add_persistent_bo(info->cs, accel_state->shaders_bo,
RADEON_GEM_DOMAIN_VRAM, 0);
@@ -1198,10 +1198,12 @@ r600_cp_start(ScrnInfoPtr pScrn)
if (accel_state->src_bo[1])
radeon_cs_space_add_persistent_bo(info->cs, accel_state->src_bo[1],
RADEON_GEM_DOMAIN_VRAM, 0);
- radeon_cs_space_add_persistent_bo(info->cs, accel_state->dst_bo,
- RADEON_GEM_DOMAIN_VRAM, 0);
- radeon_cs_space_add_persistent_bo(info->cs, accel_state->vb_bo,
- RADEON_GEM_DOMAIN_GTT, 0);
+ if (accel_state->dst_bo)
+ radeon_cs_space_add_persistent_bo(info->cs, accel_state->dst_bo,
+ RADEON_GEM_DOMAIN_VRAM, 0);
+ if (accel_state->vb_bo)
+ radeon_cs_space_add_persistent_bo(info->cs, accel_state->vb_bo,
+ RADEON_GEM_DOMAIN_GTT, 0);
if (accel_state->copy_area_bo)
radeon_cs_space_add_persistent_bo(info->cs,
accel_state->copy_area_bo,