Module: Mesa
Branch: master
Commit: 6abd7771c6ab2c733b20835e211060dd18fd847d
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=6abd7771c6ab2c733b20835e211060dd18fd847d

Author: Jerome Glisse <[email protected]>
Date:   Wed Sep 29 15:39:40 2010 -0400

r600g: more cleanup

Signed-off-by: Jerome Glisse <[email protected]>

---

 src/gallium/drivers/r600/Makefile                  |    1 +
 src/gallium/drivers/r600/evergreen_state.c         |    2 +-
 src/gallium/drivers/r600/r600_asm.h                |    7 +
 src/gallium/drivers/r600/r600_blit.c               |  164 ++++++++++++++++++++
 src/gallium/drivers/r600/r600_pipe.c               |    5 +-
 src/gallium/drivers/r600/r600_pipe.h               |   47 +++---
 src/gallium/drivers/r600/r600_public.h             |   27 +++-
 src/gallium/drivers/r600/r600_query.c              |    6 +-
 src/gallium/drivers/r600/r600_shader.c             |   28 ----
 src/gallium/drivers/r600/r600_state.c              |  146 +-----------------
 src/gallium/targets/dri-r600/target.c              |   29 +----
 src/gallium/winsys/r600/drm/Makefile               |   10 +-
 .../{evergreen_state.c => evergreen_hw_context.c}  |    0 
 src/gallium/winsys/r600/drm/r600_drm_public.h      |   26 +++-
 .../r600/drm/{r600_state2.c => r600_hw_context.c}  |    0 
 15 files changed, 257 insertions(+), 241 deletions(-)

diff --git a/src/gallium/drivers/r600/Makefile 
b/src/gallium/drivers/r600/Makefile
index 2135341..ede0bb2 100644
--- a/src/gallium/drivers/r600/Makefile
+++ b/src/gallium/drivers/r600/Makefile
@@ -8,6 +8,7 @@ LIBRARY_INCLUDES = \
 
 C_SOURCES = \
        r600_asm.c \
+       r600_blit.c \
        r600_buffer.c \
        r600_helper.c \
        r600_pipe.c \
diff --git a/src/gallium/drivers/r600/evergreen_state.c 
b/src/gallium/drivers/r600/evergreen_state.c
index fc517f1..a300256 100644
--- a/src/gallium/drivers/r600/evergreen_state.c
+++ b/src/gallium/drivers/r600/evergreen_state.c
@@ -1360,7 +1360,7 @@ void evergreen_draw(struct pipe_context *ctx, const 
struct pipe_draw_info *info)
                draw.max_index = info->max_index;
                draw.index_bias = info->index_bias;
 
-               r600_translate_index_buffer2(rctx, &rctx->index_buffer.buffer,
+               r600_translate_index_buffer(rctx, &rctx->index_buffer.buffer,
                                            &rctx->index_buffer.index_size,
                                            &draw.start,
                                            info->count);
diff --git a/src/gallium/drivers/r600/r600_asm.h 
b/src/gallium/drivers/r600/r600_asm.h
index 6aadf72..cf67ca2 100644
--- a/src/gallium/drivers/r600/r600_asm.h
+++ b/src/gallium/drivers/r600/r600_asm.h
@@ -176,6 +176,10 @@ struct r600_bc {
        struct r600_cf_callstack        callstack[SQ_MAX_CALL_DEPTH];
 };
 
+/* eg_asm.c */
+int eg_bc_cf_build(struct r600_bc *bc, struct r600_bc_cf *cf);
+
+/* r600_asm.c */
 int r600_bc_init(struct r600_bc *bc, enum radeon_family family);
 int r600_bc_add_alu(struct r600_bc *bc, const struct r600_bc_alu *alu);
 int r600_bc_add_literal(struct r600_bc *bc, const u32 *value);
@@ -186,4 +190,7 @@ int r600_bc_build(struct r600_bc *bc);
 int r600_bc_add_cfinst(struct r600_bc *bc, int inst);
 int r600_bc_add_alu_type(struct r600_bc *bc, const struct r600_bc_alu *alu, 
int type);
 
+/* r700_asm.c */
+int r700_bc_alu_build(struct r600_bc *bc, struct r600_bc_alu *alu, unsigned 
id);
+
 #endif
diff --git a/src/gallium/drivers/r600/r600_blit.c 
b/src/gallium/drivers/r600/r600_blit.c
new file mode 100644
index 0000000..a19f494
--- /dev/null
+++ b/src/gallium/drivers/r600/r600_blit.c
@@ -0,0 +1,164 @@
+/*
+ * Copyright 2010 Jerome Glisse <[email protected]>
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * on the rights to use, copy, modify, merge, publish, distribute, sub
+ * license, and/or sell copies of the Software, and to permit persons to whom
+ * the Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHOR(S) AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+ * USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+#include <util/u_surface.h>
+#include <util/u_blitter.h>
+#include "r600_pipe.h"
+
+static void r600_blitter_save_states(struct pipe_context *ctx)
+{
+       struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx;
+
+       util_blitter_save_blend(rctx->blitter, 
rctx->states[R600_PIPE_STATE_BLEND]);
+       util_blitter_save_depth_stencil_alpha(rctx->blitter, 
rctx->states[R600_PIPE_STATE_DSA]);
+       if (rctx->states[R600_PIPE_STATE_STENCIL_REF]) {
+               util_blitter_save_stencil_ref(rctx->blitter, 
&rctx->stencil_ref);
+       }
+       util_blitter_save_rasterizer(rctx->blitter, 
rctx->states[R600_PIPE_STATE_RASTERIZER]);
+       util_blitter_save_fragment_shader(rctx->blitter, rctx->ps_shader);
+       util_blitter_save_vertex_shader(rctx->blitter, rctx->vs_shader);
+       util_blitter_save_vertex_elements(rctx->blitter, rctx->vertex_elements);
+       if (rctx->states[R600_PIPE_STATE_VIEWPORT]) {
+               util_blitter_save_viewport(rctx->blitter, &rctx->viewport);
+       }
+       if (rctx->states[R600_PIPE_STATE_CLIP]) {
+               util_blitter_save_clip(rctx->blitter, &rctx->clip);
+       }
+       util_blitter_save_vertex_buffers(rctx->blitter, rctx->nvertex_buffer, 
rctx->vertex_buffer);
+
+       rctx->vertex_elements = NULL;
+
+       /* TODO queries */
+}
+
+int r600_blit_uncompress_depth2(struct pipe_context *ctx, struct 
r600_resource_texture *texture)
+{
+       struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx;
+       struct pipe_framebuffer_state fb = *rctx->pframebuffer;
+       struct pipe_surface *zsurf, *cbsurf;
+       int level = 0;
+       float depth = 1.0f;
+
+       r600_context_queries_suspend(&rctx->ctx);
+       for (int i = 0; i < fb.nr_cbufs; i++) {
+               fb.cbufs[i] = NULL;
+               pipe_surface_reference(&fb.cbufs[i], 
rctx->pframebuffer->cbufs[i]);
+       }
+       fb.zsbuf = NULL;
+       pipe_surface_reference(&fb.zsbuf, rctx->pframebuffer->zsbuf);
+
+       zsurf = ctx->screen->get_tex_surface(ctx->screen, 
&texture->resource.base.b, 0, level, 0,
+                                            PIPE_BIND_DEPTH_STENCIL);
+
+       cbsurf = ctx->screen->get_tex_surface(ctx->screen,
+                       (struct pipe_resource*)texture->flushed_depth_texture,
+                       0, level, 0, PIPE_BIND_RENDER_TARGET);
+
+       r600_blitter_save_states(ctx);
+       util_blitter_save_framebuffer(rctx->blitter, &fb);
+
+       if (rctx->family == CHIP_RV610 || rctx->family == CHIP_RV630 ||
+               rctx->family == CHIP_RV620 || rctx->family == CHIP_RV635)
+               depth = 0.0f;
+
+       util_blitter_custom_depth_stencil(rctx->blitter, zsurf, cbsurf, 
rctx->custom_dsa_flush, depth);
+
+       pipe_surface_reference(&zsurf, NULL);
+       pipe_surface_reference(&cbsurf, NULL);
+       for (int i = 0; i < fb.nr_cbufs; i++) {
+               pipe_surface_reference(&fb.cbufs[i], NULL);
+       }
+       pipe_surface_reference(&fb.zsbuf, NULL);
+       r600_context_queries_resume(&rctx->ctx);
+
+       return 0;
+}
+
+static void r600_clear(struct pipe_context *ctx, unsigned buffers,
+                       const float *rgba, double depth, unsigned stencil)
+{
+       struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx;
+       struct pipe_framebuffer_state *fb = &rctx->framebuffer;
+
+       r600_context_queries_suspend(&rctx->ctx);
+       r600_blitter_save_states(ctx);
+       util_blitter_clear(rctx->blitter, fb->width, fb->height,
+                               fb->nr_cbufs, buffers, rgba, depth,
+                               stencil);
+       r600_context_queries_resume(&rctx->ctx);
+}
+
+static void r600_clear_render_target(struct pipe_context *ctx,
+                                    struct pipe_surface *dst,
+                                    const float *rgba,
+                                    unsigned dstx, unsigned dsty,
+                                    unsigned width, unsigned height)
+{
+       struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx;
+       struct pipe_framebuffer_state *fb = &rctx->framebuffer;
+
+       r600_context_queries_suspend(&rctx->ctx);
+       util_blitter_save_framebuffer(rctx->blitter, fb);
+       util_blitter_clear_render_target(rctx->blitter, dst, rgba,
+                                        dstx, dsty, width, height);
+       r600_context_queries_resume(&rctx->ctx);
+}
+
+static void r600_clear_depth_stencil(struct pipe_context *ctx,
+                                    struct pipe_surface *dst,
+                                    unsigned clear_flags,
+                                    double depth,
+                                    unsigned stencil,
+                                    unsigned dstx, unsigned dsty,
+                                    unsigned width, unsigned height)
+{
+       struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx;
+       struct pipe_framebuffer_state *fb = &rctx->framebuffer;
+
+       r600_context_queries_suspend(&rctx->ctx);
+       util_blitter_save_framebuffer(rctx->blitter, fb);
+       util_blitter_clear_depth_stencil(rctx->blitter, dst, clear_flags, 
depth, stencil,
+                                        dstx, dsty, width, height);
+       r600_context_queries_resume(&rctx->ctx);
+}
+
+
+static void r600_resource_copy_region(struct pipe_context *ctx,
+                                     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)
+{
+       util_resource_copy_region(ctx, dst, subdst, dstx, dsty, dstz,
+                                 src, subsrc, srcx, srcy, srcz, width, height);
+}
+
+void r600_init_blit_functions2(struct r600_pipe_context *rctx)
+{
+       rctx->context.clear = r600_clear;
+       rctx->context.clear_render_target = r600_clear_render_target;
+       rctx->context.clear_depth_stencil = r600_clear_depth_stencil;
+       rctx->context.resource_copy_region = r600_resource_copy_region;
+}
diff --git a/src/gallium/drivers/r600/r600_pipe.c 
b/src/gallium/drivers/r600/r600_pipe.c
index 0613cd1..3c44240 100644
--- a/src/gallium/drivers/r600/r600_pipe.c
+++ b/src/gallium/drivers/r600/r600_pipe.c
@@ -147,7 +147,7 @@ static struct pipe_context *r600_create_context2(struct 
pipe_screen *screen, voi
        rctx->family = r600_get_family(rctx->radeon);
 
        r600_init_blit_functions2(rctx);
-       r600_init_query_functions2(rctx);
+       r600_init_query_functions(rctx);
        r600_init_context_resource_functions2(rctx);
 
        switch (r600_get_family(rctx->radeon)) {
@@ -210,7 +210,6 @@ static struct pipe_context *r600_create_context2(struct 
pipe_screen *screen, voi
                return NULL;
        }
 
-       LIST_INITHEAD(&rctx->query_list);
        rctx->custom_dsa_flush = r600_create_db_flush_dsa(rctx);
 
        r600_blit_uncompress_depth_ptr = r600_blit_uncompress_depth2;
@@ -423,7 +422,7 @@ static void r600_destroy_screen(struct pipe_screen* pscreen)
 }
 
 
-struct pipe_screen *r600_screen_create2(struct radeon *radeon)
+struct pipe_screen *r600_screen_create(struct radeon *radeon)
 {
        struct r600_screen *rscreen;
 
diff --git a/src/gallium/drivers/r600/r600_pipe.h 
b/src/gallium/drivers/r600/r600_pipe.h
index ab31180..98ed8b7 100644
--- a/src/gallium/drivers/r600/r600_pipe.h
+++ b/src/gallium/drivers/r600/r600_pipe.h
@@ -31,6 +31,7 @@
 #include <pipe/p_context.h>
 #include <util/u_math.h>
 #include "r600.h"
+#include "r600_public.h"
 #include "r600_shader.h"
 #include "r600_resource.h"
 
@@ -91,14 +92,12 @@ struct r600_pipe_shader {
        struct r600_vertex_element      vertex_elements;
 };
 
-
 struct r600_pipe_context {
        struct pipe_context             context;
        struct blitter_context          *blitter;
        struct pipe_framebuffer_state   *pframebuffer;
        unsigned                        family;
        void                            *custom_dsa_flush;
-       struct list_head                query_list; /* fake member for depth 
remove once merged */
        struct r600_screen              *screen;
        struct radeon                   *radeon;
        struct r600_pipe_state          *states[R600_PIPE_NSTATES];
@@ -146,20 +145,6 @@ struct r600_drawl {
        struct pipe_resource    *index_buffer;
 };
 
-uint32_t r600_translate_texformat(enum pipe_format format,
-                                 const unsigned char *swizzle_view, 
-                                 uint32_t *word4_p, uint32_t *yuv_format_p);
-
-/* r600_state2.c */
-int r600_pipe_shader_update2(struct pipe_context *ctx, struct r600_pipe_shader 
*shader);
-int r600_pipe_shader_create2(struct pipe_context *ctx, struct r600_pipe_shader 
*shader, const struct tgsi_token *tokens);
-void r600_translate_index_buffer2(struct r600_pipe_context *r600,
-                                       struct pipe_resource **index_buffer,
-                                       unsigned *index_size,
-                                       unsigned *start, unsigned count);
-int r600_find_vs_semantic_index2(struct r600_shader *vs,
-                               struct r600_shader *ps, int id);
-
 /* evergreen_state.c */
 void evergreen_init_state_functions2(struct r600_pipe_context *rctx);
 void evergreen_init_config2(struct r600_pipe_context *rctx);
@@ -167,12 +152,6 @@ void evergreen_draw(struct pipe_context *ctx, const struct 
pipe_draw_info *info)
 void evergreen_pipe_shader_ps(struct pipe_context *ctx, struct 
r600_pipe_shader *shader);
 void evergreen_pipe_shader_vs(struct pipe_context *ctx, struct 
r600_pipe_shader *shader);
 
-static INLINE u32 S_FIXED(float value, u32 frac_bits)
-{
-       return value * (1 << frac_bits);
-}
-#define ALIGN_DIVUP(x, y) (((x) + (y) - 1) / (y))
-
 /* r600_blit.c */
 void r600_init_blit_functions2(struct r600_pipe_context *rctx);
 int r600_blit_uncompress_depth2(struct pipe_context *ctx, struct 
r600_resource_texture *texture);
@@ -192,20 +171,42 @@ int r600_upload_index_buffer(struct r600_pipe_context 
*rctx, struct r600_drawl *
 int r600_upload_user_buffers(struct r600_pipe_context *rctx);
 
 /* r600_query.c */
-void r600_init_query_functions2(struct r600_pipe_context *rctx);
+void r600_init_query_functions(struct r600_pipe_context *rctx);
 
 /* r600_resource.c */
 void r600_init_context_resource_functions2(struct r600_pipe_context *r600);
 
+/* r600_shader.c */
+int r600_pipe_shader_update2(struct pipe_context *ctx, struct r600_pipe_shader 
*shader);
+int r600_pipe_shader_create2(struct pipe_context *ctx, struct r600_pipe_shader 
*shader, const struct tgsi_token *tokens);
+int r600_find_vs_semantic_index2(struct r600_shader *vs,
+                               struct r600_shader *ps, int id);
+
 /* r600_state.c */
 void r600_init_state_functions2(struct r600_pipe_context *rctx);
 void r600_draw_vbo2(struct pipe_context *ctx, const struct pipe_draw_info 
*info);
 void r600_init_config2(struct r600_pipe_context *rctx);
+void r600_translate_index_buffer(struct r600_pipe_context *r600,
+                                       struct pipe_resource **index_buffer,
+                                       unsigned *index_size,
+                                       unsigned *start, unsigned count);
 
 /* r600_helper.h */
 int r600_conv_pipe_prim(unsigned pprim, unsigned *prim);
 
 /* r600_texture.c */
 void r600_init_screen_texture_functions(struct pipe_screen *screen);
+uint32_t r600_translate_texformat(enum pipe_format format,
+                                 const unsigned char *swizzle_view, 
+                                 uint32_t *word4_p, uint32_t *yuv_format_p);
+
+/*
+ * common helpers
+ */
+static INLINE u32 S_FIXED(float value, u32 frac_bits)
+{
+       return value * (1 << frac_bits);
+}
+#define ALIGN_DIVUP(x, y) (((x) + (y) - 1) / (y))
 
 #endif
diff --git a/src/gallium/drivers/r600/r600_public.h 
b/src/gallium/drivers/r600/r600_public.h
index 1d89c9f..f197020 100644
--- a/src/gallium/drivers/r600/r600_public.h
+++ b/src/gallium/drivers/r600/r600_public.h
@@ -1,9 +1,28 @@
-
+/*
+ * Copyright 2010 Jerome Glisse <[email protected]>
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * on the rights to use, copy, modify, merge, publish, distribute, sub
+ * license, and/or sell copies of the Software, and to permit persons to whom
+ * the Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHOR(S) AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+ * USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
 #ifndef R600_PUBLIC_H
 #define R600_PUBLIC_H
 
-struct radeon;
-
-struct pipe_screen* r600_screen_create(struct radeon *rw);
+struct pipe_screen *r600_screen_create(struct radeon *radeon);
 
 #endif
diff --git a/src/gallium/drivers/r600/r600_query.c 
b/src/gallium/drivers/r600/r600_query.c
index 7385a6f..7266682 100644
--- a/src/gallium/drivers/r600/r600_query.c
+++ b/src/gallium/drivers/r600/r600_query.c
@@ -20,10 +20,6 @@
  * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
  * USE OR OTHER DEALINGS IN THE SOFTWARE.
  */
-
-/* TODO:
- *     - fix mask for depth control & cull for query
- */
 #include "r600_pipe.h"
 
 static struct pipe_query *r600_create_query(struct pipe_context *ctx, unsigned 
query_type)
@@ -70,7 +66,7 @@ static boolean r600_get_query_result(struct pipe_context *ctx,
        return r600_context_query_result(&rctx->ctx, (struct r600_query 
*)query, wait, vresult);
 }
 
-void r600_init_query_functions2(struct r600_pipe_context *rctx)
+void r600_init_query_functions(struct r600_pipe_context *rctx)
 {
        rctx->context.create_query = r600_create_query;
        rctx->context.destroy_query = r600_destroy_query;
diff --git a/src/gallium/drivers/r600/r600_shader.c 
b/src/gallium/drivers/r600/r600_shader.c
index 718754b..a0cd830 100644
--- a/src/gallium/drivers/r600/r600_shader.c
+++ b/src/gallium/drivers/r600/r600_shader.c
@@ -1349,34 +1349,6 @@ static int tgsi_rsq(struct r600_shader_ctx *ctx)
        return tgsi_helper_tempx_replicate(ctx);
 }
 
-static int tgsi_trans(struct r600_shader_ctx *ctx)
-{
-       struct tgsi_full_instruction *inst = 
&ctx->parse.FullToken.FullInstruction;
-       struct r600_bc_alu alu;
-       int i, j, r;
-
-       for (i = 0; i < 4; i++) {
-               memset(&alu, 0, sizeof(struct r600_bc_alu));
-               if (inst->Dst[0].Register.WriteMask & (1 << i)) {
-                       alu.inst = ctx->inst_info->r600_opcode;
-                       for (j = 0; j < inst->Instruction.NumSrcRegs; j++) {
-                               r = tgsi_src(ctx, &inst->Src[j], &alu.src[j]);
-                               if (r)
-                                       return r;
-                               alu.src[j].chan = tgsi_chan(&inst->Src[j], i);
-                       }
-                       r = tgsi_dst(ctx, &inst->Dst[0], i, &alu.dst);
-                       if (r)
-                               return r;
-                       alu.last = 1;
-                       r = r600_bc_add_alu(ctx->bc, &alu);
-                       if (r)
-                               return r;
-               }
-       }
-       return 0;
-}
-
 static int tgsi_helper_tempx_replicate(struct r600_shader_ctx *ctx)
 {
        struct tgsi_full_instruction *inst = 
&ctx->parse.FullToken.FullInstruction;
diff --git a/src/gallium/drivers/r600/r600_state.c 
b/src/gallium/drivers/r600/r600_state.c
index 911d483..f5ec5cd 100644
--- a/src/gallium/drivers/r600/r600_state.c
+++ b/src/gallium/drivers/r600/r600_state.c
@@ -32,10 +32,7 @@
 #include <tgsi/tgsi_scan.h>
 #include <tgsi/tgsi_parse.h>
 #include <tgsi/tgsi_util.h>
-#include <util/u_blitter.h>
 #include <util/u_double_list.h>
-#include <util/u_transfer.h>
-#include <util/u_surface.h>
 #include <util/u_pack_color.h>
 #include <util/u_memory.h>
 #include <util/u_inlines.h>
@@ -184,7 +181,7 @@ static void r600_draw_common(struct r600_drawl *draw)
        r600_context_draw(&rctx->ctx, &rdraw);
 }
 
-void r600_translate_index_buffer2(struct r600_pipe_context *r600,
+void r600_translate_index_buffer(struct r600_pipe_context *r600,
                                        struct pipe_resource **index_buffer,
                                        unsigned *index_size,
                                        unsigned *start, unsigned count)
@@ -229,7 +226,7 @@ void r600_draw_vbo2(struct pipe_context *ctx, const struct 
pipe_draw_info *info)
                draw.max_index = info->max_index;
                draw.index_bias = info->index_bias;
 
-               r600_translate_index_buffer2(rctx, &rctx->index_buffer.buffer,
+               r600_translate_index_buffer(rctx, &rctx->index_buffer.buffer,
                                            &rctx->index_buffer.index_size,
                                            &draw.start,
                                            info->count);
@@ -251,145 +248,6 @@ void r600_draw_vbo2(struct pipe_context *ctx, const 
struct pipe_draw_info *info)
        pipe_resource_reference(&draw.index_buffer, NULL);
 }
 
-
-static void r600_blitter_save_states(struct pipe_context *ctx)
-{
-       struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx;
-
-       util_blitter_save_blend(rctx->blitter, 
rctx->states[R600_PIPE_STATE_BLEND]);
-       util_blitter_save_depth_stencil_alpha(rctx->blitter, 
rctx->states[R600_PIPE_STATE_DSA]);
-       if (rctx->states[R600_PIPE_STATE_STENCIL_REF]) {
-               util_blitter_save_stencil_ref(rctx->blitter, 
&rctx->stencil_ref);
-       }
-       util_blitter_save_rasterizer(rctx->blitter, 
rctx->states[R600_PIPE_STATE_RASTERIZER]);
-       util_blitter_save_fragment_shader(rctx->blitter, rctx->ps_shader);
-       util_blitter_save_vertex_shader(rctx->blitter, rctx->vs_shader);
-       util_blitter_save_vertex_elements(rctx->blitter, rctx->vertex_elements);
-       if (rctx->states[R600_PIPE_STATE_VIEWPORT]) {
-               util_blitter_save_viewport(rctx->blitter, &rctx->viewport);
-       }
-       if (rctx->states[R600_PIPE_STATE_CLIP]) {
-               util_blitter_save_clip(rctx->blitter, &rctx->clip);
-       }
-       util_blitter_save_vertex_buffers(rctx->blitter, rctx->nvertex_buffer, 
rctx->vertex_buffer);
-
-       rctx->vertex_elements = NULL;
-
-       /* TODO queries */
-}
-
-int r600_blit_uncompress_depth2(struct pipe_context *ctx, struct 
r600_resource_texture *texture)
-{
-       struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx;
-       struct pipe_framebuffer_state fb = *rctx->pframebuffer;
-       struct pipe_surface *zsurf, *cbsurf;
-       int level = 0;
-       float depth = 1.0f;
-
-       r600_context_queries_suspend(&rctx->ctx);
-       for (int i = 0; i < fb.nr_cbufs; i++) {
-               fb.cbufs[i] = NULL;
-               pipe_surface_reference(&fb.cbufs[i], 
rctx->pframebuffer->cbufs[i]);
-       }
-       fb.zsbuf = NULL;
-       pipe_surface_reference(&fb.zsbuf, rctx->pframebuffer->zsbuf);
-
-       zsurf = ctx->screen->get_tex_surface(ctx->screen, 
&texture->resource.base.b, 0, level, 0,
-                                            PIPE_BIND_DEPTH_STENCIL);
-
-       cbsurf = ctx->screen->get_tex_surface(ctx->screen, 
texture->flushed_depth_texture, 0, level, 0,
-                                             PIPE_BIND_RENDER_TARGET);
-
-       r600_blitter_save_states(ctx);
-       util_blitter_save_framebuffer(rctx->blitter, &fb);
-
-       if (rctx->family == CHIP_RV610 || rctx->family == CHIP_RV630 ||
-               rctx->family == CHIP_RV620 || rctx->family == CHIP_RV635)
-               depth = 0.0f;
-
-       util_blitter_custom_depth_stencil(rctx->blitter, zsurf, cbsurf, 
rctx->custom_dsa_flush, depth);
-
-       pipe_surface_reference(&zsurf, NULL);
-       pipe_surface_reference(&cbsurf, NULL);
-       for (int i = 0; i < fb.nr_cbufs; i++) {
-               pipe_surface_reference(&fb.cbufs[i], NULL);
-       }
-       pipe_surface_reference(&fb.zsbuf, NULL);
-       r600_context_queries_resume(&rctx->ctx);
-
-       return 0;
-}
-
-static void r600_clear(struct pipe_context *ctx, unsigned buffers,
-                       const float *rgba, double depth, unsigned stencil)
-{
-       struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx;
-       struct pipe_framebuffer_state *fb = &rctx->framebuffer;
-
-       r600_context_queries_suspend(&rctx->ctx);
-       r600_blitter_save_states(ctx);
-       util_blitter_clear(rctx->blitter, fb->width, fb->height,
-                               fb->nr_cbufs, buffers, rgba, depth,
-                               stencil);
-       r600_context_queries_resume(&rctx->ctx);
-}
-
-static void r600_clear_render_target(struct pipe_context *ctx,
-                                    struct pipe_surface *dst,
-                                    const float *rgba,
-                                    unsigned dstx, unsigned dsty,
-                                    unsigned width, unsigned height)
-{
-       struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx;
-       struct pipe_framebuffer_state *fb = &rctx->framebuffer;
-
-       r600_context_queries_suspend(&rctx->ctx);
-       util_blitter_save_framebuffer(rctx->blitter, fb);
-       util_blitter_clear_render_target(rctx->blitter, dst, rgba,
-                                        dstx, dsty, width, height);
-       r600_context_queries_resume(&rctx->ctx);
-}
-
-static void r600_clear_depth_stencil(struct pipe_context *ctx,
-                                    struct pipe_surface *dst,
-                                    unsigned clear_flags,
-                                    double depth,
-                                    unsigned stencil,
-                                    unsigned dstx, unsigned dsty,
-                                    unsigned width, unsigned height)
-{
-       struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx;
-       struct pipe_framebuffer_state *fb = &rctx->framebuffer;
-
-       r600_context_queries_suspend(&rctx->ctx);
-       util_blitter_save_framebuffer(rctx->blitter, fb);
-       util_blitter_clear_depth_stencil(rctx->blitter, dst, clear_flags, 
depth, stencil,
-                                        dstx, dsty, width, height);
-       r600_context_queries_resume(&rctx->ctx);
-}
-
-
-static void r600_resource_copy_region(struct pipe_context *ctx,
-                                     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)
-{
-       util_resource_copy_region(ctx, dst, subdst, dstx, dsty, dstz,
-                                 src, subsrc, srcx, srcy, srcz, width, height);
-}
-
-void r600_init_blit_functions2(struct r600_pipe_context *rctx)
-{
-       rctx->context.clear = r600_clear;
-       rctx->context.clear_render_target = r600_clear_render_target;
-       rctx->context.clear_depth_stencil = r600_clear_depth_stencil;
-       rctx->context.resource_copy_region = r600_resource_copy_region;
-}
-
 static void r600_set_blend_color(struct pipe_context *ctx,
                                        const struct pipe_blend_color *state)
 {
diff --git a/src/gallium/targets/dri-r600/target.c 
b/src/gallium/targets/dri-r600/target.c
index 2c1b2f5..8753e2b 100644
--- a/src/gallium/targets/dri-r600/target.c
+++ b/src/gallium/targets/dri-r600/target.c
@@ -1,33 +1,9 @@
-
 #include "state_tracker/drm_driver.h"
 #include "target-helpers/inline_debug_helper.h"
 #include "r600/drm/r600_drm_public.h"
 #include "r600/r600_public.h"
 
-#if 0
-static struct pipe_screen *
-create_screen(int fd)
-{
-   struct radeon *rw;
-   struct pipe_screen *screen;
-
-   rw = r600_drm_winsys_create(fd);
-   if (!rw)
-      return NULL;
-
-   screen = r600_screen_create(rw);
-   if (!screen)
-      return NULL;
-
-   screen = debug_screen_wrap(screen);
-
-   return screen;
-}
-#else
-struct radeon *r600_new(int fd, unsigned device);
-struct pipe_screen *r600_screen_create2(struct radeon *radeon);
-static struct pipe_screen *
-create_screen(int fd)
+static struct pipe_screen *create_screen(int fd)
 {
    struct radeon *radeon;
    struct pipe_screen *screen;
@@ -36,7 +12,7 @@ create_screen(int fd)
    if (!radeon)
       return NULL;
 
-   screen = r600_screen_create2(radeon);
+   screen = r600_screen_create(radeon);
    if (!screen)
       return NULL;
 
@@ -44,6 +20,5 @@ create_screen(int fd)
 
    return screen;
 }
-#endif
 
 DRM_DRIVER_DESCRIPTOR("r600", "radeon", create_screen)
diff --git a/src/gallium/winsys/r600/drm/Makefile 
b/src/gallium/winsys/r600/drm/Makefile
index 41e736c..f407817 100644
--- a/src/gallium/winsys/r600/drm/Makefile
+++ b/src/gallium/winsys/r600/drm/Makefile
@@ -6,14 +6,14 @@ LIBNAME = r600winsys
 
 C_SOURCES = \
        bof.c \
-       r600_state2.c \
-       evergreen_state.c \
-       r600.c \
-       r600_drm.c \
+       evergreen_hw_context.c \
        radeon_bo.c \
+       radeon_bo_pb.c \
        radeon_pciid.c \
        radeon_ws_bo.c \
-       radeon_bo_pb.c
+       r600.c \
+       r600_drm.c \
+       r600_hw_context.c
 
 LIBRARY_INCLUDES = -I$(TOP)/src/gallium/drivers/r600 \
                   $(shell pkg-config libdrm --cflags-only-I)
diff --git a/src/gallium/winsys/r600/drm/evergreen_state.c 
b/src/gallium/winsys/r600/drm/evergreen_hw_context.c
similarity index 100%
rename from src/gallium/winsys/r600/drm/evergreen_state.c
rename to src/gallium/winsys/r600/drm/evergreen_hw_context.c
diff --git a/src/gallium/winsys/r600/drm/r600_drm_public.h 
b/src/gallium/winsys/r600/drm/r600_drm_public.h
index 84f2dce..cfce8df 100644
--- a/src/gallium/winsys/r600/drm/r600_drm_public.h
+++ b/src/gallium/winsys/r600/drm/r600_drm_public.h
@@ -1,4 +1,28 @@
-
+/*
+ * Copyright 2010 Jerome Glisse <[email protected]>
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * on the rights to use, copy, modify, merge, publish, distribute, sub
+ * license, and/or sell copies of the Software, and to permit persons to whom
+ * the Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHOR(S) AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+ * USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * Authors:
+ *      Jerome Glisse
+ */
 #ifndef R600_DRM_PUBLIC_H
 #define R600_DRM_PUBLIC_H
 
diff --git a/src/gallium/winsys/r600/drm/r600_state2.c 
b/src/gallium/winsys/r600/drm/r600_hw_context.c
similarity index 100%
rename from src/gallium/winsys/r600/drm/r600_state2.c
rename to src/gallium/winsys/r600/drm/r600_hw_context.c

_______________________________________________
mesa-commit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to