diff options
| author | Roland Scheidegger <sroland@vmware.com> | 2010-05-17 21:23:31 +0200 | 
|---|---|---|
| committer | Roland Scheidegger <sroland@vmware.com> | 2010-05-17 21:23:31 +0200 | 
| commit | e121a73d629856240a9676a4f0dff832d95c90c3 (patch) | |
| tree | 9cedcfdf4ec29d66da0349394e8d51414d64c45f /src | |
| parent | 57a01712258c9d6063ef36bc359cffba3e7f9be1 (diff) | |
llvmpipe: adapt to interface changes
Diffstat (limited to 'src')
| -rw-r--r-- | src/gallium/drivers/llvmpipe/lp_screen.c | 6 | ||||
| -rw-r--r-- | src/gallium/drivers/llvmpipe/lp_surface.c | 41 | 
2 files changed, 27 insertions, 20 deletions
| diff --git a/src/gallium/drivers/llvmpipe/lp_screen.c b/src/gallium/drivers/llvmpipe/lp_screen.c index 111eedc4f2..5f50446f84 100644 --- a/src/gallium/drivers/llvmpipe/lp_screen.c +++ b/src/gallium/drivers/llvmpipe/lp_screen.c @@ -168,8 +168,9 @@ llvmpipe_get_paramf(struct pipe_screen *screen, int param)   */  static boolean  llvmpipe_is_format_supported( struct pipe_screen *_screen, -                              enum pipe_format format,  +                              enum pipe_format format,                                enum pipe_texture_target target, +                              unsigned sample_count,                                unsigned bind,                                unsigned geom_flags )  { @@ -186,6 +187,9 @@ llvmpipe_is_format_supported( struct pipe_screen *_screen,            target == PIPE_TEXTURE_3D ||            target == PIPE_TEXTURE_CUBE); +   if (sample_count > 1) +      return FALSE; +     if (bind & PIPE_BIND_RENDER_TARGET) {        if (format_desc->colorspace == UTIL_FORMAT_COLORSPACE_ZS)           return FALSE; diff --git a/src/gallium/drivers/llvmpipe/lp_surface.c b/src/gallium/drivers/llvmpipe/lp_surface.c index 245171120d..85687ada1c 100644 --- a/src/gallium/drivers/llvmpipe/lp_surface.c +++ b/src/gallium/drivers/llvmpipe/lp_surface.c @@ -51,24 +51,27 @@ adjust_to_tile_bounds(unsigned x, unsigned y, unsigned width, unsigned height,  static void -lp_surface_copy(struct pipe_context *pipe, -                struct pipe_surface *dst, unsigned dstx, unsigned dsty, -                struct pipe_surface *src, unsigned srcx, unsigned srcy, -                unsigned width, unsigned height) +lp_resource_copy(struct pipe_context *pipe, +                 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)  { -   struct llvmpipe_resource *src_tex = llvmpipe_resource(src->texture); -   struct llvmpipe_resource *dst_tex = llvmpipe_resource(dst->texture); +   /* XXX what about the dstz/srcz parameters - zslice wasn't used... */ +   struct llvmpipe_resource *src_tex = llvmpipe_resource(src); +   struct llvmpipe_resource *dst_tex = llvmpipe_resource(dst);     const enum pipe_format format = src_tex->base.format;     llvmpipe_flush_resource(pipe, -                           dst->texture, dst->face, dst->level, +                           dst, subdst.face, subdst.level,                             0, /* flush_flags */                             FALSE, /* read_only */                             FALSE, /* cpu_access */                             FALSE); /* do_not_block */     llvmpipe_flush_resource(pipe, -                           src->texture, src->face, src->level, +                           src, subsrc.face, subsrc.level,                             0, /* flush_flags */                             TRUE, /* read_only */                             FALSE, /* cpu_access */ @@ -90,8 +93,8 @@ lp_surface_copy(struct pipe_context *pipe,        for (y = 0; y < th; y += TILE_SIZE) {           for (x = 0; x < tw; x += TILE_SIZE) {              (void) llvmpipe_get_texture_tile_linear(src_tex, -                                                    src->face, src->level, -                                                       LP_TEX_USAGE_READ, +                                                    subsrc.face, subsrc.level, +                                                    LP_TEX_USAGE_READ,                                                      tx + x, ty + y);           }        } @@ -117,7 +120,7 @@ lp_surface_copy(struct pipe_context *pipe,        for (y = 0; y < th; y += TILE_SIZE) {           for (x = 0; x < tw; x += TILE_SIZE) {              (void) llvmpipe_get_texture_tile_linear(dst_tex, -                                                    dst->face, dst->level, +                                                    subdst.face, subdst.level,                                                      usage,                                                      tx + x, ty + y);           } @@ -127,20 +130,20 @@ lp_surface_copy(struct pipe_context *pipe,     /* copy */     {        const ubyte *src_linear_ptr -         = llvmpipe_get_texture_image_address(src_tex, src->face, -                                              src->level, +         = llvmpipe_get_texture_image_address(src_tex, subsrc.face, +                                              subsrc.level,                                                LP_TEX_LAYOUT_LINEAR);        ubyte *dst_linear_ptr -         = llvmpipe_get_texture_image_address(dst_tex, dst->face, -                                              dst->level, +         = llvmpipe_get_texture_image_address(dst_tex, subdst.face, +                                              subdst.level,                                                LP_TEX_LAYOUT_LINEAR);        util_copy_rect(dst_linear_ptr, format, -                     llvmpipe_resource_stride(&dst_tex->base, dst->level), +                     llvmpipe_resource_stride(&dst_tex->base, subdst.level),                       dstx, dsty,                       width, height,                       src_linear_ptr, -                     llvmpipe_resource_stride(&src_tex->base, src->level), +                     llvmpipe_resource_stride(&src_tex->base, subsrc.level),                       srcx, srcy);     }  } @@ -149,6 +152,6 @@ lp_surface_copy(struct pipe_context *pipe,  void  llvmpipe_init_surface_functions(struct llvmpipe_context *lp)  { -   lp->pipe.surface_copy = lp_surface_copy; -   lp->pipe.surface_fill = util_surface_fill; +   lp->pipe.resource_copy_region = lp_resource_copy; +   lp->pipe.resource_fill_region = util_resource_fill_region;  } | 
