nv50_state.c revision cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1
147b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs#include "pipe/p_state.h" 247b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs#include "pipe/p_defines.h" 347b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs#include "pipe/p_util.h" 447b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs 547b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs#include "nv50_context.h" 647b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs#include "nv50_state.h" 747b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs 83250bacd2411d3f1af50135599380b2140238535Ben Skeggs#include "nouveau/nouveau_stateobj.h" 93250bacd2411d3f1af50135599380b2140238535Ben Skeggs 1047b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggsstatic void * 1147b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggsnv50_blend_state_create(struct pipe_context *pipe, 1247b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs const struct pipe_blend_state *cso) 1347b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs{ 143250bacd2411d3f1af50135599380b2140238535Ben Skeggs struct nouveau_stateobj *so = so_new(64, 0); 153250bacd2411d3f1af50135599380b2140238535Ben Skeggs struct nouveau_grobj *tesla = nv50_context(pipe)->screen->tesla; 163250bacd2411d3f1af50135599380b2140238535Ben Skeggs struct nv50_blend_stateobj *bso = CALLOC_STRUCT(nv50_blend_stateobj); 173250bacd2411d3f1af50135599380b2140238535Ben Skeggs unsigned cmask = 0, i; 183250bacd2411d3f1af50135599380b2140238535Ben Skeggs 193250bacd2411d3f1af50135599380b2140238535Ben Skeggs /*XXX ignored: 203250bacd2411d3f1af50135599380b2140238535Ben Skeggs * - dither 213250bacd2411d3f1af50135599380b2140238535Ben Skeggs */ 223250bacd2411d3f1af50135599380b2140238535Ben Skeggs 233250bacd2411d3f1af50135599380b2140238535Ben Skeggs if (cso->blend_enable == 0) { 243250bacd2411d3f1af50135599380b2140238535Ben Skeggs so_method(so, tesla, NV50TCL_BLEND_ENABLE(0), 8); 253250bacd2411d3f1af50135599380b2140238535Ben Skeggs for (i = 0; i < 8; i++) 263250bacd2411d3f1af50135599380b2140238535Ben Skeggs so_data(so, 0); 273250bacd2411d3f1af50135599380b2140238535Ben Skeggs } else { 283250bacd2411d3f1af50135599380b2140238535Ben Skeggs so_method(so, tesla, NV50TCL_BLEND_ENABLE(0), 8); 293250bacd2411d3f1af50135599380b2140238535Ben Skeggs for (i = 0; i < 8; i++) 303250bacd2411d3f1af50135599380b2140238535Ben Skeggs so_data(so, 1); 313250bacd2411d3f1af50135599380b2140238535Ben Skeggs so_method(so, tesla, NV50TCL_BLEND_EQUATION_RGB, 5); 323250bacd2411d3f1af50135599380b2140238535Ben Skeggs so_data (so, nvgl_blend_eqn(cso->rgb_func)); 333250bacd2411d3f1af50135599380b2140238535Ben Skeggs so_data (so, nvgl_blend_func(cso->rgb_src_factor)); 343250bacd2411d3f1af50135599380b2140238535Ben Skeggs so_data (so, nvgl_blend_func(cso->rgb_dst_factor)); 353250bacd2411d3f1af50135599380b2140238535Ben Skeggs so_data (so, nvgl_blend_eqn(cso->alpha_func)); 363250bacd2411d3f1af50135599380b2140238535Ben Skeggs so_data (so, nvgl_blend_func(cso->alpha_src_factor)); 373250bacd2411d3f1af50135599380b2140238535Ben Skeggs so_method(so, tesla, NV50TCL_BLEND_FUNC_DST_ALPHA, 1); 383250bacd2411d3f1af50135599380b2140238535Ben Skeggs so_data (so, nvgl_blend_func(cso->alpha_dst_factor)); 393250bacd2411d3f1af50135599380b2140238535Ben Skeggs } 403250bacd2411d3f1af50135599380b2140238535Ben Skeggs 413250bacd2411d3f1af50135599380b2140238535Ben Skeggs if (cso->logicop_enable == 0 ) { 423250bacd2411d3f1af50135599380b2140238535Ben Skeggs so_method(so, tesla, NV50TCL_LOGIC_OP_ENABLE, 1); 433250bacd2411d3f1af50135599380b2140238535Ben Skeggs so_data (so, 0); 443250bacd2411d3f1af50135599380b2140238535Ben Skeggs } else { 453250bacd2411d3f1af50135599380b2140238535Ben Skeggs so_method(so, tesla, NV50TCL_LOGIC_OP_ENABLE, 2); 463250bacd2411d3f1af50135599380b2140238535Ben Skeggs so_data (so, 1); 473250bacd2411d3f1af50135599380b2140238535Ben Skeggs so_data (so, nvgl_logicop_func(cso->logicop_func)); 483250bacd2411d3f1af50135599380b2140238535Ben Skeggs } 493250bacd2411d3f1af50135599380b2140238535Ben Skeggs 503250bacd2411d3f1af50135599380b2140238535Ben Skeggs if (cso->colormask & PIPE_MASK_R) 513250bacd2411d3f1af50135599380b2140238535Ben Skeggs cmask |= (1 << 0); 523250bacd2411d3f1af50135599380b2140238535Ben Skeggs if (cso->colormask & PIPE_MASK_G) 533250bacd2411d3f1af50135599380b2140238535Ben Skeggs cmask |= (1 << 4); 543250bacd2411d3f1af50135599380b2140238535Ben Skeggs if (cso->colormask & PIPE_MASK_B) 553250bacd2411d3f1af50135599380b2140238535Ben Skeggs cmask |= (1 << 8); 563250bacd2411d3f1af50135599380b2140238535Ben Skeggs if (cso->colormask & PIPE_MASK_A) 573250bacd2411d3f1af50135599380b2140238535Ben Skeggs cmask |= (1 << 12); 583250bacd2411d3f1af50135599380b2140238535Ben Skeggs so_method(so, tesla, NV50TCL_COLOR_MASK(0), 8); 593250bacd2411d3f1af50135599380b2140238535Ben Skeggs for (i = 0; i < 8; i++) 603250bacd2411d3f1af50135599380b2140238535Ben Skeggs so_data(so, cmask); 613250bacd2411d3f1af50135599380b2140238535Ben Skeggs 623250bacd2411d3f1af50135599380b2140238535Ben Skeggs bso->pipe = *cso; 633250bacd2411d3f1af50135599380b2140238535Ben Skeggs so_ref(so, &bso->so); 643250bacd2411d3f1af50135599380b2140238535Ben Skeggs return (void *)bso; 6547b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs} 6647b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs 6747b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggsstatic void 6847b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggsnv50_blend_state_bind(struct pipe_context *pipe, void *hwcso) 6947b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs{ 703250bacd2411d3f1af50135599380b2140238535Ben Skeggs struct nv50_context *nv50 = nv50_context(pipe); 713250bacd2411d3f1af50135599380b2140238535Ben Skeggs 723250bacd2411d3f1af50135599380b2140238535Ben Skeggs nv50->blend = hwcso; 733250bacd2411d3f1af50135599380b2140238535Ben Skeggs nv50->dirty |= NV50_NEW_BLEND; 7447b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs} 7547b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs 7647b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggsstatic void 7747b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggsnv50_blend_state_delete(struct pipe_context *pipe, void *hwcso) 7847b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs{ 793250bacd2411d3f1af50135599380b2140238535Ben Skeggs struct nv50_blend_stateobj *bso = hwcso; 803250bacd2411d3f1af50135599380b2140238535Ben Skeggs 813250bacd2411d3f1af50135599380b2140238535Ben Skeggs so_ref(NULL, &bso->so); 823250bacd2411d3f1af50135599380b2140238535Ben Skeggs FREE(bso); 8347b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs} 8447b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs 8547b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggsstatic void * 8647b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggsnv50_sampler_state_create(struct pipe_context *pipe, 8747b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs const struct pipe_sampler_state *cso) 8847b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs{ 8979bca7dd884da33c06ecd3dabb893f9cfed1aaedBen Skeggs return NULL; 9047b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs} 9147b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs 9247b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggsstatic void 9347b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggsnv50_sampler_state_bind(struct pipe_context *pipe, unsigned unit, 9447b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs void *hwcso) 9547b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs{ 9647b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs} 9747b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs 9847b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggsstatic void 9947b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggsnv50_sampler_state_delete(struct pipe_context *pipe, void *hwcso) 10047b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs{ 10147b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs} 10247b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs 10379bca7dd884da33c06ecd3dabb893f9cfed1aaedBen Skeggsstatic void 10479bca7dd884da33c06ecd3dabb893f9cfed1aaedBen Skeggsnv50_set_sampler_texture(struct pipe_context *pipe, unsigned unit, 10579bca7dd884da33c06ecd3dabb893f9cfed1aaedBen Skeggs struct pipe_texture *pt) 10679bca7dd884da33c06ecd3dabb893f9cfed1aaedBen Skeggs{ 10779bca7dd884da33c06ecd3dabb893f9cfed1aaedBen Skeggs} 10879bca7dd884da33c06ecd3dabb893f9cfed1aaedBen Skeggs 10947b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggsstatic void * 11047b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggsnv50_rasterizer_state_create(struct pipe_context *pipe, 11147b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs const struct pipe_rasterizer_state *cso) 11247b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs{ 113cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs struct nouveau_stateobj *so = so_new(64, 0); 114cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs struct nouveau_grobj *tesla = nv50_context(pipe)->screen->tesla; 115cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs struct nv50_rasterizer_stateobj *rso = 116cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs CALLOC_STRUCT(nv50_rasterizer_stateobj); 117cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs unsigned i; 118cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs 119cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs /*XXX: ignored 120cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs * - light_twosize 121cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs * - point_smooth 122cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs * - multisample 123cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs * - point_sprite / sprite_coord_mode 124cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs */ 125cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs 126cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs so_method(so, tesla, NV50TCL_SHADE_MODEL, 1); 127cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs so_data (so, cso->flatshade ? NV50TCL_SHADE_MODEL_FLAT : 128cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs NV50TCL_SHADE_MODEL_SMOOTH); 129cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs 130cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs so_method(so, tesla, NV50TCL_LINE_WIDTH, 1); 131cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs so_data (so, fui(cso->line_width)); 132cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs so_method(so, tesla, NV50TCL_LINE_SMOOTH_ENABLE, 1); 133cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs so_data (so, cso->line_smooth ? 1 : 0); 134cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs if (cso->line_stipple_enable) { 135cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs so_method(so, tesla, NV50TCL_LINE_STIPPLE_ENABLE, 1); 136cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs so_data (so, 1); 137cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs so_method(so, tesla, NV50TCL_LINE_STIPPLE_PATTERN, 1); 138cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs so_data (so, (cso->line_stipple_pattern << 16) | 139cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs cso->line_stipple_factor); 140cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs } else { 141cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs so_method(so, tesla, NV50TCL_LINE_STIPPLE_ENABLE, 1); 142cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs so_data (so, 0); 143cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs } 144cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs 145cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs so_method(so, tesla, NV50TCL_POINT_SIZE, 1); 146cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs so_data (so, fui(cso->point_size)); 147cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs 148cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs so_method(so, tesla, NV50TCL_POLYGON_MODE_FRONT, 3); 149cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs if (cso->front_winding == PIPE_WINDING_CCW) { 150cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs so_data(so, nvgl_polygon_mode(cso->fill_ccw)); 151cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs so_data(so, nvgl_polygon_mode(cso->fill_cw)); 152cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs } else { 153cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs so_data(so, nvgl_polygon_mode(cso->fill_cw)); 154cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs so_data(so, nvgl_polygon_mode(cso->fill_ccw)); 155cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs } 156cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs so_data(so, cso->poly_smooth ? 1 : 0); 157cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs 158cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs so_method(so, tesla, NV50TCL_CULL_FACE_ENABLE, 3); 159cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs so_data (so, cso->cull_mode != PIPE_WINDING_NONE); 160cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs if (cso->front_winding == PIPE_WINDING_CCW) { 161cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs so_data(so, NV50TCL_FRONT_FACE_CCW); 162cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs switch (cso->cull_mode) { 163cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs case PIPE_WINDING_CCW: 164cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs so_data(so, NV50TCL_CULL_FACE_FRONT); 165cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs break; 166cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs case PIPE_WINDING_CW: 167cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs so_data(so, NV50TCL_CULL_FACE_BACK); 168cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs break; 169cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs case PIPE_WINDING_BOTH: 170cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs so_data(so, NV50TCL_CULL_FACE_FRONT_AND_BACK); 171cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs break; 172cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs default: 173cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs so_data(so, NV50TCL_CULL_FACE_BACK); 174cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs break; 175cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs } 176cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs } else { 177cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs so_data(so, NV50TCL_FRONT_FACE_CW); 178cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs switch (cso->cull_mode) { 179cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs case PIPE_WINDING_CCW: 180cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs so_data(so, NV50TCL_CULL_FACE_BACK); 181cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs break; 182cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs case PIPE_WINDING_CW: 183cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs so_data(so, NV50TCL_CULL_FACE_FRONT); 184cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs break; 185cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs case PIPE_WINDING_BOTH: 186cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs so_data(so, NV50TCL_CULL_FACE_FRONT_AND_BACK); 187cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs break; 188cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs default: 189cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs so_data(so, NV50TCL_CULL_FACE_BACK); 190cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs break; 191cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs } 192cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs } 193cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs 194cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs so_method(so, tesla, NV50TCL_POLYGON_STIPPLE_ENABLE, 1); 195cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs so_data (so, cso->poly_stipple_enable ? 1 : 0); 196cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs 197cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs so_method(so, tesla, NV50TCL_POLYGON_OFFSET_POINT_ENABLE, 3); 198cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs if ((cso->offset_cw && cso->fill_cw == PIPE_POLYGON_MODE_POINT) || 199cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs (cso->offset_ccw && cso->fill_ccw == PIPE_POLYGON_MODE_POINT)) 200cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs so_data(so, 1); 201cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs else 202cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs so_data(so, 0); 203cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs if ((cso->offset_cw && cso->fill_cw == PIPE_POLYGON_MODE_LINE) || 204cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs (cso->offset_ccw && cso->fill_ccw == PIPE_POLYGON_MODE_LINE)) 205cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs so_data(so, 1); 206cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs else 207cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs so_data(so, 0); 208cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs if ((cso->offset_cw && cso->fill_cw == PIPE_POLYGON_MODE_FILL) || 209cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs (cso->offset_ccw && cso->fill_ccw == PIPE_POLYGON_MODE_FILL)) 210cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs so_data(so, 1); 211cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs else 212cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs so_data(so, 0); 213cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs 214cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs if (cso->offset_cw || cso->offset_ccw) { 215cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs so_method(so, tesla, NV50TCL_POLYGON_OFFSET_FACTOR, 1); 216cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs so_data (so, fui(cso->offset_scale)); 217cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs so_method(so, tesla, NV50TCL_POLYGON_OFFSET_UNITS, 1); 218cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs so_data (so, fui(cso->offset_units * 2)); 219cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs } 220cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs 221cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs rso->pipe = *cso; 222cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs so_ref(so, &rso->so); 223cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs return (void *)rso; 22447b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs} 22547b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs 22647b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggsstatic void 22747b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggsnv50_rasterizer_state_bind(struct pipe_context *pipe, void *hwcso) 22847b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs{ 229cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs struct nv50_context *nv50 = nv50_context(pipe); 230cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs 231cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs nv50->rasterizer = hwcso; 232cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs nv50->dirty |= NV50_NEW_RASTERIZER; 23347b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs} 23447b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs 23547b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggsstatic void 23647b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggsnv50_rasterizer_state_delete(struct pipe_context *pipe, void *hwcso) 23747b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs{ 238cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs struct nv50_rasterizer_stateobj *rso = hwcso; 239cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs 240cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs so_ref(NULL, &rso->so); 241cd85dc1e5dfa37cb9bee696e5e18332e3f1d65a1Ben Skeggs FREE(rso); 24247b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs} 24347b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs 24447b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggsstatic void * 2453af35c6dfa4db1cbf830731882e61d57741f2898Ben Skeggsnv50_depth_stencil_alpha_state_create(struct pipe_context *pipe, 2463af35c6dfa4db1cbf830731882e61d57741f2898Ben Skeggs const struct pipe_depth_stencil_alpha_state *cso) 24747b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs{ 24806bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs struct nouveau_grobj *tesla = nv50_context(pipe)->screen->tesla; 24906bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs struct nv50_zsa_stateobj *zsa = CALLOC_STRUCT(nv50_zsa_stateobj); 25006bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs struct nouveau_stateobj *so = so_new(64, 0); 25106bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs 25206bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs so_method(so, tesla, NV50TCL_DEPTH_WRITE_ENABLE, 1); 25306bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs so_data (so, cso->depth.writemask ? 1 : 0); 25406bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs if (cso->depth.enabled) { 25506bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs so_method(so, tesla, NV50TCL_DEPTH_TEST_ENABLE, 1); 25606bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs so_data (so, 1); 25706bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs so_method(so, tesla, NV50TCL_DEPTH_TEST_FUNC, 1); 25806bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs so_data (so, nvgl_comparison_op(cso->depth.func)); 25906bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs } else { 26006bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs so_method(so, tesla, NV50TCL_DEPTH_TEST_ENABLE, 1); 26106bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs so_data (so, 0); 26206bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs } 26306bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs 26406bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs if (cso->stencil[0].enabled) { 26506bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs so_method(so, tesla, NV50TCL_STENCIL_FRONT_ENABLE, 5); 26606bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs so_data (so, 1); 26706bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs so_data (so, nvgl_stencil_op(cso->stencil[0].fail_op)); 26806bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs so_data (so, nvgl_stencil_op(cso->stencil[0].zfail_op)); 26906bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs so_data (so, nvgl_stencil_op(cso->stencil[0].zpass_op)); 27006bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs so_data (so, nvgl_comparison_op(cso->stencil[0].func)); 27106bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs so_method(so, tesla, NV50TCL_STENCIL_FRONT_FUNC_REF, 3); 27206bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs so_data (so, cso->stencil[0].ref_value); 27306bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs so_data (so, cso->stencil[0].write_mask); 27406bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs so_data (so, cso->stencil[0].value_mask); 27506bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs } else { 27606bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs so_method(so, tesla, NV50TCL_STENCIL_FRONT_ENABLE, 1); 27706bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs so_data (so, 0); 27806bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs } 27906bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs 28006bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs if (cso->stencil[1].enabled) { 28106bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs so_method(so, tesla, NV50TCL_STENCIL_BACK_ENABLE, 8); 28206bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs so_data (so, 1); 28306bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs so_data (so, nvgl_stencil_op(cso->stencil[1].fail_op)); 28406bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs so_data (so, nvgl_stencil_op(cso->stencil[1].zfail_op)); 28506bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs so_data (so, nvgl_stencil_op(cso->stencil[1].zpass_op)); 28606bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs so_data (so, nvgl_comparison_op(cso->stencil[1].func)); 28706bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs so_data (so, cso->stencil[1].ref_value); 28806bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs so_data (so, cso->stencil[1].write_mask); 28906bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs so_data (so, cso->stencil[1].value_mask); 29006bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs } else { 29106bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs so_method(so, tesla, NV50TCL_STENCIL_BACK_ENABLE, 1); 29206bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs so_data (so, 0); 29306bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs } 29406bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs 29506bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs if (cso->alpha.enabled) { 29606bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs so_method(so, tesla, NV50TCL_ALPHA_TEST_ENABLE, 1); 29706bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs so_data (so, 1); 29806bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs so_method(so, tesla, NV50TCL_ALPHA_TEST_REF, 2); 29906bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs so_data (so, fui(cso->alpha.ref)); 30006bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs so_data (so, nvgl_comparison_op(cso->alpha.func)); 30106bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs } else { 30206bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs so_method(so, tesla, NV50TCL_ALPHA_TEST_ENABLE, 1); 30306bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs so_data (so, 0); 30406bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs } 30506bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs 30606bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs zsa->pipe = *cso; 30706bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs so_ref(so, &zsa->so); 30806bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs return (void *)zsa; 30947b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs} 31047b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs 31147b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggsstatic void 3123af35c6dfa4db1cbf830731882e61d57741f2898Ben Skeggsnv50_depth_stencil_alpha_state_bind(struct pipe_context *pipe, void *hwcso) 31347b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs{ 31406bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs struct nv50_context *nv50 = nv50_context(pipe); 31506bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs 31606bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs nv50->zsa = hwcso; 31706bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs nv50->dirty |= NV50_NEW_ZSA; 31847b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs} 31947b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs 32047b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggsstatic void 3213af35c6dfa4db1cbf830731882e61d57741f2898Ben Skeggsnv50_depth_stencil_alpha_state_delete(struct pipe_context *pipe, void *hwcso) 32247b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs{ 32306bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs struct nv50_zsa_stateobj *zsa = hwcso; 32406bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs 32506bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs so_ref(NULL, &zsa->so); 32606bd7d78b979df66915b161157f2b6b1c09ad285Ben Skeggs FREE(zsa); 32747b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs} 32847b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs 32947b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggsstatic void * 33047b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggsnv50_vp_state_create(struct pipe_context *pipe, 33147b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs const struct pipe_shader_state *cso) 33247b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs{ 3339bac4c7268cdbc79a1ce2d05779ed05c32e1e57bBen Skeggs return NULL; 33447b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs} 33547b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs 33647b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggsstatic void 33747b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggsnv50_vp_state_bind(struct pipe_context *pipe, void *hwcso) 33847b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs{ 33947b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs} 34047b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs 34147b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggsstatic void 34247b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggsnv50_vp_state_delete(struct pipe_context *pipe, void *hwcso) 34347b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs{ 34447b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs} 34547b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs 34647b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggsstatic void * 34747b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggsnv50_fp_state_create(struct pipe_context *pipe, 34847b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs const struct pipe_shader_state *cso) 34947b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs{ 3509bac4c7268cdbc79a1ce2d05779ed05c32e1e57bBen Skeggs return NULL; 35147b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs} 35247b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs 35347b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggsstatic void 35447b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggsnv50_fp_state_bind(struct pipe_context *pipe, void *hwcso) 35547b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs{ 35647b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs} 35747b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs 35847b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggsstatic void 35947b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggsnv50_fp_state_delete(struct pipe_context *pipe, void *hwcso) 36047b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs{ 36147b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs} 36247b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs 36347b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggsstatic void 36447b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggsnv50_set_blend_color(struct pipe_context *pipe, 36547b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs const struct pipe_blend_color *bcol) 36647b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs{ 3672fee5f76483feb301546b24c26eea699732ffb57Ben Skeggs struct nv50_context *nv50 = nv50_context(pipe); 3682fee5f76483feb301546b24c26eea699732ffb57Ben Skeggs 3692fee5f76483feb301546b24c26eea699732ffb57Ben Skeggs nv50->blend_colour = *bcol; 3702fee5f76483feb301546b24c26eea699732ffb57Ben Skeggs nv50->dirty |= NV50_NEW_BLEND_COLOUR; 37147b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs} 37247b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs 37347b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggsstatic void 37447b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggsnv50_set_clip_state(struct pipe_context *pipe, 37547b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs const struct pipe_clip_state *clip) 37647b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs{ 37747b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs} 37847b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs 37947b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggsstatic void 38047b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggsnv50_set_constant_buffer(struct pipe_context *pipe, uint shader, uint index, 38147b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs const struct pipe_constant_buffer *buf ) 38247b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs{ 38347b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs} 38447b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs 38547b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggsstatic void 38647b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggsnv50_set_framebuffer_state(struct pipe_context *pipe, 38747b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs const struct pipe_framebuffer_state *fb) 38847b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs{ 38947b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs} 39047b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs 39147b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggsstatic void 39247b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggsnv50_set_polygon_stipple(struct pipe_context *pipe, 39347b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs const struct pipe_poly_stipple *stipple) 39447b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs{ 3952fee5f76483feb301546b24c26eea699732ffb57Ben Skeggs struct nv50_context *nv50 = nv50_context(pipe); 3962fee5f76483feb301546b24c26eea699732ffb57Ben Skeggs 3972fee5f76483feb301546b24c26eea699732ffb57Ben Skeggs nv50->stipple = *stipple; 3982fee5f76483feb301546b24c26eea699732ffb57Ben Skeggs nv50->dirty |= NV50_NEW_STIPPLE; 39947b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs} 40047b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs 40147b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggsstatic void 40247b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggsnv50_set_scissor_state(struct pipe_context *pipe, 40347b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs const struct pipe_scissor_state *s) 40447b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs{ 4052fee5f76483feb301546b24c26eea699732ffb57Ben Skeggs struct nv50_context *nv50 = nv50_context(pipe); 4062fee5f76483feb301546b24c26eea699732ffb57Ben Skeggs 4072fee5f76483feb301546b24c26eea699732ffb57Ben Skeggs nv50->scissor = *s; 4082fee5f76483feb301546b24c26eea699732ffb57Ben Skeggs nv50->dirty |= NV50_NEW_SCISSOR; 40947b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs} 41047b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs 41147b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggsstatic void 41247b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggsnv50_set_viewport_state(struct pipe_context *pipe, 41347b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs const struct pipe_viewport_state *vpt) 41447b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs{ 4152fee5f76483feb301546b24c26eea699732ffb57Ben Skeggs struct nv50_context *nv50 = nv50_context(pipe); 4162fee5f76483feb301546b24c26eea699732ffb57Ben Skeggs 4172fee5f76483feb301546b24c26eea699732ffb57Ben Skeggs nv50->viewport = *vpt; 4182fee5f76483feb301546b24c26eea699732ffb57Ben Skeggs nv50->dirty |= NV50_NEW_VIEWPORT; 41947b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs} 42047b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs 42147b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggsstatic void 42247b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggsnv50_set_vertex_buffer(struct pipe_context *pipe, unsigned index, 42347b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs const struct pipe_vertex_buffer *vb) 42447b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs{ 42547b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs} 42647b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs 42747b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggsstatic void 42847b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggsnv50_set_vertex_element(struct pipe_context *pipe, unsigned index, 42947b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs const struct pipe_vertex_element *ve) 43047b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs{ 43147b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs} 43247b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs 43347b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggsvoid 43447b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggsnv50_init_state_functions(struct nv50_context *nv50) 43547b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs{ 43647b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs nv50->pipe.create_blend_state = nv50_blend_state_create; 43747b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs nv50->pipe.bind_blend_state = nv50_blend_state_bind; 43847b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs nv50->pipe.delete_blend_state = nv50_blend_state_delete; 43947b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs 44047b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs nv50->pipe.create_sampler_state = nv50_sampler_state_create; 44147b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs nv50->pipe.bind_sampler_state = nv50_sampler_state_bind; 44247b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs nv50->pipe.delete_sampler_state = nv50_sampler_state_delete; 44379bca7dd884da33c06ecd3dabb893f9cfed1aaedBen Skeggs nv50->pipe.set_sampler_texture = nv50_set_sampler_texture; 44447b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs 44547b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs nv50->pipe.create_rasterizer_state = nv50_rasterizer_state_create; 44647b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs nv50->pipe.bind_rasterizer_state = nv50_rasterizer_state_bind; 44747b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs nv50->pipe.delete_rasterizer_state = nv50_rasterizer_state_delete; 44847b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs 4493af35c6dfa4db1cbf830731882e61d57741f2898Ben Skeggs nv50->pipe.create_depth_stencil_alpha_state = 4503af35c6dfa4db1cbf830731882e61d57741f2898Ben Skeggs nv50_depth_stencil_alpha_state_create; 4513af35c6dfa4db1cbf830731882e61d57741f2898Ben Skeggs nv50->pipe.bind_depth_stencil_alpha_state = 4523af35c6dfa4db1cbf830731882e61d57741f2898Ben Skeggs nv50_depth_stencil_alpha_state_bind; 4533af35c6dfa4db1cbf830731882e61d57741f2898Ben Skeggs nv50->pipe.delete_depth_stencil_alpha_state = 4543af35c6dfa4db1cbf830731882e61d57741f2898Ben Skeggs nv50_depth_stencil_alpha_state_delete; 45547b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs 45647b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs nv50->pipe.create_vs_state = nv50_vp_state_create; 45747b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs nv50->pipe.bind_vs_state = nv50_vp_state_bind; 45847b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs nv50->pipe.delete_vs_state = nv50_vp_state_delete; 45947b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs 46047b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs nv50->pipe.create_fs_state = nv50_fp_state_create; 46147b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs nv50->pipe.bind_fs_state = nv50_fp_state_bind; 46247b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs nv50->pipe.delete_fs_state = nv50_fp_state_delete; 46347b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs 46447b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs nv50->pipe.set_blend_color = nv50_set_blend_color; 46547b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs nv50->pipe.set_clip_state = nv50_set_clip_state; 46647b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs nv50->pipe.set_constant_buffer = nv50_set_constant_buffer; 46747b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs nv50->pipe.set_framebuffer_state = nv50_set_framebuffer_state; 46847b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs nv50->pipe.set_polygon_stipple = nv50_set_polygon_stipple; 46947b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs nv50->pipe.set_scissor_state = nv50_set_scissor_state; 47047b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs nv50->pipe.set_viewport_state = nv50_set_viewport_state; 47147b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs 47247b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs nv50->pipe.set_vertex_buffer = nv50_set_vertex_buffer; 47347b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs nv50->pipe.set_vertex_element = nv50_set_vertex_element; 47447b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs} 47547b418b8fa5fd242e9021503d6ec329ac3d56fb0Ben Skeggs 476