gallium/postprocess: share pipe_context and cso_context with the state tracker
[mesa.git] / src / gallium / auxiliary / postprocess / pp_program.c
index b92ac80a5dbd236b63fe8a29cb9aef96933477cb..c25078df6f1df8baa86294b67caa0abf38e9b2b3 100644 (file)
 #include "pipe/p_shader_tokens.h"
 #include "util/u_inlines.h"
 #include "util/u_simple_shaders.h"
+#include "util/u_memory.h"
 
 /** Initialize the internal details */
 struct program *
-pp_init_prog(struct pp_queue_t *ppq, struct pipe_screen *pscreen)
+pp_init_prog(struct pp_queue_t *ppq, struct pipe_context *pipe,
+             struct cso_context *cso)
 {
-
-   struct program *p = calloc(1, sizeof(struct program));
+   struct program *p;
 
    pp_debug("Initializing program\n");
-   if (!pscreen)
+   if (!pipe)
       return NULL;
 
+   p = CALLOC(1, sizeof(struct program));
    if (!p)
       return NULL;
 
-   p->screen = pscreen;
-   p->pipe = pscreen->context_create(pscreen, NULL);
-   p->cso = cso_create_context(p->pipe);
+   p->screen = pipe->screen;
+   p->pipe = pipe;
+   p->cso = cso;
 
    {
       static const float verts[4][2][4] = {
@@ -73,7 +75,7 @@ pp_init_prog(struct pp_queue_t *ppq, struct pipe_screen *pscreen)
           }
       };
 
-      p->vbuf = pipe_buffer_create(pscreen, PIPE_BIND_VERTEX_BUFFER,
+      p->vbuf = pipe_buffer_create(pipe->screen, PIPE_BIND_VERTEX_BUFFER,
                                    PIPE_USAGE_STATIC, sizeof(verts));
       pipe_buffer_write(p->pipe, p->vbuf, 0, sizeof(verts), verts);
    }
@@ -86,6 +88,7 @@ pp_init_prog(struct pp_queue_t *ppq, struct pipe_screen *pscreen)
 
    p->rasterizer.cull_face = PIPE_FACE_NONE;
    p->rasterizer.gl_rasterization_rules = 1;
+   p->rasterizer.depth_clip = 1;
 
    p->sampler.wrap_s = p->sampler.wrap_t = p->sampler.wrap_r =
       PIPE_TEX_WRAP_CLAMP_TO_EDGE;
@@ -133,7 +136,5 @@ pp_init_prog(struct pp_queue_t *ppq, struct pipe_screen *pscreen)
    p->surf.usage = PIPE_BIND_RENDER_TARGET;
    p->surf.format = PIPE_FORMAT_B8G8R8A8_UNORM;
 
-   p->pipe->set_sample_mask(p->pipe, ~0);
-
    return p;
 }