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