xf86-video-intel: 4 commits - src/i830_driver.c src/i830.h src/i830_sdvo.c src/i830_video.c src/i965_render.c
Eric Anholt
anholt at kemper.freedesktop.org
Tue Apr 21 19:54:51 PDT 2009
src/i830.h | 1 +
src/i830_driver.c | 2 ++
src/i830_sdvo.c | 1 +
src/i830_video.c | 3 ++-
src/i965_render.c | 28 ++++++++++++----------------
5 files changed, 18 insertions(+), 17 deletions(-)
New commits:
commit ceb3a2eaf9090d67e4dfcbed188125108ceab78d
Author: Zdenek Kabelac <zdenek.kabelac at gmail.com>
Date: Tue Apr 21 18:58:23 2009 -0700
Remember allocated offscreenImages memory for freeing it in CloseScreen()
Signed-off-by: Zdenek Kabelac <zkabelac at redhat.com>
[anholt: renamed the member to match the variable name]
Signed-off-by: Eric Anholt <eric at anholt.net>
diff --git a/src/i830.h b/src/i830.h
index b252f56..5772f1d 100644
--- a/src/i830.h
+++ b/src/i830.h
@@ -431,6 +431,7 @@ typedef struct _I830Rec {
#ifdef I830_XV
/* For Xvideo */
i830_memory *overlay_regs;
+ void *offscreenImages; /**< remembered memory block for release */
#endif
#ifdef INTEL_XVMC
/* For XvMC */
diff --git a/src/i830_driver.c b/src/i830_driver.c
index f1ea511..2249a99 100644
--- a/src/i830_driver.c
+++ b/src/i830_driver.c
@@ -3700,6 +3700,8 @@ I830CloseScreen(int scrnIndex, ScreenPtr pScreen)
#ifdef I830_XV
i965_free_video(pScrn);
+ free(pI830->offscreenImages);
+ pI830->offscreenImages = NULL;
#endif
dri_bufmgr_destroy(pI830->bufmgr);
diff --git a/src/i830_video.c b/src/i830_video.c
index a62d7a1..f73c1f7 100644
--- a/src/i830_video.c
+++ b/src/i830_video.c
@@ -2886,11 +2886,12 @@ I830InitOffscreenImages(ScreenPtr pScreen)
ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
I830Ptr pI830 = I830PTR(pScrn);
- /* need to free this someplace */
if (!(offscreenImages = xalloc(sizeof(XF86OffscreenImageRec)))) {
return;
}
+ pI830->offscreenImages = offscreenImages;
+
offscreenImages[0].image = &Images[0];
offscreenImages[0].flags = VIDEO_OVERLAID_IMAGES /*| VIDEO_CLIP_TO_VIEWPORT*/;
offscreenImages[0].alloc_surface = I830AllocateSurface;
commit 701c6bef14b5d464847cc42c5ccb66fdeb157f1a
Author: Zdenek Kabelac <zdenek.kabelac at gmail.com>
Date: Tue Apr 21 18:53:07 2009 -0700
free allocated name inside sdvo_destroy
Signed-off-by: Zdenek Kabelac <zkabelac at redhat.com>
Signed-off-by: Eric Anholt <eric at anholt.net>
diff --git a/src/i830_sdvo.c b/src/i830_sdvo.c
index 41e8e59..a291824 100644
--- a/src/i830_sdvo.c
+++ b/src/i830_sdvo.c
@@ -1912,6 +1912,7 @@ i830_sdvo_destroy (xf86OutputPtr output)
xf86DestroyI2CBusRec (intel_output->pDDCBus, FALSE, FALSE);
xf86DestroyI2CDevRec (&dev_priv->d, FALSE);
xf86DestroyI2CBusRec (dev_priv->d.pI2CBus, TRUE, TRUE);
+ free(dev_priv->name);
if (output->randr_output) {
RROutputPtr randr_output = output->randr_output;
commit fe71217ca86eb7ae8081bf3e26d30f2002d27691
Author: Zdenek Kabelac <zdenek.kabelac at gmail.com>
Date: Tue Apr 21 18:51:02 2009 -0700
Unreference allocated bos in i965 render error paths
Signed-off-by: Zdenek Kabelac <zkabelac at redhat.com>
Signed-off-by: Eric Anholt <eric at anholt.net>
diff --git a/src/i965_render.c b/src/i965_render.c
index 704db97..e527f11 100644
--- a/src/i965_render.c
+++ b/src/i965_render.c
@@ -1285,8 +1285,10 @@ i965_prepare_composite(int op, PicturePtr pSrcPicture,
surface_state_bo = dri_bo_alloc(pI830->bufmgr, "surface_state",
3 * sizeof (brw_surface_state_padded),
4096);
- if (dri_bo_map(surface_state_bo, 1) != 0)
+ if (dri_bo_map(surface_state_bo, 1) != 0) {
+ dri_bo_unreference(surface_state_bo);
return FALSE;
+ }
/* Set up the state buffer for the destination surface */
i965_set_picture_surface_state(surface_state_bo, 0,
pDstPicture, pDst, TRUE);
@@ -1305,6 +1307,7 @@ i965_prepare_composite(int op, PicturePtr pSrcPicture,
binding_table_bo = dri_bo_alloc(pI830->bufmgr, "binding_table",
3 * sizeof(uint32_t), 4096);
if (dri_bo_map (binding_table_bo, 1) != 0) {
+ dri_bo_unreference(binding_table_bo);
dri_bo_unreference(surface_state_bo);
return FALSE;
}
commit b8b6ca830b1fd6956c76a5417462ca55174cb881
Author: Zdenek Kabelac <zdenek.kabelac at gmail.com>
Date: Tue Apr 21 18:47:03 2009 -0700
Fix leak of some 965 render state on VT switch.
Signed-off-by: Zdenek Kabelac <zkabelac at redhat.com>
[anholt: fixed up unneeded != NULL checks]
Signed-off-by: Eric Anholt <eric at anholt.net>
diff --git a/src/i965_render.c b/src/i965_render.c
index c3df9d2..704db97 100644
--- a/src/i965_render.c
+++ b/src/i965_render.c
@@ -1708,35 +1708,28 @@ gen4_render_state_cleanup(ScrnInfoPtr pScrn)
I830Ptr pI830 = I830PTR(pScrn);
struct gen4_render_state *render_state= pI830->gen4_render_state;
int i, j, k, l, m;
+ gen4_composite_op *composite_op = &render_state->composite_op;
- if (render_state->vertex_buffer_bo) {
- dri_bo_unreference (render_state->vertex_buffer_bo);
- render_state->vertex_buffer_bo = NULL;
- }
+ drm_intel_bo_unreference(composite_op->binding_table_bo);
+ drm_intel_bo_unreference(render_state->vertex_buffer_bo);
drm_intel_bo_unreference(render_state->vs_state_bo);
- render_state->vs_state_bo = NULL;
drm_intel_bo_unreference(render_state->sf_state_bo);
- render_state->sf_state_bo = NULL;
drm_intel_bo_unreference(render_state->sf_mask_state_bo);
- render_state->sf_mask_state_bo = NULL;
- for (i = 0; i < WM_KERNEL_COUNT; i++) {
+ for (i = 0; i < WM_KERNEL_COUNT; i++)
drm_intel_bo_unreference(render_state->wm_kernel_bo[i]);
- render_state->wm_kernel_bo[i] = NULL;
- }
for (i = 0; i < SAMPLER_STATE_FILTER_COUNT; i++)
for (j = 0; j < SAMPLER_STATE_EXTEND_COUNT; j++)
for (k = 0; k < SAMPLER_STATE_FILTER_COUNT; k++)
for (l = 0; l < SAMPLER_STATE_EXTEND_COUNT; l++)
- for (m = 0; m < WM_KERNEL_COUNT; m++) {
+ for (m = 0; m < WM_KERNEL_COUNT; m++)
drm_intel_bo_unreference(render_state->wm_state_bo[m][i][j][k][l]);
- render_state->wm_state_bo[m][i][j][k][l] = NULL;
- }
drm_intel_bo_unreference(render_state->cc_state_bo);
- render_state->cc_state_bo = NULL;
drm_intel_bo_unreference(render_state->sip_kernel_bo);
- render_state->sip_kernel_bo = NULL;
+
+ free(pI830->gen4_render_state);
+ pI830->gen4_render_state = NULL;
}
More information about the xorg-commit
mailing list