Merge branch 'gallium-userbuf'
[mesa.git] / src / gallium / drivers / r600 / r600_state.c
index 9d3197419e596aee545f6f55bbd6e4a93307e5da..acf59f80bf49cf80affe97dc000158c64d0df0cd 100644 (file)
@@ -805,9 +805,9 @@ static void *r600_create_dsa_state(struct pipe_context *ctx,
                alpha_test_control |= S_028410_ALPHA_TEST_ENABLE(1);
                alpha_ref = fui(state->alpha.ref_value);
        }
+       dsa->sx_alpha_test_control = alpha_test_control & 0xff;
        dsa->alpha_ref = alpha_ref;
 
-       r600_pipe_state_add_reg(rstate, R_028410_SX_ALPHA_TEST_CONTROL, alpha_test_control);
        r600_pipe_state_add_reg(rstate, R_028800_DB_DEPTH_CONTROL, db_depth_control);
        return rstate;
 }
@@ -1260,7 +1260,7 @@ static void r600_set_clip_state(struct pipe_context *ctx,
 {
        struct r600_context *rctx = (struct r600_context *)ctx;
        struct r600_pipe_state *rstate = CALLOC_STRUCT(r600_pipe_state);
-       struct pipe_resource * cbuf;
+       struct pipe_constant_buffer cb;
 
        if (rstate == NULL)
                return;
@@ -1286,12 +1286,12 @@ static void r600_set_clip_state(struct pipe_context *ctx,
        rctx->states[R600_PIPE_STATE_CLIP] = rstate;
        r600_context_pipe_state_set(rctx, rstate);
 
-       cbuf = pipe_user_buffer_create(ctx->screen,
-                                   state->ucp,
-                                   4*4*8, /* 8*4 floats */
-                                   PIPE_BIND_CONSTANT_BUFFER);
-       r600_set_constant_buffer(ctx, PIPE_SHADER_VERTEX, 1, cbuf);
-       pipe_resource_reference(&cbuf, NULL);
+       cb.buffer = NULL;
+       cb.user_buffer = state->ucp;
+       cb.buffer_offset = 0;
+       cb.buffer_size = 4*4*8;
+       r600_set_constant_buffer(ctx, PIPE_SHADER_VERTEX, 1, &cb);
+       pipe_resource_reference(&cb.buffer, NULL);
 }
 
 static void r600_set_polygon_stipple(struct pipe_context *ctx,
@@ -1451,7 +1451,7 @@ static void r600_cb(struct r600_context *rctx, struct r600_pipe_state *rstate,
 
        format = r600_translate_colorformat(surf->base.format);
        swap = r600_translate_colorswap(surf->base.format);
-       if(rtex->resource.b.b.b.usage == PIPE_USAGE_STAGING) {
+       if(rtex->resource.b.b.usage == PIPE_USAGE_STAGING) {
                endian = ENDIAN_NONE;
        } else {
                endian = r600_colorformat_endian_swap(format);
@@ -1466,6 +1466,11 @@ static void r600_cb(struct r600_context *rctx, struct r600_pipe_state *rstate,
                blend_bypass = 1;
        }
 
+       if (ntype == V_0280A0_NUMBER_UINT || ntype == V_0280A0_NUMBER_SINT)
+               rctx->sx_alpha_test_control |= S_028410_ALPHA_TEST_BYPASS(1);
+       else
+               rctx->sx_alpha_test_control &= C_028410_ALPHA_TEST_BYPASS;
+
        color_info |= S_0280A0_FORMAT(format) |
                S_0280A0_COMP_SWAP(swap) |
                S_0280A0_BLEND_BYPASS(blend_bypass) |
@@ -1692,8 +1697,8 @@ static void r600_emit_db_misc_state(struct r600_context *rctx, struct r600_atom
 static void r600_emit_vertex_buffers(struct r600_context *rctx, struct r600_atom *atom)
 {
        struct radeon_winsys_cs *cs = rctx->cs;
-       struct pipe_vertex_buffer *vb = rctx->vbuf_mgr->real_vertex_buffer;
-       unsigned count = rctx->vbuf_mgr->nr_real_vertex_buffers;
+       struct pipe_vertex_buffer *vb = rctx->vertex_buffer;
+       unsigned count = rctx->nr_vertex_buffers;
        unsigned i, offset;
 
        for (i = 0; i < count; i++) {
@@ -1733,7 +1738,7 @@ static void r600_emit_constant_buffers(struct r600_context *rctx,
        uint32_t dirty_mask = state->dirty_mask;
 
        while (dirty_mask) {
-               struct r600_constant_buffer *cb;
+               struct pipe_constant_buffer *cb;
                struct r600_resource *rbuffer;
                unsigned offset;
                unsigned buffer_index = ffs(dirty_mask) - 1;
@@ -1830,7 +1835,6 @@ void r600_init_state_functions(struct r600_context *rctx)
        rctx->context.set_vertex_sampler_views = r600_set_vs_sampler_views;
        rctx->context.set_viewport_state = r600_set_viewport_state;
        rctx->context.sampler_view_destroy = r600_sampler_view_destroy;
-       rctx->context.redefine_user_buffer = u_default_redefine_user_buffer;
        rctx->context.texture_barrier = r600_texture_barrier;
        rctx->context.create_stream_output_target = r600_create_so_target;
        rctx->context.stream_output_target_destroy = r600_so_target_destroy;