summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYounes Manton <[email protected]>2009-01-18 18:11:18 -0500
committerYounes Manton <[email protected]>2009-01-18 21:40:11 -0500
commit9ddca0b41d16a68beebddc7765fc2e354b6bc6fe (patch)
treea32162c0c1713242967e839c75c9f90d8422c4c1
parent3933d338f7fd1a7709d7971036671920f65fcd86 (diff)
g3dvl: Ref count everywhere.
-rw-r--r--src/gallium/state_trackers/g3dvl/vl_basic_csc.c50
-rw-r--r--src/gallium/state_trackers/g3dvl/vl_r16snorm_mc_buf.c46
-rw-r--r--src/gallium/state_trackers/g3dvl/vl_surface.c2
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 c685bc9c700..da119ff1bdb 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 2e790bb3af1..0c1ce3cd8dd 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 612438f2ac3..0fa7b25b92e 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;