softpipe: Use SATURATE
[mesa.git] / src / gallium / auxiliary / postprocess / pp_program.c
index c25078df6f1df8baa86294b67caa0abf38e9b2b3..65d7f957ac51566ee3f5922a476531f3d2cc3deb 100644 (file)
@@ -19,7 +19,7 @@
  * 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 AUTHORS BE LIABLE FOR
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 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.
@@ -27,6 +27,8 @@
  **************************************************************************/
 
 #include "postprocess/postprocess.h"
+#include "postprocess/pp_private.h"
+
 #include "cso_cache/cso_context.h"
 #include "pipe/p_screen.h"
 #include "pipe/p_context.h"
 #include "util/u_memory.h"
 
 /** Initialize the internal details */
-struct program *
+struct pp_program *
 pp_init_prog(struct pp_queue_t *ppq, struct pipe_context *pipe,
              struct cso_context *cso)
 {
-   struct program *p;
+   struct pp_program *p;
 
    pp_debug("Initializing program\n");
    if (!pipe)
       return NULL;
 
-   p = CALLOC(1, sizeof(struct program));
+   p = CALLOC(1, sizeof(struct pp_program));
    if (!p)
       return NULL;
 
@@ -76,7 +78,7 @@ pp_init_prog(struct pp_queue_t *ppq, struct pipe_context *pipe,
       };
 
       p->vbuf = pipe_buffer_create(pipe->screen, PIPE_BIND_VERTEX_BUFFER,
-                                   PIPE_USAGE_STATIC, sizeof(verts));
+                                   PIPE_USAGE_DEFAULT, sizeof(verts));
       pipe_buffer_write(p->pipe, p->vbuf, 0, sizeof(verts), verts);
    }
 
@@ -87,8 +89,10 @@ pp_init_prog(struct pp_queue_t *ppq, struct pipe_context *pipe,
       PIPE_BLENDFACTOR_INV_SRC_ALPHA;
 
    p->rasterizer.cull_face = PIPE_FACE_NONE;
-   p->rasterizer.gl_rasterization_rules = 1;
-   p->rasterizer.depth_clip = 1;
+   p->rasterizer.half_pixel_center = 1;
+   p->rasterizer.bottom_edge_rule = 1;
+   p->rasterizer.depth_clip_near = 1;
+   p->rasterizer.depth_clip_far = 1;
 
    p->sampler.wrap_s = p->sampler.wrap_t = p->sampler.wrap_r =
       PIPE_TEX_WRAP_CLAMP_TO_EDGE;
@@ -105,35 +109,35 @@ pp_init_prog(struct pp_queue_t *ppq, struct pipe_context *pipe,
       PIPE_TEX_FILTER_NEAREST;
    p->sampler_point.normalized_coords = 1;
 
-   p->velem[0].src_offset = 0;
-   p->velem[0].instance_divisor = 0;
-   p->velem[0].vertex_buffer_index = 0;
-   p->velem[0].src_format = PIPE_FORMAT_R32G32B32A32_FLOAT;
-   p->velem[1].src_offset = 1 * 4 * sizeof(float);
-   p->velem[1].instance_divisor = 0;
-   p->velem[1].vertex_buffer_index = 0;
-   p->velem[1].src_format = PIPE_FORMAT_R32G32B32A32_FLOAT;
+   p->velem.count = 2;
+   p->velem.velems[0].src_offset = 0;
+   p->velem.velems[0].instance_divisor = 0;
+   p->velem.velems[0].vertex_buffer_index = 0;
+   p->velem.velems[0].src_format = PIPE_FORMAT_R32G32B32A32_FLOAT;
+   p->velem.velems[1].src_offset = 1 * 4 * sizeof(float);
+   p->velem.velems[1].instance_divisor = 0;
+   p->velem.velems[1].vertex_buffer_index = 0;
+   p->velem.velems[1].src_format = PIPE_FORMAT_R32G32B32A32_FLOAT;
 
    if (!p->screen->is_format_supported(p->screen,
                                        PIPE_FORMAT_R32G32B32A32_FLOAT,
-                                       PIPE_BUFFER, 1,
+                                       PIPE_BUFFER, 1, 1,
                                        PIPE_BIND_VERTEX_BUFFER))
       pp_debug("Vertex buf format fail\n");
 
 
    {
-      const uint semantic_names[] = { TGSI_SEMANTIC_POSITION,
+      const enum tgsi_semantic semantic_names[] = { TGSI_SEMANTIC_POSITION,
          TGSI_SEMANTIC_GENERIC
       };
       const uint semantic_indexes[] = { 0, 0 };
       p->passvs = util_make_vertex_passthrough_shader(p->pipe, 2,
                                                       semantic_names,
-                                                      semantic_indexes);
+                                                      semantic_indexes, FALSE);
    }
 
    p->framebuffer.nr_cbufs = 1;
 
-   p->surf.usage = PIPE_BIND_RENDER_TARGET;
    p->surf.format = PIPE_FORMAT_B8G8R8A8_UNORM;
 
    return p;