softpipe: plug in softpipe's texture samplers into draw module.
authorBrian <brian.paul@tungstengraphics.com>
Wed, 3 Dec 2008 05:40:08 +0000 (22:40 -0700)
committerBrian <brian.paul@tungstengraphics.com>
Thu, 4 Dec 2008 16:58:54 +0000 (09:58 -0700)
src/gallium/drivers/softpipe/sp_context.c
src/gallium/drivers/softpipe/sp_context.h

index cd1e6663d863a3c5be055cdddc008f7c7f9da966..99b52748575d4b948365261def904d658ff2522d 100644 (file)
@@ -221,6 +221,14 @@ softpipe_create( struct pipe_screen *screen,
       softpipe->quad[i].output = sp_quad_output_stage(softpipe);
    }
 
+   for (i = 0; i < PIPE_MAX_SAMPLERS; i++) {
+      softpipe->tgsi.samplers[i].base.get_samples = sp_get_samples;
+      softpipe->tgsi.samplers[i].unit = i;
+      softpipe->tgsi.samplers[i].sp = softpipe;
+      softpipe->tgsi.samplers[i].cache = softpipe->tex_cache[i];
+      softpipe->tgsi.samplers_list[i] = &softpipe->tgsi.samplers[i];
+   }
+
    /*
     * Create drawing context and plug our rendering stage into it.
     */
@@ -228,6 +236,9 @@ softpipe_create( struct pipe_screen *screen,
    if (!softpipe->draw) 
       goto fail;
 
+   draw_texture_samplers(softpipe->draw,
+                         PIPE_MAX_SAMPLERS, softpipe->tgsi.samplers_list);
+
    softpipe->setup = sp_draw_render_stage(softpipe);
    if (!softpipe->setup)
       goto fail;
index 2b9a2a8ee5295017efe5a6e5207440b57824e65f..790143aecc9d4fa203013992be91f9e61bfbc1f6 100644 (file)
@@ -37,6 +37,7 @@
 #include "draw/draw_vertex.h"
 
 #include "sp_quad.h"
+#include "sp_tex_sample.h"
 
 
 /**
@@ -139,6 +140,12 @@ struct softpipe_context {
       struct quad_stage *first; /**< points to one of the above stages */
    } quad[SP_NUM_QUAD_THREADS];
 
+   /** TGSI exec things */
+   struct {
+      struct sp_shader_sampler samplers[PIPE_MAX_SAMPLERS];
+      struct sp_shader_sampler *samplers_list[PIPE_MAX_SAMPLERS];
+   } tgsi;
+
    /** The primitive drawing context */
    struct draw_context *draw;
    struct draw_stage *setup;