From: Roland Scheidegger Date: Thu, 3 Jun 2010 15:46:14 +0000 (+0200) Subject: Merge branch 'gallium-newclear' X-Git-Url: https://git.libre-soc.org/?p=mesa.git;a=commitdiff_plain;h=992382762a74fd834926fd2c3cd9e14a186e2dd5 Merge branch 'gallium-newclear' Conflicts: src/gallium/state_trackers/python/p_context.i --- 992382762a74fd834926fd2c3cd9e14a186e2dd5 diff --cc src/gallium/state_trackers/python/p_context.i index ff792279d2a,0294e769a63..cf0144b5dc6 --- a/src/gallium/state_trackers/python/p_context.i +++ b/src/gallium/state_trackers/python/p_context.i @@@ -414,29 -414,74 +414,56 @@@ error1 * Surface functions */ - void surface_copy(struct st_surface *dst, - unsigned destx, unsigned desty, - struct st_surface *src, - unsigned srcx, unsigned srcy, - unsigned width, unsigned height) + void resource_copy_region(struct pipe_resource *dst, + struct pipe_subresource subdst, + unsigned dstx, unsigned dsty, unsigned dstz, + struct pipe_resource *src, + struct pipe_subresource subsrc, + unsigned srcx, unsigned srcy, unsigned srcz, + unsigned width, unsigned height) { -/* XXX - struct pipe_surface *_dst = NULL; - struct pipe_surface *_src = NULL; - - _dst = st_pipe_surface(dst, PIPE_BIND_BLIT_DESTINATION); - if(!_dst) - SWIG_exception(SWIG_ValueError, "couldn't acquire destination surface for writing"); - - _src = st_pipe_surface(src, PIPE_BIND_BLIT_SOURCE); - if(!_src) - SWIG_exception(SWIG_ValueError, "couldn't acquire source surface for reading"); - - $self->pipe->surface_copy($self->pipe, _dst, destx, desty, _src, srcx, srcy, width, height); - - fail: - pipe_surface_reference(&_src, NULL); - pipe_surface_reference(&_dst, NULL); -*/ - struct pipe_subresource subdst, subsrc; - subsrc.face = src->face; - subsrc.level = src->level; - subdst.face = dst->face; - subdst.level = dst->level; - $self->pipe->resource_copy_region($self->pipe, dst->texture, subdst, destx, desty, dst->zslice, - src->texture, subsrc, srcx, srcy, src->zslice, width, height); + $self->pipe->resource_copy_region($self->pipe, + dst, subdst, dstx, dsty, dstz, + src, subsrc, srcx, srcy, srcz, + width, height); } - void resource_fill_region(struct pipe_resource *dst, - struct pipe_subresource subdst, - unsigned dstx, unsigned dsty, unsigned dstz, - unsigned width, unsigned height, - unsigned value) ++ + void clear_render_target(struct st_surface *dst, + float *rgba, + unsigned x, unsigned y, + unsigned width, unsigned height) { - $self->pipe->resource_fill_region($self->pipe, - dst, subdst, dstx, dsty, dstz, - width, height, value); + struct pipe_surface *_dst = NULL; + + _dst = st_pipe_surface(dst, PIPE_BIND_RENDER_TARGET); + if(!_dst) + SWIG_exception(SWIG_ValueError, "couldn't acquire destination surface for writing"); + + $self->pipe->clear_render_target($self->pipe, _dst, rgba, x, y, width, height); + + fail: + pipe_surface_reference(&_dst, NULL); + } + + void clear_depth_stencil(struct st_surface *dst, + unsigned clear_flags, + double depth, + unsigned stencil, + unsigned x, unsigned y, + unsigned width, unsigned height) + { + struct pipe_surface *_dst = NULL; + + _dst = st_pipe_surface(dst, PIPE_BIND_DEPTH_STENCIL); + if(!_dst) + SWIG_exception(SWIG_ValueError, "couldn't acquire destination surface for writing"); + + $self->pipe->clear_depth_stencil($self->pipe, _dst, clear_flags, depth, stencil, + x, y, width, height); + + fail: + pipe_surface_reference(&_dst, NULL); } %cstring_output_allocate_size(char **STRING, int *LENGTH, free(*$1));