gallium: Remove do_flip argument from surface_copy
I should have gotten most uses and implementation correctly fixed, but things might break. Feel free to blame me.
This commit is contained in:
parent
f786e46cf4
commit
f500f3a72c
|
@ -328,7 +328,7 @@ util_blit_pixels(struct blit_state *ctx,
|
|||
|
||||
if(dst->format == src->format && (dstX1 - dstX0) == srcW && (dstY1 - dstY0) == srcH) {
|
||||
/* FIXME: this will most surely fail for overlapping rectangles */
|
||||
pipe->surface_copy(pipe, FALSE,
|
||||
pipe->surface_copy(pipe,
|
||||
dst, dstX0, dstY0, /* dest */
|
||||
src, srcX0, srcY0, /* src */
|
||||
srcW, srcH); /* size */
|
||||
|
@ -362,7 +362,7 @@ util_blit_pixels(struct blit_state *ctx,
|
|||
PIPE_BUFFER_USAGE_GPU_WRITE);
|
||||
|
||||
/* load temp texture */
|
||||
pipe->surface_copy(pipe, FALSE,
|
||||
pipe->surface_copy(pipe,
|
||||
texSurf, 0, 0, /* dest */
|
||||
src, srcLeft, srcTop, /* src */
|
||||
srcW, srcH); /* size */
|
||||
|
|
|
@ -30,9 +30,21 @@
|
|||
#include "cell_surface.h"
|
||||
|
||||
|
||||
static void
|
||||
cell_surface_copy(struct pipe_context *pipe,
|
||||
struct pipe_surface *dest, unsigned destx, unsigned desty,
|
||||
struct pipe_surface *src, unsigned srcx, unsigned srcy,
|
||||
unsigned width, unsigned height)
|
||||
{
|
||||
util_surface_copy(pipe, FALSE,
|
||||
dest, destx, desty,
|
||||
src, srcx, srcy,
|
||||
width, height);
|
||||
}
|
||||
|
||||
void
|
||||
cell_init_surface_functions(struct cell_context *cell)
|
||||
{
|
||||
cell->pipe.surface_copy = util_surface_copy;
|
||||
cell->pipe.surface_copy = cell_surface_copy;
|
||||
cell->pipe.surface_fill = util_surface_fill;
|
||||
}
|
||||
|
|
|
@ -41,7 +41,6 @@
|
|||
*/
|
||||
static void
|
||||
i915_surface_copy(struct pipe_context *pipe,
|
||||
boolean do_flip,
|
||||
struct pipe_surface *dst,
|
||||
unsigned dstx, unsigned dsty,
|
||||
struct pipe_surface *src,
|
||||
|
@ -58,7 +57,7 @@ i915_surface_copy(struct pipe_context *pipe,
|
|||
assert( dst_tex->base.block.height == 1 );
|
||||
|
||||
i915_copy_blit( i915_context(pipe),
|
||||
do_flip,
|
||||
FALSE,
|
||||
dst_tex->base.block.size,
|
||||
(unsigned short) src_tex->stride, src_tex->buffer, src->offset,
|
||||
(unsigned short) dst_tex->stride, dst_tex->buffer, dst->offset,
|
||||
|
|
|
@ -41,7 +41,6 @@
|
|||
*/
|
||||
static void
|
||||
brw_surface_copy(struct pipe_context *pipe,
|
||||
boolean do_flip,
|
||||
struct pipe_surface *dst,
|
||||
unsigned dstx, unsigned dsty,
|
||||
struct pipe_surface *src,
|
||||
|
@ -64,11 +63,11 @@ brw_surface_copy(struct pipe_context *pipe,
|
|||
pipe_copy_rect(dst_map,
|
||||
&dst->block,
|
||||
dst->stride,
|
||||
dstx, dsty,
|
||||
width, height,
|
||||
src_map,
|
||||
do_flip ? -(int) src->stride : src->stride,
|
||||
srcx, do_flip ? height - 1 - srcy : srcy);
|
||||
dstx, dsty,
|
||||
width, height,
|
||||
src_map,
|
||||
src->stride,
|
||||
srcx, srcy);
|
||||
|
||||
pipe->screen->surface_unmap(pipe->screen, src);
|
||||
pipe->screen->surface_unmap(pipe->screen, dst);
|
||||
|
@ -79,7 +78,7 @@ brw_surface_copy(struct pipe_context *pipe,
|
|||
assert(dst->block.width == 1);
|
||||
assert(dst->block.height == 1);
|
||||
brw_copy_blit(brw_context(pipe),
|
||||
do_flip,
|
||||
FALSE,
|
||||
dst->block.size,
|
||||
(short) src->stride/src->block.size, src_tex->buffer, src->offset, FALSE,
|
||||
(short) dst->stride/dst->block.size, dst_tex->buffer, dst->offset, FALSE,
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
#include "util/u_tile.h"
|
||||
|
||||
static void
|
||||
nv04_surface_copy(struct pipe_context *pipe, boolean do_flip,
|
||||
nv04_surface_copy(struct pipe_context *pipe,
|
||||
struct pipe_surface *dest, unsigned destx, unsigned desty,
|
||||
struct pipe_surface *src, unsigned srcx, unsigned srcy,
|
||||
unsigned width, unsigned height)
|
||||
|
@ -41,15 +41,6 @@ nv04_surface_copy(struct pipe_context *pipe, boolean do_flip,
|
|||
struct nv04_context *nv04 = nv04_context(pipe);
|
||||
struct nv04_surface_2d *eng2d = nv04->screen->eng2d;
|
||||
|
||||
if (do_flip) {
|
||||
desty += height;
|
||||
while (height--) {
|
||||
eng2d->copy(eng2d, dest, destx, desty--, src,
|
||||
srcx, srcy++, width, 1);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
eng2d->copy(eng2d, dest, destx, desty, src, srcx, srcy, width, height);
|
||||
}
|
||||
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
#include "util/u_tile.h"
|
||||
|
||||
static void
|
||||
nv10_surface_copy(struct pipe_context *pipe, boolean do_flip,
|
||||
nv10_surface_copy(struct pipe_context *pipe,
|
||||
struct pipe_surface *dest, unsigned destx, unsigned desty,
|
||||
struct pipe_surface *src, unsigned srcx, unsigned srcy,
|
||||
unsigned width, unsigned height)
|
||||
|
@ -41,15 +41,6 @@ nv10_surface_copy(struct pipe_context *pipe, boolean do_flip,
|
|||
struct nv10_context *nv10 = nv10_context(pipe);
|
||||
struct nv04_surface_2d *eng2d = nv10->screen->eng2d;
|
||||
|
||||
if (do_flip) {
|
||||
desty += height;
|
||||
while (height--) {
|
||||
eng2d->copy(eng2d, dest, destx, desty--, src,
|
||||
srcx, srcy++, width, 1);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
eng2d->copy(eng2d, dest, destx, desty, src, srcx, srcy, width, height);
|
||||
}
|
||||
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
#include "util/u_tile.h"
|
||||
|
||||
static void
|
||||
nv20_surface_copy(struct pipe_context *pipe, boolean do_flip,
|
||||
nv20_surface_copy(struct pipe_context *pipe,
|
||||
struct pipe_surface *dest, unsigned destx, unsigned desty,
|
||||
struct pipe_surface *src, unsigned srcx, unsigned srcy,
|
||||
unsigned width, unsigned height)
|
||||
|
@ -41,15 +41,6 @@ nv20_surface_copy(struct pipe_context *pipe, boolean do_flip,
|
|||
struct nv20_context *nv20 = nv20_context(pipe);
|
||||
struct nv04_surface_2d *eng2d = nv20->screen->eng2d;
|
||||
|
||||
if (do_flip) {
|
||||
desty += height;
|
||||
while (height--) {
|
||||
eng2d->copy(eng2d, dest, destx, desty--, src,
|
||||
srcx, srcy++, width, 1);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
eng2d->copy(eng2d, dest, destx, desty, src, srcx, srcy, width, height);
|
||||
}
|
||||
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
#include "util/u_tile.h"
|
||||
|
||||
static void
|
||||
nv30_surface_copy(struct pipe_context *pipe, boolean do_flip,
|
||||
nv30_surface_copy(struct pipe_context *pipe,
|
||||
struct pipe_surface *dest, unsigned destx, unsigned desty,
|
||||
struct pipe_surface *src, unsigned srcx, unsigned srcy,
|
||||
unsigned width, unsigned height)
|
||||
|
@ -41,15 +41,6 @@ nv30_surface_copy(struct pipe_context *pipe, boolean do_flip,
|
|||
struct nv30_context *nv30 = nv30_context(pipe);
|
||||
struct nv04_surface_2d *eng2d = nv30->screen->eng2d;
|
||||
|
||||
if (do_flip) {
|
||||
desty += height;
|
||||
while (height--) {
|
||||
eng2d->copy(eng2d, dest, destx, desty--, src,
|
||||
srcx, srcy++, width, 1);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
eng2d->copy(eng2d, dest, destx, desty, src, srcx, srcy, width, height);
|
||||
}
|
||||
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
#include "util/u_tile.h"
|
||||
|
||||
static void
|
||||
nv40_surface_copy(struct pipe_context *pipe, boolean do_flip,
|
||||
nv40_surface_copy(struct pipe_context *pipe,
|
||||
struct pipe_surface *dest, unsigned destx, unsigned desty,
|
||||
struct pipe_surface *src, unsigned srcx, unsigned srcy,
|
||||
unsigned width, unsigned height)
|
||||
|
@ -41,15 +41,6 @@ nv40_surface_copy(struct pipe_context *pipe, boolean do_flip,
|
|||
struct nv40_context *nv40 = nv40_context(pipe);
|
||||
struct nv04_surface_2d *eng2d = nv40->screen->eng2d;
|
||||
|
||||
if (do_flip) {
|
||||
desty += height;
|
||||
while (height--) {
|
||||
eng2d->copy(eng2d, dest, destx, desty--, src,
|
||||
srcx, srcy++, width, 1);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
eng2d->copy(eng2d, dest, destx, desty, src, srcx, srcy, width, height);
|
||||
}
|
||||
|
||||
|
|
|
@ -144,7 +144,7 @@ nv50_surface_do_copy(struct nv50_screen *screen, struct pipe_surface *dst,
|
|||
}
|
||||
|
||||
static void
|
||||
nv50_surface_copy(struct pipe_context *pipe, boolean flip,
|
||||
nv50_surface_copy(struct pipe_context *pipe,
|
||||
struct pipe_surface *dest, unsigned destx, unsigned desty,
|
||||
struct pipe_surface *src, unsigned srcx, unsigned srcy,
|
||||
unsigned width, unsigned height)
|
||||
|
@ -154,16 +154,8 @@ nv50_surface_copy(struct pipe_context *pipe, boolean flip,
|
|||
|
||||
assert(src->format == dest->format);
|
||||
|
||||
if (flip) {
|
||||
desty += height;
|
||||
while (height--) {
|
||||
nv50_surface_do_copy(screen, dest, destx, desty--, src,
|
||||
srcx, srcy++, width, 1);
|
||||
}
|
||||
} else {
|
||||
nv50_surface_do_copy(screen, dest, destx, desty, src, srcx,
|
||||
nv50_surface_do_copy(screen, dest, destx, desty, src, srcx,
|
||||
srcy, width, height);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -253,7 +253,6 @@ static void r300_surface_fill(struct pipe_context* pipe,
|
|||
}
|
||||
|
||||
static void r300_surface_copy(struct pipe_context* pipe,
|
||||
boolean do_flip,
|
||||
struct pipe_surface* dest,
|
||||
unsigned destx, unsigned desty,
|
||||
struct pipe_surface* src,
|
||||
|
@ -272,7 +271,7 @@ static void r300_surface_copy(struct pipe_context* pipe,
|
|||
|
||||
if (TRUE) {
|
||||
debug_printf("r300: Falling back on surface_copy\n");
|
||||
return util_surface_copy(pipe, do_flip, dest, destx, desty, src,
|
||||
return util_surface_copy(pipe, FALSE, dest, destx, desty, src,
|
||||
srcx, srcy, w, h);
|
||||
}
|
||||
#if 0
|
||||
|
|
|
@ -29,10 +29,21 @@
|
|||
#include "sp_context.h"
|
||||
|
||||
|
||||
static void
|
||||
sp_surface_copy(struct pipe_context *pipe,
|
||||
struct pipe_surface *dest, unsigned destx, unsigned desty,
|
||||
struct pipe_surface *src, unsigned srcx, unsigned srcy,
|
||||
unsigned width, unsigned height)
|
||||
{
|
||||
util_surface_copy(pipe, FALSE,
|
||||
dest, destx, desty,
|
||||
src, srcx, srcy,
|
||||
width, height);
|
||||
}
|
||||
|
||||
void
|
||||
sp_init_surface_functions(struct softpipe_context *sp)
|
||||
{
|
||||
sp->pipe.surface_copy = util_surface_copy;
|
||||
sp->pipe.surface_copy = sp_surface_copy;
|
||||
sp->pipe.surface_fill = util_surface_fill;
|
||||
}
|
||||
|
|
|
@ -911,7 +911,6 @@ trace_context_set_vertex_elements(struct pipe_context *_pipe,
|
|||
|
||||
static INLINE void
|
||||
trace_context_surface_copy(struct pipe_context *_pipe,
|
||||
boolean do_flip,
|
||||
struct pipe_surface *dest,
|
||||
unsigned destx, unsigned desty,
|
||||
struct pipe_surface *src,
|
||||
|
@ -927,7 +926,6 @@ trace_context_surface_copy(struct pipe_context *_pipe,
|
|||
trace_dump_call_begin("pipe_context", "surface_copy");
|
||||
|
||||
trace_dump_arg(ptr, pipe);
|
||||
trace_dump_arg(bool, do_flip);
|
||||
trace_dump_arg(ptr, dest);
|
||||
trace_dump_arg(uint, destx);
|
||||
trace_dump_arg(uint, desty);
|
||||
|
@ -937,7 +935,7 @@ trace_context_surface_copy(struct pipe_context *_pipe,
|
|||
trace_dump_arg(uint, width);
|
||||
trace_dump_arg(uint, height);
|
||||
|
||||
pipe->surface_copy(pipe, do_flip,
|
||||
pipe->surface_copy(pipe,
|
||||
dest, destx, desty,
|
||||
src, srcx, srcy, width, height);
|
||||
|
||||
|
|
|
@ -193,7 +193,6 @@ struct pipe_context {
|
|||
*/
|
||||
/*@{*/
|
||||
void (*surface_copy)(struct pipe_context *pipe,
|
||||
boolean do_flip,/**< flip surface contents vertically */
|
||||
struct pipe_surface *dest,
|
||||
unsigned destx, unsigned desty,
|
||||
struct pipe_surface *src, /* don't make this const -
|
||||
|
|
|
@ -391,7 +391,6 @@ drm_swap_buffers(_EGLDriver *drv, EGLDisplay dpy, EGLSurface draw)
|
|||
if (surf->screen) {
|
||||
surf->user->pipe->flush(surf->user->pipe, PIPE_FLUSH_RENDER_CACHE | PIPE_FLUSH_TEXTURE_CACHE, NULL);
|
||||
surf->user->pipe->surface_copy(surf->user->pipe,
|
||||
0,
|
||||
surf->screen->surface,
|
||||
0, 0,
|
||||
back_surf,
|
||||
|
|
|
@ -1143,7 +1143,6 @@ void XMesaCopySubBuffer( XMesaBuffer b, int x, int y, int width, int height )
|
|||
return;
|
||||
|
||||
pipe->surface_copy(pipe,
|
||||
FALSE,
|
||||
surf_front, x, y, /* dest */
|
||||
surf_back, x, y, /* src */
|
||||
width, height);
|
||||
|
|
|
@ -266,13 +266,12 @@ error1:
|
|||
* Surface functions
|
||||
*/
|
||||
|
||||
void surface_copy(int do_flip,
|
||||
struct pipe_surface *dest,
|
||||
void surface_copy(struct pipe_surface *dest,
|
||||
unsigned destx, unsigned desty,
|
||||
struct pipe_surface *src,
|
||||
unsigned srcx, unsigned srcy,
|
||||
unsigned width, unsigned height) {
|
||||
$self->pipe->surface_copy($self->pipe, do_flip, dest, destx, desty, src, srcx, srcy, width, height);
|
||||
$self->pipe->surface_copy($self->pipe, dest, destx, desty, src, srcx, srcy, width, height);
|
||||
}
|
||||
|
||||
void surface_fill(struct pipe_surface *dst,
|
||||
|
|
|
@ -173,7 +173,7 @@ driCopyRegion(DrawablePtr pDraw, RegionPtr pRegion,
|
|||
ms->screen->get_tex_surface(ms->screen, src_priv->tex, 0, 0, 0,
|
||||
PIPE_BUFFER_USAGE_GPU_READ);
|
||||
|
||||
ms->ctx->surface_copy(ms->ctx, 0, dst_surf, 0, 0, src_surf,
|
||||
ms->ctx->surface_copy(ms->ctx, dst_surf, 0, 0, src_surf,
|
||||
0, 0, pDraw->width, pDraw->height);
|
||||
|
||||
pipe_surface_reference(&dst_surf, NULL);
|
||||
|
|
|
@ -283,7 +283,7 @@ ExaCopy(PixmapPtr pDstPixmap, int srcX, int srcY, int dstX, int dstY,
|
|||
PIPE_BUFFER_USAGE_GPU_READ |
|
||||
PIPE_BUFFER_USAGE_GPU_WRITE);
|
||||
|
||||
exa->ctx->surface_copy(exa->ctx, 0, surf, dstX, dstY, priv->src_surf,
|
||||
exa->ctx->surface_copy(exa->ctx, surf, dstX, dstY, priv->src_surf,
|
||||
srcX, srcY, width, height);
|
||||
exa->scrn->tex_surface_destroy(surf);
|
||||
}
|
||||
|
|
|
@ -39,7 +39,7 @@ nouveau_copy_buffer(__DRIdrawablePrivate *dPriv, struct pipe_surface *surf,
|
|||
w = pbox->x2 - pbox->x1;
|
||||
h = pbox->y2 - pbox->y1;
|
||||
|
||||
pipe->surface_copy(pipe, FALSE, nv->base.frontbuffer,
|
||||
pipe->surface_copy(pipe, nv->base.frontbuffer,
|
||||
dx, dy, surf, sx, sy, w, h);
|
||||
}
|
||||
|
||||
|
|
|
@ -31,7 +31,7 @@ nouveau_copy_buffer(dri_drawable_t *dri_drawable, struct pipe_surface *surf,
|
|||
w = pbox->x2 - pbox->x1;
|
||||
h = pbox->y2 - pbox->y1;
|
||||
|
||||
pipe->surface_copy(pipe, FALSE, nv->base.frontbuffer,
|
||||
pipe->surface_copy(pipe, nv->base.frontbuffer,
|
||||
dx, dy, surf, sx, sy, w, h);
|
||||
}
|
||||
|
||||
|
|
|
@ -154,7 +154,6 @@ update_framebuffer_state( struct st_context *st )
|
|||
(void) st_get_framebuffer_surface(stfb, ST_SURFACE_BACK_LEFT, &surf_back);
|
||||
|
||||
st->pipe->surface_copy(st->pipe,
|
||||
FALSE,
|
||||
surf_front, 0, 0, /* dest */
|
||||
surf_back, 0, 0, /* src */
|
||||
fb->Width, fb->Height);
|
||||
|
|
|
@ -916,7 +916,6 @@ st_CopyPixels(GLcontext *ctx, GLint srcx, GLint srcy,
|
|||
struct pipe_surface *psTex = screen->get_tex_surface(screen, pt, 0, 0, 0,
|
||||
PIPE_BUFFER_USAGE_GPU_WRITE );
|
||||
pipe->surface_copy(pipe,
|
||||
FALSE,
|
||||
psTex, /* dest */
|
||||
0, 0, /* destx/y */
|
||||
psRead,
|
||||
|
|
|
@ -1089,21 +1089,19 @@ st_copy_texsubimage(GLcontext *ctx,
|
|||
if (matching_base_formats && ctx->_ImageTransferState == 0x0) {
|
||||
/* try potential hardware path */
|
||||
struct pipe_surface *dest_surface = NULL;
|
||||
boolean do_flip = (st_fb_orientation(ctx->ReadBuffer) == Y_0_TOP);
|
||||
|
||||
if (src_format == dest_format) {
|
||||
if (src_format == dest_format && !do_flip) {
|
||||
/* use surface_copy() / blit */
|
||||
boolean do_flip = (st_fb_orientation(ctx->ReadBuffer) == Y_0_TOP);
|
||||
|
||||
|
||||
dest_surface = screen->get_tex_surface(screen, stImage->pt,
|
||||
stImage->face, stImage->level,
|
||||
destZ,
|
||||
PIPE_BUFFER_USAGE_GPU_WRITE);
|
||||
if (do_flip)
|
||||
srcY = strb->surface->height - srcY - height;
|
||||
|
||||
/* for surface_copy(), y=0=top, always */
|
||||
pipe->surface_copy(pipe,
|
||||
do_flip,
|
||||
/* dest */
|
||||
dest_surface,
|
||||
destX, destY,
|
||||
|
@ -1123,7 +1121,6 @@ st_copy_texsubimage(GLcontext *ctx,
|
|||
PIPE_TEXTURE_USAGE_RENDER_TARGET,
|
||||
0)) {
|
||||
/* draw textured quad to do the copy */
|
||||
boolean do_flip = (st_fb_orientation(ctx->ReadBuffer) == Y_0_TOP);
|
||||
int srcY0, srcY1;
|
||||
|
||||
dest_surface = screen->get_tex_surface(screen, stImage->pt,
|
||||
|
|
|
@ -342,7 +342,6 @@ st_texture_image_copy(struct pipe_context *pipe,
|
|||
PIPE_BUFFER_USAGE_GPU_READ);
|
||||
|
||||
pipe->surface_copy(pipe,
|
||||
FALSE,
|
||||
dst_surface,
|
||||
0, 0, /* destX, Y */
|
||||
src_surface,
|
||||
|
|
Loading…
Reference in New Issue