13192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz/********************************************************** 23192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * Copyright 2008-2009 VMware, Inc. All rights reserved. 33192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * 43192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * Permission is hereby granted, free of charge, to any person 53192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * obtaining a copy of this software and associated documentation 63192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * files (the "Software"), to deal in the Software without 73192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * restriction, including without limitation the rights to use, copy, 83192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * modify, merge, publish, distribute, sublicense, and/or sell copies 93192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * of the Software, and to permit persons to whom the Software is 103192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * furnished to do so, subject to the following conditions: 113192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * 123192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * The above copyright notice and this permission notice shall be 133192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * included in all copies or substantial portions of the Software. 143192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * 153192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 163192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 173192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 183192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 193192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 203192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 213192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 223192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * SOFTWARE. 233192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * 243192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz **********************************************************/ 253192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz 263192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz#ifndef SVGA_SWTNL_PRIVATE_H 273192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz#define SVGA_SWTNL_PRIVATE_H 283192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz 293192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz#include "svga_swtnl.h" 303192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz#include "draw/draw_vertex.h" 313192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz 323192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz#include "svga_types.h" 333192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz#include "svga3d_reg.h" 343192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz 353192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz/** 363192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * Primitive renderer for svga. 373192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz */ 383192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantzstruct svga_vbuf_render { 393192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz struct vbuf_render base; 403192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz 413192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz struct svga_context *svga; 423192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz struct vertex_info vertex_info; 433192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz 443192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz unsigned vertex_size; 453192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz 46e054251ed11e25a080f64b92db9334c9b07c8c76Brian Paul SVGA3dElementLayoutId layout_id; /**< current element layout id */ 47e054251ed11e25a080f64b92db9334c9b07c8c76Brian Paul 48d21a309c6c00122b0562284d78fce5138fa2ad30Brian Paul enum pipe_prim_type prim; 493192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz 50287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell struct pipe_resource *vbuf; 51287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell struct pipe_resource *ibuf; 52287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell struct pipe_transfer *vbuf_transfer; 53287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell struct pipe_transfer *ibuf_transfer; 543192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz 55e054251ed11e25a080f64b92db9334c9b07c8c76Brian Paul void *vbuf_ptr; 56e054251ed11e25a080f64b92db9334c9b07c8c76Brian Paul 573192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz /* current size of buffer */ 583192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz size_t vbuf_size; 593192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz size_t ibuf_size; 603192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz 613192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz /* size of that the buffer should be */ 623192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz size_t vbuf_alloc_size; 633192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz size_t ibuf_alloc_size; 643192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz 653192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz /* current write place */ 663192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz size_t vbuf_offset; 673192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz size_t ibuf_offset; 683192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz 693192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz /* currently used */ 703192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz size_t vbuf_used; 713192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz 723192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz SVGA3dVertexDecl vdecl[PIPE_MAX_ATTRIBS]; 733192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz unsigned vdecl_offset; 743192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz unsigned vdecl_count; 753192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz 763192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz ushort min_index; 773192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz ushort max_index; 783192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz}; 793192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz 803192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz/** 813192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * Basically a cast wrapper. 823192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz */ 83a2a1a5805fd617e7f3cc8be44dd79b50da07ebb9Ilia Mirkinstatic inline struct svga_vbuf_render * 843192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantzsvga_vbuf_render( struct vbuf_render *render ) 853192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz{ 863192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz assert(render); 873192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz return (struct svga_vbuf_render *)render; 883192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz} 893192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz 903192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz 913192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantzstruct vbuf_render * 923192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantzsvga_vbuf_render_create( struct svga_context *svga ); 933192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz 943192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz 95e8f646fa7e9cf6f6793864384128157735aa03b3José Fonsecaenum pipe_error 963192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantzsvga_swtnl_update_vdecl( struct svga_context *svga ); 973192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz 983192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz 993192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz#endif 100