Mesa (gallium-0.2): g3dvl: Ref count everywhere.

Younes Manton ymanton at kemper.freedesktop.org
Mon Jan 19 02:48:32 UTC 2009


Module: Mesa
Branch: gallium-0.2
Commit: 9ddca0b41d16a68beebddc7765fc2e354b6bc6fe
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=9ddca0b41d16a68beebddc7765fc2e354b6bc6fe

Author: Younes Manton <younes.m at gmail.com>
Date:   Sun Jan 18 18:11:18 2009 -0500

g3dvl: Ref count everywhere.

---

 src/gallium/state_trackers/g3dvl/vl_basic_csc.c    |   50 +++++++++++---------
 .../state_trackers/g3dvl/vl_r16snorm_mc_buf.c      |   46 +++++++++---------
 src/gallium/state_trackers/g3dvl/vl_surface.c      |    2 +-
 3 files changed, 52 insertions(+), 46 deletions(-)

diff --git a/src/gallium/state_trackers/g3dvl/vl_basic_csc.c b/src/gallium/state_trackers/g3dvl/vl_basic_csc.c
index c685bc9..da119ff 100644
--- a/src/gallium/state_trackers/g3dvl/vl_basic_csc.c
+++ b/src/gallium/state_trackers/g3dvl/vl_basic_csc.c
@@ -71,7 +71,10 @@ static int vlResizeFrameBuffer
 	basic_csc->viewport.translate[3] = 0;
 	
 	if (basic_csc->framebuffer_tex)
-		pipe_texture_release(&basic_csc->framebuffer_tex);
+	{
+		pipe_surface_reference(&basic_csc->framebuffer.cbufs[0], NULL);
+		pipe_texture_reference(&basic_csc->framebuffer_tex, NULL);
+	}
 	
 	memset(&template, 0, sizeof(struct pipe_texture));
 	template.target = PIPE_TEXTURE_2D;
@@ -153,9 +156,9 @@ static int vlPutPictureCSC
 	basic_csc = (struct vlBasicCSC*)csc;
 	pipe = basic_csc->pipe;
 
-	vs_consts = pipe->winsys->buffer_map
+	vs_consts = pipe_buffer_map
 	(
-		pipe->winsys,
+		pipe->screen,
 		basic_csc->vs_const_buf.buffer,
 		PIPE_BUFFER_USAGE_CPU_WRITE | PIPE_BUFFER_USAGE_DISCARD
 	);
@@ -178,7 +181,7 @@ static int vlPutPictureCSC
 	vs_consts->src_trans.z = 0;
 	vs_consts->src_trans.w = 0;
 
-	pipe->winsys->buffer_unmap(pipe->winsys, basic_csc->vs_const_buf.buffer);
+	pipe_buffer_unmap(pipe->screen, basic_csc->vs_const_buf.buffer);
 
 	pipe->set_sampler_textures(pipe, 1, &surface->texture);
 	pipe->draw_arrays(pipe, PIPE_PRIM_TRIANGLE_STRIP, 0, 4);
@@ -225,17 +228,20 @@ static int vlDestroy
 	pipe = basic_csc->pipe;
 
 	if (basic_csc->framebuffer_tex)
-		pipe_texture_release(&basic_csc->framebuffer_tex);
+	{
+		pipe_surface_reference(&basic_csc->framebuffer.cbufs[0], NULL);
+		pipe_texture_reference(&basic_csc->framebuffer_tex, NULL);
+	}
 
 	pipe->delete_sampler_state(pipe, basic_csc->sampler);
 	pipe->delete_vs_state(pipe, basic_csc->vertex_shader);
 	pipe->delete_fs_state(pipe, basic_csc->fragment_shader);
 
 	for (i = 0; i < 2; ++i)
-		pipe->winsys->buffer_destroy(pipe->winsys, basic_csc->vertex_bufs[i].buffer);
+		pipe_buffer_reference(pipe->screen, &basic_csc->vertex_bufs[i].buffer, NULL);
 
-	pipe->winsys->buffer_destroy(pipe->winsys, basic_csc->vs_const_buf.buffer);
-	pipe->winsys->buffer_destroy(pipe->winsys, basic_csc->fs_const_buf.buffer);
+	pipe_buffer_reference(pipe->screen, &basic_csc->vs_const_buf.buffer, NULL);
+	pipe_buffer_reference(pipe->screen, &basic_csc->fs_const_buf.buffer, NULL);
 
 	FREE(basic_csc);
 
@@ -542,9 +548,9 @@ static int vlCreateDataBufs
 	csc->vertex_bufs[0].pitch = sizeof(struct vlVertex2f);
 	csc->vertex_bufs[0].max_index = 3;
 	csc->vertex_bufs[0].buffer_offset = 0;
-	csc->vertex_bufs[0].buffer = pipe->winsys->buffer_create
+	csc->vertex_bufs[0].buffer = pipe_buffer_create
 	(
-		pipe->winsys,
+		pipe->screen,
 		1,
 		PIPE_BUFFER_USAGE_VERTEX,
 		sizeof(struct vlVertex2f) * 4
@@ -552,12 +558,12 @@ static int vlCreateDataBufs
 
 	memcpy
 	(
-		pipe->winsys->buffer_map(pipe->winsys, csc->vertex_bufs[0].buffer, PIPE_BUFFER_USAGE_CPU_WRITE),
+		pipe_buffer_map(pipe->screen, csc->vertex_bufs[0].buffer, PIPE_BUFFER_USAGE_CPU_WRITE),
 		surface_verts,
 		sizeof(struct vlVertex2f) * 4
 	);
 
-	pipe->winsys->buffer_unmap(pipe->winsys, csc->vertex_bufs[0].buffer);
+	pipe_buffer_unmap(pipe->screen, csc->vertex_bufs[0].buffer);
 
 	csc->vertex_elems[0].src_offset = 0;
 	csc->vertex_elems[0].vertex_buffer_index = 0;
@@ -571,9 +577,9 @@ static int vlCreateDataBufs
 	csc->vertex_bufs[1].pitch = sizeof(struct vlVertex2f);
 	csc->vertex_bufs[1].max_index = 3;
 	csc->vertex_bufs[1].buffer_offset = 0;
-	csc->vertex_bufs[1].buffer = pipe->winsys->buffer_create
+	csc->vertex_bufs[1].buffer = pipe_buffer_create
 	(
-		pipe->winsys,
+		pipe->screen,
 		1,
 		PIPE_BUFFER_USAGE_VERTEX,
 		sizeof(struct vlVertex2f) * 4
@@ -581,12 +587,12 @@ static int vlCreateDataBufs
 
 	memcpy
 	(
-		pipe->winsys->buffer_map(pipe->winsys, csc->vertex_bufs[1].buffer, PIPE_BUFFER_USAGE_CPU_WRITE),
+		pipe_buffer_map(pipe->screen, csc->vertex_bufs[1].buffer, PIPE_BUFFER_USAGE_CPU_WRITE),
 		surface_texcoords,
 		sizeof(struct vlVertex2f) * 4
 	);
 
-	pipe->winsys->buffer_unmap(pipe->winsys, csc->vertex_bufs[1].buffer);
+	pipe_buffer_unmap(pipe->screen, csc->vertex_bufs[1].buffer);
 
 	csc->vertex_elems[1].src_offset = 0;
 	csc->vertex_elems[1].vertex_buffer_index = 1;
@@ -598,9 +604,9 @@ static int vlCreateDataBufs
 	 * Const buffer contains scaling and translation vectors
 	 */
 	csc->vs_const_buf.size = sizeof(struct vlVertexShaderConsts);
-	csc->vs_const_buf.buffer = pipe->winsys->buffer_create
+	csc->vs_const_buf.buffer = pipe_buffer_create
 	(
-		pipe->winsys,
+		pipe->screen,
 		1,
 		PIPE_BUFFER_USAGE_CONSTANT | PIPE_BUFFER_USAGE_DISCARD,
 		csc->vs_const_buf.size
@@ -611,9 +617,9 @@ static int vlCreateDataBufs
 	 * Const buffer contains the color conversion matrix and bias vectors
 	 */
 	csc->fs_const_buf.size = sizeof(struct vlFragmentShaderConsts);
-	csc->fs_const_buf.buffer = pipe->winsys->buffer_create
+	csc->fs_const_buf.buffer = pipe_buffer_create
 	(
-		pipe->winsys,
+		pipe->screen,
 		1,
 		PIPE_BUFFER_USAGE_CONSTANT,
 		csc->fs_const_buf.size
@@ -625,12 +631,12 @@ static int vlCreateDataBufs
 	 */
 	memcpy
 	(
-		pipe->winsys->buffer_map(pipe->winsys, csc->fs_const_buf.buffer, PIPE_BUFFER_USAGE_CPU_WRITE),
+		pipe_buffer_map(pipe->screen, csc->fs_const_buf.buffer, PIPE_BUFFER_USAGE_CPU_WRITE),
 		&bt_601_full,
 		sizeof(struct vlFragmentShaderConsts)
 	);
 
-	pipe->winsys->buffer_unmap(pipe->winsys, csc->fs_const_buf.buffer);
+	pipe_buffer_unmap(pipe->screen, csc->fs_const_buf.buffer);
 
 	return 0;
 }
diff --git a/src/gallium/state_trackers/g3dvl/vl_r16snorm_mc_buf.c b/src/gallium/state_trackers/g3dvl/vl_r16snorm_mc_buf.c
index 2e790bb..0c1ce3c 100644
--- a/src/gallium/state_trackers/g3dvl/vl_r16snorm_mc_buf.c
+++ b/src/gallium/state_trackers/g3dvl/vl_r16snorm_mc_buf.c
@@ -599,17 +599,17 @@ static int vlFlush
 		struct vlMacroBlockVertexStream0	*ycbcr_vb;
 		struct vlVertex2f			*ref_vb[2];
 
-		ycbcr_vb = (struct vlMacroBlockVertexStream0*)mc->pipe->winsys->buffer_map
+		ycbcr_vb = (struct vlMacroBlockVertexStream0*)pipe_buffer_map
 		(
-			mc->pipe->winsys,
+			pipe->screen,
 			mc->vertex_bufs.ycbcr.buffer,
 			PIPE_BUFFER_USAGE_CPU_WRITE | PIPE_BUFFER_USAGE_DISCARD
 		);
 
 		for (i = 0; i < 2; ++i)
-			ref_vb[i] = (struct vlVertex2f*)mc->pipe->winsys->buffer_map
+			ref_vb[i] = (struct vlVertex2f*)pipe_buffer_map
 			(
-				mc->pipe->winsys,
+				pipe->screen,
 				mc->vertex_bufs.ref[i].buffer,
 				PIPE_BUFFER_USAGE_CPU_WRITE | PIPE_BUFFER_USAGE_DISCARD
 			);
@@ -623,15 +623,15 @@ static int vlFlush
 			offset[mb_type_ex]++;
 		}
 
-		mc->pipe->winsys->buffer_unmap(mc->pipe->winsys, mc->vertex_bufs.ycbcr.buffer);
+		pipe_buffer_unmap(pipe->screen, mc->vertex_bufs.ycbcr.buffer);
 		for (i = 0; i < 2; ++i)
-			mc->pipe->winsys->buffer_unmap(mc->pipe->winsys, mc->vertex_bufs.ref[i].buffer);
+			pipe_buffer_unmap(pipe->screen, mc->vertex_bufs.ref[i].buffer);
 	}
 
 	for (i = 0; i < 3; ++i)
 	{
 		pipe_surface_unmap(mc->tex_surface[i]);
-		mc->pipe->screen->tex_surface_release(mc->pipe->screen, &mc->tex_surface[i]);
+		pipe_surface_reference(&mc->tex_surface[i], NULL);
 	}
 
 	mc->render_target.cbufs[0] = pipe->screen->get_tex_surface
@@ -653,7 +653,7 @@ static int vlFlush
 	vs_consts->denorm.x = mc->buffered_surface->texture->width[0];
 	vs_consts->denorm.y = mc->buffered_surface->texture->height[0];
 
-	pipe->winsys->buffer_unmap(pipe->winsys, mc->vs_const_buf.buffer);
+	pipe_buffer_unmap(pipe->screen, mc->vs_const_buf.buffer);
 	pipe->set_constant_buffer(pipe, PIPE_SHADER_VERTEX, 0, &mc->vs_const_buf);
 	pipe->set_constant_buffer(pipe, PIPE_SHADER_FRAGMENT, 0, &mc->fs_const_buf);
 
@@ -757,7 +757,7 @@ static int vlFlush
 	}
 
 	pipe->flush(pipe, PIPE_FLUSH_RENDER_CACHE, &mc->buffered_surface->render_fence);
-	pipe->screen->tex_surface_release(pipe->screen, &mc->render_target.cbufs[0]);
+	pipe_surface_reference(&mc->render_target.cbufs[0], NULL);
 
 	for (i = 0; i < 3; ++i)
 		mc->zero_block[i].x = -1.0f;
@@ -849,11 +849,11 @@ static int vlDestroy
 		pipe->delete_sampler_state(pipe, mc->samplers.all[i]);
 
 	for (i = 0; i < 3; ++i)
-		pipe->winsys->buffer_destroy(pipe->winsys, mc->vertex_bufs.all[i].buffer);
+		pipe_buffer_reference(pipe->screen, &mc->vertex_bufs.all[i].buffer, NULL);
 
 	/* Textures 3 & 4 are not created directly, no need to release them here */
 	for (i = 0; i < 3; ++i)
-		pipe_texture_release(&mc->textures.all[i]);
+		pipe_texture_reference(&mc->textures.all[i], NULL);
 
 	pipe->delete_vs_state(pipe, mc->i_vs);
 	pipe->delete_fs_state(pipe, mc->i_fs);
@@ -866,8 +866,8 @@ static int vlDestroy
 		pipe->delete_fs_state(pipe, mc->b_fs[i]);
 	}
 
-	pipe->winsys->buffer_destroy(pipe->winsys, mc->vs_const_buf.buffer);
-	pipe->winsys->buffer_destroy(pipe->winsys, mc->fs_const_buf.buffer);
+	pipe_buffer_reference(pipe->screen, &mc->vs_const_buf.buffer, NULL);
+	pipe_buffer_reference(pipe->screen, &mc->fs_const_buf.buffer, NULL);
 
 	FREE(mc->macroblocks);
 	FREE(mc);
@@ -909,9 +909,9 @@ static int vlCreateDataBufs
 	mc->vertex_bufs.ycbcr.pitch = sizeof(struct vlVertex2f) * 4;
 	mc->vertex_bufs.ycbcr.max_index = 24 * mc->macroblocks_per_picture - 1;
 	mc->vertex_bufs.ycbcr.buffer_offset = 0;
-	mc->vertex_bufs.ycbcr.buffer = pipe->winsys->buffer_create
+	mc->vertex_bufs.ycbcr.buffer = pipe_buffer_create
 	(
-		pipe->winsys,
+		pipe->screen,
 		DEFAULT_BUF_ALIGNMENT,
 		PIPE_BUFFER_USAGE_VERTEX | PIPE_BUFFER_USAGE_DISCARD,
 		sizeof(struct vlVertex2f) * 4 * 24 * mc->macroblocks_per_picture
@@ -922,9 +922,9 @@ static int vlCreateDataBufs
 		mc->vertex_bufs.all[i].pitch = sizeof(struct vlVertex2f) * 2;
 		mc->vertex_bufs.all[i].max_index = 24 * mc->macroblocks_per_picture - 1;
 		mc->vertex_bufs.all[i].buffer_offset = 0;
-		mc->vertex_bufs.all[i].buffer = pipe->winsys->buffer_create
+		mc->vertex_bufs.all[i].buffer = pipe_buffer_create
 		(
-			pipe->winsys,
+			pipe->screen,
 			DEFAULT_BUF_ALIGNMENT,
 			PIPE_BUFFER_USAGE_VERTEX | PIPE_BUFFER_USAGE_DISCARD,
 			sizeof(struct vlVertex2f) * 2 * 24 * mc->macroblocks_per_picture
@@ -981,18 +981,18 @@ static int vlCreateDataBufs
 
 	/* Create our constant buffer */
 	mc->vs_const_buf.size = sizeof(struct vlVertexShaderConsts);
-	mc->vs_const_buf.buffer = pipe->winsys->buffer_create
+	mc->vs_const_buf.buffer = pipe_buffer_create
 	(
-		pipe->winsys,
+		pipe->screen,
 		DEFAULT_BUF_ALIGNMENT,
 		PIPE_BUFFER_USAGE_CONSTANT | PIPE_BUFFER_USAGE_DISCARD,
 		mc->vs_const_buf.size
 	);
 
 	mc->fs_const_buf.size = sizeof(struct vlFragmentShaderConsts);
-	mc->fs_const_buf.buffer = pipe->winsys->buffer_create
+	mc->fs_const_buf.buffer = pipe_buffer_create
 	(
-		pipe->winsys,
+		pipe->screen,
 		DEFAULT_BUF_ALIGNMENT,
 		PIPE_BUFFER_USAGE_CONSTANT,
 		mc->fs_const_buf.size
@@ -1000,12 +1000,12 @@ static int vlCreateDataBufs
 
 	memcpy
 	(
-		pipe->winsys->buffer_map(pipe->winsys, mc->fs_const_buf.buffer, PIPE_BUFFER_USAGE_CPU_WRITE),
+		pipe_buffer_map(pipe->screen, mc->fs_const_buf.buffer, PIPE_BUFFER_USAGE_CPU_WRITE),
 		&fs_consts,
 		sizeof(struct vlFragmentShaderConsts)
 	);
 
-	pipe->winsys->buffer_unmap(pipe->winsys, mc->fs_const_buf.buffer);
+	pipe_buffer_unmap(pipe->screen, mc->fs_const_buf.buffer);
 
 	mc->macroblocks = MALLOC(sizeof(struct vlMpeg2MacroBlock) * mc->macroblocks_per_picture);
 
diff --git a/src/gallium/state_trackers/g3dvl/vl_surface.c b/src/gallium/state_trackers/g3dvl/vl_surface.c
index 612438f..0fa7b25 100644
--- a/src/gallium/state_trackers/g3dvl/vl_surface.c
+++ b/src/gallium/state_trackers/g3dvl/vl_surface.c
@@ -69,7 +69,7 @@ int vlDestroySurface
 {
 	assert(surface);
 
-	pipe_texture_release(&surface->texture);
+	pipe_texture_reference(&surface->texture, NULL);
 	FREE(surface);
 
 	return 0;




More information about the mesa-commit mailing list