r300g: fix up after merge
authorKeith Whitwell <keithw@vmware.com>
Mon, 15 Mar 2010 10:24:55 +0000 (10:24 +0000)
committerKeith Whitwell <keithw@vmware.com>
Mon, 15 Mar 2010 10:24:55 +0000 (10:24 +0000)
src/gallium/drivers/r300/r300_blit.c
src/gallium/drivers/r300/r300_context.h
src/gallium/drivers/r300/r300_emit.c
src/gallium/drivers/r300/r300_state.c
src/gallium/drivers/r300/r300_state_derived.c

index a60b12844d6398b32816ad9681020ffd2f255cf1..f99f9dffaa544160ab9dc4678e5d09d762087d36 100644 (file)
@@ -114,8 +114,8 @@ static void r300_hw_copy(struct pipe_context* pipe,
         r300->blitter, state->sampler_count, (void**)state->sampler_states);
 
     util_blitter_save_fragment_sampler_views(
-        r300->blitter, r300->fragment_sampler_view_count,
-        r300->fragment_sampler_views);
+        r300->blitter, state->texture_count,
+        state->fragment_sampler_views);
 
     /* Do a copy */
     util_blitter_copy(r300->blitter,
index 2763103fda1b543cba2a0f52bb9b4493c607e47e..0c8fb6860eb93c5786eed5656e4e963f894361d8 100644 (file)
@@ -139,7 +139,7 @@ struct r300_texture_fb_state {
 
 struct r300_textures_state {
     /* Textures. */
-    struct r300_texture *textures[8];
+    struct pipe_sampler_view *fragment_sampler_views[8];
     int texture_count;
     /* Sampler states. */
     struct r300_sampler_state *sampler_states[8];
@@ -343,9 +343,8 @@ struct r300_context {
     struct r300_atom rs_block_state;
     /* Scissor state. */
     struct r300_atom scissor_state;
-    /* Sampler view states. */
-    struct pipe_sampler_view* fragment_sampler_views[8];
-    int fragment_sampler_view_count;
+    /* Textures state. */
+    struct r300_atom textures_state;
     /* Vertex stream formatting state. */
     struct r300_atom vertex_stream_state;
     /* VAP (vertex shader) output mapping state. */
index 0a3f0f45c032fbd02f8c757e0c0e596135f5d18a..3ad0e561bc13c5ecf36842fa7a3148e6e12d75b0 100644 (file)
@@ -165,7 +165,7 @@ static const float * get_shader_constant(
                 /* Factor for converting rectangle coords to
                  * normalized coords. Should only show up on non-r500. */
                 case RC_STATE_R300_TEXRECT_FACTOR:
-                    tex = r300->fragment_sampler_views[constant->u.State[1]]->texture;
+                    tex = texstate->fragment_sampler_views[constant->u.State[1]]->texture;
                     vec[0] = 1.0 / tex->width0;
                     vec[1] = 1.0 / tex->height0;
                     break;
@@ -749,8 +749,9 @@ void r300_emit_textures_state(struct r300_context *r300,
             OUT_CS_REG(R300_TX_FORMAT2_0 + (i * 4), texstate->format[2]);
 
             OUT_CS_REG_SEQ(R300_TX_OFFSET_0 + (i * 4), 1);
-            OUT_CS_TEX_RELOC(allstate->textures[i], texstate->tile_config,
-                         RADEON_GEM_DOMAIN_GTT | RADEON_GEM_DOMAIN_VRAM, 0, 0);
+            OUT_CS_TEX_RELOC((struct r300_texture *)allstate->fragment_sampler_views[i]->texture,
+                             texstate->tile_config,
+                             RADEON_GEM_DOMAIN_GTT | RADEON_GEM_DOMAIN_VRAM, 0, 0);
         }
     }
     END_CS;
@@ -1042,10 +1043,10 @@ validate:
         }
     }
     /* ...textures... */
-    for (i = 0; i < r300->fragment_sampler_view_count; i++) {
-        if (!r300->fragment_sampler_views[i])
+    for (i = 0; i < texstate->count; i++) {
+        tex = (struct r300_texture*)texstate->fragment_sampler_views[i]->texture;
+        if (!tex || !texstate->sampler_states[i])
             continue;
-        tex = (struct r300_texture *)r300->fragment_sampler_views[i]->texture;
         if (!r300_add_texture(r300->rws, tex,
                              RADEON_GEM_DOMAIN_GTT | RADEON_GEM_DOMAIN_VRAM, 0)) {
             r300->context.flush(&r300->context, 0, NULL);
index 71ac89715cc47ff6e2b091208bb4b0231d12b2b3..d7d654dc315c944055f33207c5e83b9e05d4fc5d 100644 (file)
@@ -938,6 +938,8 @@ static void r300_set_fragment_sampler_views(struct pipe_context* pipe,
                                             struct pipe_sampler_view** views)
 {
     struct r300_context* r300 = r300_context(pipe);
+    struct r300_textures_state* state =
+        (struct r300_textures_state*)r300->textures_state.state;
     unsigned i;
     boolean is_r500 = r300_screen(r300->context.screen)->caps->is_r500;
     boolean dirty_tex = FALSE;
@@ -948,16 +950,16 @@ static void r300_set_fragment_sampler_views(struct pipe_context* pipe,
     }
 
     for (i = 0; i < count; i++) {
-        if (r300->fragment_sampler_views[i] != views[i]) {
+        if (state->fragment_sampler_views[i] != views[i]) {
             struct r300_texture *texture;
-
-            pipe_sampler_view_reference(&r300->fragment_sampler_views[i],
-                views[i]);
+            pipe_sampler_view_reference(&state->fragment_sampler_views[i],
+                                        views[i]);
             dirty_tex = TRUE;
 
             texture = (struct r300_texture *)views[i]->texture;
 
-            /* R300-specific - set the texrect factor in a fragment shader */
+            /* R300-specific - set the texrect factor in the fragment shader */
             if (!is_r500 && texture->is_npot) {
                 /* XXX It would be nice to re-emit just 1 constant,
                  * XXX not all of them */
@@ -967,13 +969,13 @@ static void r300_set_fragment_sampler_views(struct pipe_context* pipe,
     }
 
     for (i = count; i < 8; i++) {
-        if (r300->fragment_sampler_views[i]) {
-            pipe_sampler_view_reference(&r300->fragment_sampler_views[i],
-                NULL);
+        if (state->fragment_sampler_views[i]) {
+            pipe_sampler_view_reference(&state->fragment_sampler_views[i],
+                                        NULL);
         }
     }
 
-    r300->fragment_sampler_view_count = count;
+    state->texture_count = count;
 
     r300->textures_state.dirty = TRUE;
 
@@ -987,7 +989,6 @@ r300_create_sampler_view(struct pipe_context *pipe,
                          struct pipe_texture *texture,
                          const struct pipe_sampler_view *templ)
 {
-   struct r300_context *r300 = r300_context(pipe);
    struct pipe_sampler_view *view = CALLOC_STRUCT(pipe_sampler_view);
 
    if (view) {
index 6b9f61acd7bcfc95279bb23b328c101c6ca1080b..7947ec6641dda86b6bdd8623baa0384c941e5ed6 100644 (file)
@@ -340,10 +340,10 @@ static void r300_merge_textures_and_samplers(struct r300_context* r300)
     size = 2;
 
     for (i = 0; i < count; i++) {
-        if (state->textures[i] && state->sampler_states[i]) {
+        if (state->fragment_sampler_views[i] && state->sampler_states[i]) {
             state->tx_enable |= 1 << i;
 
-            tex = state->textures[i];
+            tex = (struct r300_texture *)state->fragment_sampler_views[i]->texture;
             sampler = state->sampler_states[i];
 
             texstate = &state->regs[i];