13a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/**************************************************************************
23a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org *
33a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas.
43a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * All Rights Reserved.
53a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org *
63a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * Permission is hereby granted, free of charge, to any person obtaining a
73a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * copy of this software and associated documentation files (the
83a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * "Software"), to deal in the Software without restriction, including
93a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * without limitation the rights to use, copy, modify, merge, publish,
103a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * distribute, sub license, and/or sell copies of the Software, and to
113a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * permit persons to whom the Software is furnished to do so, subject to
123a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * the following conditions:
133a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org *
143a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * The above copyright notice and this permission notice (including the
153a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * next paragraph) shall be included in all copies or substantial portions
163a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * of the Software.
173a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org *
183a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
193a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
203a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
213a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
223a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
233a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
243a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
253a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org *
263a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org **************************************************************************/
273a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
283a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/* Authors:  Keith Whitwell <keith@tungstengraphics.com>
293a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org */
303a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#include "lp_context.h"
313a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#include "lp_state.h"
323a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#include "draw/draw_context.h"
333a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
343a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
35760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.orgstatic void
36760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.orgllvmpipe_set_clip_state(struct pipe_context *pipe,
37760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org                        const struct pipe_clip_state *clip)
383a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org{
393a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org   struct llvmpipe_context *llvmpipe = llvmpipe_context(pipe);
403a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
413a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org   /* pass the clip state to the draw module */
423a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org   draw_set_clip_state(llvmpipe->draw, clip);
433a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org}
443a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
453a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
46760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.orgstatic void
47760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.orgllvmpipe_set_viewport_state(struct pipe_context *pipe,
48760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org                            const struct pipe_viewport_state *viewport)
493a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org{
503a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org   struct llvmpipe_context *llvmpipe = llvmpipe_context(pipe);
513a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
523a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org   /* pass the viewport info to the draw module */
533a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org   draw_set_viewport_state(llvmpipe->draw, viewport);
543a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
553a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org   llvmpipe->viewport = *viewport; /* struct copy */
563a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org   llvmpipe->dirty |= LP_NEW_VIEWPORT;
573a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org}
583a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
593a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
60760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.orgstatic void
61760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.orgllvmpipe_set_scissor_state(struct pipe_context *pipe,
62760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org                           const struct pipe_scissor_state *scissor)
633a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org{
643a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org   struct llvmpipe_context *llvmpipe = llvmpipe_context(pipe);
653a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
663a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org   draw_flush(llvmpipe->draw);
673a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
683a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org   llvmpipe->scissor = *scissor; /* struct copy */
693a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org   llvmpipe->dirty |= LP_NEW_SCISSOR;
703a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org}
713a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
723a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
73760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.orgstatic void
74760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.orgllvmpipe_set_polygon_stipple(struct pipe_context *pipe,
75760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org                             const struct pipe_poly_stipple *stipple)
763a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org{
773a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org   struct llvmpipe_context *llvmpipe = llvmpipe_context(pipe);
783a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
793a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org   draw_flush(llvmpipe->draw);
803a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
813a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org   llvmpipe->poly_stipple = *stipple; /* struct copy */
823a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org   llvmpipe->dirty |= LP_NEW_STIPPLE;
833a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org}
84760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org
85760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org
86760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org
87760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.orgvoid
88760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.orgllvmpipe_init_clip_funcs(struct llvmpipe_context *llvmpipe)
89760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org{
90760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org   llvmpipe->pipe.set_clip_state = llvmpipe_set_clip_state;
91760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org   llvmpipe->pipe.set_polygon_stipple = llvmpipe_set_polygon_stipple;
92760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org   llvmpipe->pipe.set_scissor_state = llvmpipe_set_scissor_state;
93760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org   llvmpipe->pipe.set_viewport_state = llvmpipe_set_viewport_state;
94760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org}
95