From: Marek Olšák <marek.ol...@amd.com>

---
 src/gallium/drivers/radeonsi/r600_texture.c  | 42 ----------------------------
 src/gallium/drivers/radeonsi/radeonsi_pipe.c |  1 -
 src/gallium/drivers/radeonsi/radeonsi_pipe.h |  3 --
 src/gallium/drivers/radeonsi/si_state.c      | 38 +++++++++++++++++++++++++
 4 files changed, 38 insertions(+), 46 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/r600_texture.c 
b/src/gallium/drivers/radeonsi/r600_texture.c
index e6e8e20..9a2f710 100644
--- a/src/gallium/drivers/radeonsi/r600_texture.c
+++ b/src/gallium/drivers/radeonsi/r600_texture.c
@@ -546,42 +546,6 @@ struct pipe_resource *si_texture_create(struct pipe_screen 
*screen,
                                                                  0, NULL, 
&surface);
 }
 
-static struct pipe_surface *r600_create_surface(struct pipe_context *pipe,
-                                               struct pipe_resource *texture,
-                                               const struct pipe_surface 
*surf_tmpl)
-{
-       struct r600_texture *rtex = (struct r600_texture*)texture;
-       struct r600_surface *surface = CALLOC_STRUCT(r600_surface);
-       unsigned level = surf_tmpl->u.tex.level;
-
-       assert(surf_tmpl->u.tex.first_layer <= util_max_layer(texture, 
surf_tmpl->u.tex.level));
-       assert(surf_tmpl->u.tex.last_layer <= util_max_layer(texture, 
surf_tmpl->u.tex.level));
-       assert(surf_tmpl->u.tex.first_layer == surf_tmpl->u.tex.last_layer);
-       if (surface == NULL)
-               return NULL;
-       /* XXX no offset */
-/*     offset = r600_texture_get_offset(rtex, level, 
surf_tmpl->u.tex.first_layer);*/
-       pipe_reference_init(&surface->base.reference, 1);
-       pipe_resource_reference(&surface->base.texture, texture);
-       surface->base.context = pipe;
-       surface->base.format = surf_tmpl->format;
-       surface->base.width = rtex->surface.level[level].npix_x;
-       surface->base.height = rtex->surface.level[level].npix_y;
-       surface->base.texture = texture;
-       surface->base.u.tex.first_layer = surf_tmpl->u.tex.first_layer;
-       surface->base.u.tex.last_layer = surf_tmpl->u.tex.last_layer;
-       surface->base.u.tex.level = level;
-
-       return &surface->base;
-}
-
-static void r600_surface_destroy(struct pipe_context *pipe,
-                                struct pipe_surface *surface)
-{
-       pipe_resource_reference(&surface->texture, NULL);
-       FREE(surface);
-}
-
 struct pipe_resource *si_texture_from_handle(struct pipe_screen *screen,
                                             const struct pipe_resource *templ,
                                             struct winsys_handle *whandle)
@@ -881,12 +845,6 @@ static void si_texture_transfer_unmap(struct pipe_context 
*ctx,
        FREE(transfer);
 }
 
-void si_init_surface_functions(struct r600_context *r600)
-{
-       r600->b.b.create_surface = r600_create_surface;
-       r600->b.b.surface_destroy = r600_surface_destroy;
-}
-
 static const struct u_resource_vtbl r600_texture_vtbl =
 {
        r600_texture_get_handle,        /* get_handle */
diff --git a/src/gallium/drivers/radeonsi/radeonsi_pipe.c 
b/src/gallium/drivers/radeonsi/radeonsi_pipe.c
index 814f16b..5275c6f 100644
--- a/src/gallium/drivers/radeonsi/radeonsi_pipe.c
+++ b/src/gallium/drivers/radeonsi/radeonsi_pipe.c
@@ -228,7 +228,6 @@ static struct pipe_context *r600_create_context(struct 
pipe_screen *screen, void
        si_init_blit_functions(rctx);
        r600_init_query_functions(rctx);
        r600_init_context_resource_functions(rctx);
-       si_init_surface_functions(rctx);
        si_init_compute_functions(rctx);
 
        if (rscreen->b.info.has_uvd) {
diff --git a/src/gallium/drivers/radeonsi/radeonsi_pipe.h 
b/src/gallium/drivers/radeonsi/radeonsi_pipe.h
index 942d235..6098871 100644
--- a/src/gallium/drivers/radeonsi/radeonsi_pipe.h
+++ b/src/gallium/drivers/radeonsi/radeonsi_pipe.h
@@ -240,9 +240,6 @@ void r600_init_query_functions(struct r600_context *rctx);
 /* r600_resource.c */
 void r600_init_context_resource_functions(struct r600_context *r600);
 
-/* r600_texture.c */
-void si_init_surface_functions(struct r600_context *r600);
-
 /* r600_translate.c */
 void r600_translate_index_buffer(struct r600_context *r600,
                                 struct pipe_index_buffer *ib,
diff --git a/src/gallium/drivers/radeonsi/si_state.c 
b/src/gallium/drivers/radeonsi/si_state.c
index 8cec3e2..400d947 100644
--- a/src/gallium/drivers/radeonsi/si_state.c
+++ b/src/gallium/drivers/radeonsi/si_state.c
@@ -2919,6 +2919,42 @@ static void *si_create_blend_custom(struct r600_context 
*rctx, unsigned mode)
        return si_create_blend_state_mode(&rctx->b.b, &blend, mode);
 }
 
+static struct pipe_surface *r600_create_surface(struct pipe_context *pipe,
+                                               struct pipe_resource *texture,
+                                               const struct pipe_surface 
*surf_tmpl)
+{
+       struct r600_texture *rtex = (struct r600_texture*)texture;
+       struct r600_surface *surface = CALLOC_STRUCT(r600_surface);
+       unsigned level = surf_tmpl->u.tex.level;
+
+       if (surface == NULL)
+               return NULL;
+
+       assert(surf_tmpl->u.tex.first_layer <= util_max_layer(texture, 
surf_tmpl->u.tex.level));
+       assert(surf_tmpl->u.tex.last_layer <= util_max_layer(texture, 
surf_tmpl->u.tex.level));
+       assert(surf_tmpl->u.tex.first_layer == surf_tmpl->u.tex.last_layer);
+
+       pipe_reference_init(&surface->base.reference, 1);
+       pipe_resource_reference(&surface->base.texture, texture);
+       surface->base.context = pipe;
+       surface->base.format = surf_tmpl->format;
+       surface->base.width = rtex->surface.level[level].npix_x;
+       surface->base.height = rtex->surface.level[level].npix_y;
+       surface->base.texture = texture;
+       surface->base.u.tex.first_layer = surf_tmpl->u.tex.first_layer;
+       surface->base.u.tex.last_layer = surf_tmpl->u.tex.last_layer;
+       surface->base.u.tex.level = level;
+
+       return &surface->base;
+}
+
+static void r600_surface_destroy(struct pipe_context *pipe,
+                                struct pipe_surface *surface)
+{
+       pipe_resource_reference(&surface->texture, NULL);
+       FREE(surface);
+}
+
 void si_init_state_functions(struct r600_context *rctx)
 {
        int i;
@@ -2980,6 +3016,8 @@ void si_init_state_functions(struct r600_context *rctx)
 
        rctx->b.b.texture_barrier = si_texture_barrier;
        rctx->b.b.set_polygon_stipple = si_set_polygon_stipple;
+       rctx->b.b.create_surface = r600_create_surface;
+       rctx->b.b.surface_destroy = r600_surface_destroy;
 
        rctx->b.b.draw_vbo = si_draw_vbo;
 }
-- 
1.8.1.2

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to