18e4a95a93d15a6707a29454cd47e10b08314cda2Keith Whitwell 28e4a95a93d15a6707a29454cd47e10b08314cda2Keith Whitwell/************************************************************************** 38e4a95a93d15a6707a29454cd47e10b08314cda2Keith Whitwell * 48e4a95a93d15a6707a29454cd47e10b08314cda2Keith Whitwell * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas. 58e4a95a93d15a6707a29454cd47e10b08314cda2Keith Whitwell * All Rights Reserved. 68e4a95a93d15a6707a29454cd47e10b08314cda2Keith Whitwell * 78e4a95a93d15a6707a29454cd47e10b08314cda2Keith Whitwell * Permission is hereby granted, free of charge, to any person obtaining a 88e4a95a93d15a6707a29454cd47e10b08314cda2Keith Whitwell * copy of this software and associated documentation files (the 98e4a95a93d15a6707a29454cd47e10b08314cda2Keith Whitwell * "Software"), to deal in the Software without restriction, including 108e4a95a93d15a6707a29454cd47e10b08314cda2Keith Whitwell * without limitation the rights to use, copy, modify, merge, publish, 118e4a95a93d15a6707a29454cd47e10b08314cda2Keith Whitwell * distribute, sub license, and/or sell copies of the Software, and to 128e4a95a93d15a6707a29454cd47e10b08314cda2Keith Whitwell * permit persons to whom the Software is furnished to do so, subject to 138e4a95a93d15a6707a29454cd47e10b08314cda2Keith Whitwell * the following conditions: 148e4a95a93d15a6707a29454cd47e10b08314cda2Keith Whitwell * 158e4a95a93d15a6707a29454cd47e10b08314cda2Keith Whitwell * The above copyright notice and this permission notice (including the 168e4a95a93d15a6707a29454cd47e10b08314cda2Keith Whitwell * next paragraph) shall be included in all copies or substantial portions 178e4a95a93d15a6707a29454cd47e10b08314cda2Keith Whitwell * of the Software. 188e4a95a93d15a6707a29454cd47e10b08314cda2Keith Whitwell * 198e4a95a93d15a6707a29454cd47e10b08314cda2Keith Whitwell * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 208e4a95a93d15a6707a29454cd47e10b08314cda2Keith Whitwell * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 218e4a95a93d15a6707a29454cd47e10b08314cda2Keith Whitwell * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 228e4a95a93d15a6707a29454cd47e10b08314cda2Keith Whitwell * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR 238e4a95a93d15a6707a29454cd47e10b08314cda2Keith Whitwell * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 248e4a95a93d15a6707a29454cd47e10b08314cda2Keith Whitwell * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 258e4a95a93d15a6707a29454cd47e10b08314cda2Keith Whitwell * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 268e4a95a93d15a6707a29454cd47e10b08314cda2Keith Whitwell * 278e4a95a93d15a6707a29454cd47e10b08314cda2Keith Whitwell **************************************************************************/ 288e4a95a93d15a6707a29454cd47e10b08314cda2Keith Whitwell 29279ffe3f163fd6a5e7bfa108db14c81acbb06eceBrian/** 30279ffe3f163fd6a5e7bfa108db14c81acbb06eceBrian * \brief Public interface into the drawing module. 31279ffe3f163fd6a5e7bfa108db14c81acbb06eceBrian */ 32279ffe3f163fd6a5e7bfa108db14c81acbb06eceBrian 338e4a95a93d15a6707a29454cd47e10b08314cda2Keith Whitwell/* Authors: Keith Whitwell <keith@tungstengraphics.com> 348e4a95a93d15a6707a29454cd47e10b08314cda2Keith Whitwell */ 358e4a95a93d15a6707a29454cd47e10b08314cda2Keith Whitwell 36279ffe3f163fd6a5e7bfa108db14c81acbb06eceBrian 37279ffe3f163fd6a5e7bfa108db14c81acbb06eceBrian#ifndef DRAW_CONTEXT_H 38279ffe3f163fd6a5e7bfa108db14c81acbb06eceBrian#define DRAW_CONTEXT_H 39279ffe3f163fd6a5e7bfa108db14c81acbb06eceBrian 408e4a95a93d15a6707a29454cd47e10b08314cda2Keith Whitwell 416393cda6766b707ef01e925d378239a66d143ae0Keith Whitwell#include "pipe/p_state.h" 42a508d2dddcc67d0f92cc36b9ed6f36a9bbfc579dLuca Barbieri#include "tgsi/tgsi_exec.h" 438e4a95a93d15a6707a29454cd47e10b08314cda2Keith Whitwell 44aceeb80d4f706980aaf71b8e098d4c6718d8ac90Brianstruct pipe_context; 458e4a95a93d15a6707a29454cd47e10b08314cda2Keith Whitwellstruct draw_context; 46ea470eec86715cd2bc9aa86d36e6ea803d0d4017Brianstruct draw_stage; 47aa7f2333675f3e005f3eb6a40ac55d2fb55ea36eBrianstruct draw_vertex_shader; 4889d8577fb3036547ef0b47498cc8dc5c77f886e0Zack Rusinstruct draw_geometry_shader; 49e22e3927b056806e9bbb089734132ad0bcb98df1Brian Paulstruct draw_fragment_shader; 50f2bccfd3c806a879abf0c40858806ec3825d0628Brianstruct tgsi_sampler; 51efc82aef35a2aac5d2ed9774f6d28f2626796416Brian Paul 52ec8cbd79ac4065111365a6720c9564de56855cc8Dave Airlie/* 53ec8cbd79ac4065111365a6720c9564de56855cc8Dave Airlie * structure to contain driver internal information 54ec8cbd79ac4065111365a6720c9564de56855cc8Dave Airlie * for stream out support. mapping stores the pointer 55ec8cbd79ac4065111365a6720c9564de56855cc8Dave Airlie * to the buffer contents, and internal offset stores 56ec8cbd79ac4065111365a6720c9564de56855cc8Dave Airlie * stores an internal counter to how much of the stream 57ec8cbd79ac4065111365a6720c9564de56855cc8Dave Airlie * out buffer is used (in bytes). 58ec8cbd79ac4065111365a6720c9564de56855cc8Dave Airlie */ 59ec8cbd79ac4065111365a6720c9564de56855cc8Dave Airliestruct draw_so_target { 60ec8cbd79ac4065111365a6720c9564de56855cc8Dave Airlie struct pipe_stream_output_target target; 61ec8cbd79ac4065111365a6720c9564de56855cc8Dave Airlie void *mapping; 62ec8cbd79ac4065111365a6720c9564de56855cc8Dave Airlie int internal_offset; 63ec8cbd79ac4065111365a6720c9564de56855cc8Dave Airlie}; 647668e53c8c64570d66a626c96302a953164f319eBrian 65e3a34cc7f6c9f959cdc2af4486e84587fab4d0d7Brian Paulstruct draw_context *draw_create( struct pipe_context *pipe ); 668e4a95a93d15a6707a29454cd47e10b08314cda2Keith Whitwell 673e22c7a25321554a32fa6254485912fd53deff3aJakob Bornecrantzstruct draw_context *draw_create_no_llvm(struct pipe_context *pipe); 683e22c7a25321554a32fa6254485912fd53deff3aJakob Bornecrantz 698e4a95a93d15a6707a29454cd47e10b08314cda2Keith Whitwellvoid draw_destroy( struct draw_context *draw ); 708e4a95a93d15a6707a29454cd47e10b08314cda2Keith Whitwell 715c0f6bf13b49d38fc41632ef5a0bbada98195398Brian Paulvoid draw_flush(struct draw_context *draw); 725c0f6bf13b49d38fc41632ef5a0bbada98195398Brian Paul 73279ffe3f163fd6a5e7bfa108db14c81acbb06eceBrianvoid draw_set_viewport_state( struct draw_context *draw, 74279ffe3f163fd6a5e7bfa108db14c81acbb06eceBrian const struct pipe_viewport_state *viewport ); 75279ffe3f163fd6a5e7bfa108db14c81acbb06eceBrian 76279ffe3f163fd6a5e7bfa108db14c81acbb06eceBrianvoid draw_set_clip_state( struct draw_context *pipe, 77279ffe3f163fd6a5e7bfa108db14c81acbb06eceBrian const struct pipe_clip_state *clip ); 78279ffe3f163fd6a5e7bfa108db14c81acbb06eceBrian 79831de96db87ee1f16b60d3aff308a423fece3407Zack Rusin/** 80831de96db87ee1f16b60d3aff308a423fece3407Zack Rusin * Sets the rasterization state used by the draw module. 81831de96db87ee1f16b60d3aff308a423fece3407Zack Rusin * The rast_handle is used to pass the driver specific representation 82831de96db87ee1f16b60d3aff308a423fece3407Zack Rusin * of the rasterization state. It's going to be used when the 83831de96db87ee1f16b60d3aff308a423fece3407Zack Rusin * draw module sets the state back on the driver itself using the 84831de96db87ee1f16b60d3aff308a423fece3407Zack Rusin * pipe::bind_rasterizer_state method. 85831de96db87ee1f16b60d3aff308a423fece3407Zack Rusin * 86831de96db87ee1f16b60d3aff308a423fece3407Zack Rusin * NOTE: if you're calling this function from within the pipe's 87831de96db87ee1f16b60d3aff308a423fece3407Zack Rusin * bind_rasterizer_state you should always call it before binding 88831de96db87ee1f16b60d3aff308a423fece3407Zack Rusin * the actual state - that's because the draw module can try to 89831de96db87ee1f16b60d3aff308a423fece3407Zack Rusin * bind its own rasterizer state which would reset your newly 90831de96db87ee1f16b60d3aff308a423fece3407Zack Rusin * set state. i.e. always do 91831de96db87ee1f16b60d3aff308a423fece3407Zack Rusin * draw_set_rasterizer_state(driver->draw, state->pipe_state, state); 92831de96db87ee1f16b60d3aff308a423fece3407Zack Rusin * driver->state.raster = state; 93831de96db87ee1f16b60d3aff308a423fece3407Zack Rusin */ 94de69fc1703f79e5c97e66b654de7a93b7abce8f0Zack Rusinvoid draw_set_rasterizer_state( struct draw_context *draw, 95e3a34cc7f6c9f959cdc2af4486e84587fab4d0d7Brian Paul const struct pipe_rasterizer_state *raster, 96e3a34cc7f6c9f959cdc2af4486e84587fab4d0d7Brian Paul void *rast_handle ); 97279ffe3f163fd6a5e7bfa108db14c81acbb06eceBrian 98de69fc1703f79e5c97e66b654de7a93b7abce8f0Zack Rusinvoid draw_set_rasterize_stage( struct draw_context *draw, 99de69fc1703f79e5c97e66b654de7a93b7abce8f0Zack Rusin struct draw_stage *stage ); 1008e4a95a93d15a6707a29454cd47e10b08314cda2Keith Whitwell 101d4a4bed6638e0156324ff9b270f2248c4b5275bbBrianvoid draw_wide_point_threshold(struct draw_context *draw, float threshold); 102d4a4bed6638e0156324ff9b270f2248c4b5275bbBrian 1038cb223eb020560d59c8f73e09b832cef477933b7Brian Paulvoid draw_wide_point_sprites(struct draw_context *draw, boolean draw_sprite); 1048cb223eb020560d59c8f73e09b832cef477933b7Brian Paul 105a1a13954885cd469faab49633b5386e5c889e3dfBrian Paulvoid draw_wide_line_threshold(struct draw_context *draw, float threshold); 106f1fb69a6e52260193ec16a9820a66e3e4bb03eddBrian 1078b8c9acdb747499149e633179a8ad10b0e4206b1Brianvoid draw_enable_line_stipple(struct draw_context *draw, boolean enable); 1088b8c9acdb747499149e633179a8ad10b0e4206b1Brian 1095a09ad8248ce452136ed96a3d46532b03c877618Brianvoid draw_enable_point_sprites(struct draw_context *draw, boolean enable); 1105a09ad8248ce452136ed96a3d46532b03c877618Brian 111d0bc5293d6e1e9c34fa822b7c2928932ed22462cBrian Paulvoid draw_set_mrd(struct draw_context *draw, double mrd); 1128b8c9acdb747499149e633179a8ad10b0e4206b1Brian 11369ecc2a577dc45451d56cee3e41cb6e7e542b097Keith Whitwellboolean 114aceeb80d4f706980aaf71b8e098d4c6718d8ac90Briandraw_install_aaline_stage(struct draw_context *draw, struct pipe_context *pipe); 115aceeb80d4f706980aaf71b8e098d4c6718d8ac90Brian 1160cd90a917d289363a3edb5cfa40c391eb07aa97cKeith Whitwellboolean 117eb4dc2dd5ed62e6ccb55ccc2bc13f6a2f3fc1f76Briandraw_install_aapoint_stage(struct draw_context *draw, struct pipe_context *pipe); 118eb4dc2dd5ed62e6ccb55ccc2bc13f6a2f3fc1f76Brian 1190d4ece4c5a243dc4b684331bad49f220311e5520Keith Whitwellboolean 120446bfc32a83008e0865ec869bc80b920c907f10fBriandraw_install_pstipple_stage(struct draw_context *draw, struct pipe_context *pipe); 121446bfc32a83008e0865ec869bc80b920c907f10fBrian 122aceeb80d4f706980aaf71b8e098d4c6718d8ac90Brian 123102bf6e2a70f565f03d5e9c4995b29d61c0aa165José Fonsecastruct tgsi_shader_info * 124102bf6e2a70f565f03d5e9c4995b29d61c0aa165José Fonsecadraw_get_shader_info(const struct draw_context *draw); 125102bf6e2a70f565f03d5e9c4995b29d61c0aa165José Fonseca 126aceeb80d4f706980aaf71b8e098d4c6718d8ac90Brianint 12789d8577fb3036547ef0b47498cc8dc5c77f886e0Zack Rusindraw_find_shader_output(const struct draw_context *draw, 12889d8577fb3036547ef0b47498cc8dc5c77f886e0Zack Rusin uint semantic_name, uint semantic_index); 129aceeb80d4f706980aaf71b8e098d4c6718d8ac90Brian 1301774b177b858f9f87d00e54b0bf00e9634e375e9Brianuint 13189d8577fb3036547ef0b47498cc8dc5c77f886e0Zack Rusindraw_num_shader_outputs(const struct draw_context *draw); 1321774b177b858f9f87d00e54b0bf00e9634e375e9Brian 1331774b177b858f9f87d00e54b0bf00e9634e375e9Brian 134f2bccfd3c806a879abf0c40858806ec3825d0628Brianvoid 135f2bccfd3c806a879abf0c40858806ec3825d0628Briandraw_texture_samplers(struct draw_context *draw, 13653bd9796a1395e4acde884ff55cb7ee18586595aZack Rusin uint shader_type, 137f2bccfd3c806a879abf0c40858806ec3825d0628Brian uint num_samplers, 138f2bccfd3c806a879abf0c40858806ec3825d0628Brian struct tgsi_sampler **samplers); 139f2bccfd3c806a879abf0c40858806ec3825d0628Brian 14001eebfe1b6de2e36dd3af0952fc8329b7073a100Zack Rusinvoid 14101eebfe1b6de2e36dd3af0952fc8329b7073a100Zack Rusindraw_set_sampler_views(struct draw_context *draw, 142df87fb59136eb302d72eac4b58fd8ffb25989ed5Brian Paul unsigned shader_stage, 14301eebfe1b6de2e36dd3af0952fc8329b7073a100Zack Rusin struct pipe_sampler_view **views, 14401eebfe1b6de2e36dd3af0952fc8329b7073a100Zack Rusin unsigned num); 14501eebfe1b6de2e36dd3af0952fc8329b7073a100Zack Rusinvoid 14601eebfe1b6de2e36dd3af0952fc8329b7073a100Zack Rusindraw_set_samplers(struct draw_context *draw, 147df87fb59136eb302d72eac4b58fd8ffb25989ed5Brian Paul unsigned shader_stage, 14801eebfe1b6de2e36dd3af0952fc8329b7073a100Zack Rusin struct pipe_sampler_state **samplers, 14901eebfe1b6de2e36dd3af0952fc8329b7073a100Zack Rusin unsigned num); 15001eebfe1b6de2e36dd3af0952fc8329b7073a100Zack Rusin 15101eebfe1b6de2e36dd3af0952fc8329b7073a100Zack Rusinvoid 15201eebfe1b6de2e36dd3af0952fc8329b7073a100Zack Rusindraw_set_mapped_texture(struct draw_context *draw, 153df87fb59136eb302d72eac4b58fd8ffb25989ed5Brian Paul unsigned shader_stage, 15401eebfe1b6de2e36dd3af0952fc8329b7073a100Zack Rusin unsigned sampler_idx, 15501eebfe1b6de2e36dd3af0952fc8329b7073a100Zack Rusin uint32_t width, uint32_t height, uint32_t depth, 15608070cead0bb79d4441d8c5b900d1571bb63c670Fabian Bieler uint32_t first_level, uint32_t last_level, 157048a90c1cb926fdeae47392582cb91b0a689905fBrian Paul uint32_t row_stride[PIPE_MAX_TEXTURE_LEVELS], 158048a90c1cb926fdeae47392582cb91b0a689905fBrian Paul uint32_t img_stride[PIPE_MAX_TEXTURE_LEVELS], 159048a90c1cb926fdeae47392582cb91b0a689905fBrian Paul const void *data[PIPE_MAX_TEXTURE_LEVELS]); 160f2bccfd3c806a879abf0c40858806ec3825d0628Brian 161aceeb80d4f706980aaf71b8e098d4c6718d8ac90Brian 162aceeb80d4f706980aaf71b8e098d4c6718d8ac90Brian/* 163aceeb80d4f706980aaf71b8e098d4c6718d8ac90Brian * Vertex shader functions 164aceeb80d4f706980aaf71b8e098d4c6718d8ac90Brian */ 1650a262998ef2813d19e9fee01d3e5808416e9cb04Brian 166aa7f2333675f3e005f3eb6a40ac55d2fb55ea36eBrianstruct draw_vertex_shader * 167aa7f2333675f3e005f3eb6a40ac55d2fb55ea36eBriandraw_create_vertex_shader(struct draw_context *draw, 168aa7f2333675f3e005f3eb6a40ac55d2fb55ea36eBrian const struct pipe_shader_state *shader); 169a1a989f0be8dc34082b52bb3b3a6eacb36d9e75eZack Rusinvoid draw_bind_vertex_shader(struct draw_context *draw, 170aa7f2333675f3e005f3eb6a40ac55d2fb55ea36eBrian struct draw_vertex_shader *dvs); 171a1a989f0be8dc34082b52bb3b3a6eacb36d9e75eZack Rusinvoid draw_delete_vertex_shader(struct draw_context *draw, 172aa7f2333675f3e005f3eb6a40ac55d2fb55ea36eBrian struct draw_vertex_shader *dvs); 1730a262998ef2813d19e9fee01d3e5808416e9cb04Brian 174aceeb80d4f706980aaf71b8e098d4c6718d8ac90Brian 17589d8577fb3036547ef0b47498cc8dc5c77f886e0Zack Rusin/* 176e22e3927b056806e9bbb089734132ad0bcb98df1Brian Paul * Fragment shader functions 177e22e3927b056806e9bbb089734132ad0bcb98df1Brian Paul */ 178e22e3927b056806e9bbb089734132ad0bcb98df1Brian Paulstruct draw_fragment_shader * 179e22e3927b056806e9bbb089734132ad0bcb98df1Brian Pauldraw_create_fragment_shader(struct draw_context *draw, 180e22e3927b056806e9bbb089734132ad0bcb98df1Brian Paul const struct pipe_shader_state *shader); 181e22e3927b056806e9bbb089734132ad0bcb98df1Brian Paulvoid draw_bind_fragment_shader(struct draw_context *draw, 182e22e3927b056806e9bbb089734132ad0bcb98df1Brian Paul struct draw_fragment_shader *dvs); 183e22e3927b056806e9bbb089734132ad0bcb98df1Brian Paulvoid draw_delete_fragment_shader(struct draw_context *draw, 184e22e3927b056806e9bbb089734132ad0bcb98df1Brian Paul struct draw_fragment_shader *dvs); 185e22e3927b056806e9bbb089734132ad0bcb98df1Brian Paul 186e22e3927b056806e9bbb089734132ad0bcb98df1Brian Paul/* 18789d8577fb3036547ef0b47498cc8dc5c77f886e0Zack Rusin * Geometry shader functions 18889d8577fb3036547ef0b47498cc8dc5c77f886e0Zack Rusin */ 18989d8577fb3036547ef0b47498cc8dc5c77f886e0Zack Rusinstruct draw_geometry_shader * 19089d8577fb3036547ef0b47498cc8dc5c77f886e0Zack Rusindraw_create_geometry_shader(struct draw_context *draw, 19189d8577fb3036547ef0b47498cc8dc5c77f886e0Zack Rusin const struct pipe_shader_state *shader); 19289d8577fb3036547ef0b47498cc8dc5c77f886e0Zack Rusinvoid draw_bind_geometry_shader(struct draw_context *draw, 19389d8577fb3036547ef0b47498cc8dc5c77f886e0Zack Rusin struct draw_geometry_shader *dvs); 19489d8577fb3036547ef0b47498cc8dc5c77f886e0Zack Rusinvoid draw_delete_geometry_shader(struct draw_context *draw, 19589d8577fb3036547ef0b47498cc8dc5c77f886e0Zack Rusin struct draw_geometry_shader *dvs); 19689d8577fb3036547ef0b47498cc8dc5c77f886e0Zack Rusin 197aceeb80d4f706980aaf71b8e098d4c6718d8ac90Brian 198aceeb80d4f706980aaf71b8e098d4c6718d8ac90Brian/* 199aceeb80d4f706980aaf71b8e098d4c6718d8ac90Brian * Vertex data functions 200aceeb80d4f706980aaf71b8e098d4c6718d8ac90Brian */ 2010a262998ef2813d19e9fee01d3e5808416e9cb04Brian 202a52c0416d1f2105960b4646e2e268aed26814689Brian Paulvoid draw_set_vertex_buffers(struct draw_context *draw, 203a52c0416d1f2105960b4646e2e268aed26814689Brian Paul unsigned count, 204a52c0416d1f2105960b4646e2e268aed26814689Brian Paul const struct pipe_vertex_buffer *buffers); 20583417a8b37211e290cfdb06530533cd7215500c4Keith Whitwell 206a52c0416d1f2105960b4646e2e268aed26814689Brian Paulvoid draw_set_vertex_elements(struct draw_context *draw, 207a52c0416d1f2105960b4646e2e268aed26814689Brian Paul unsigned count, 208a52c0416d1f2105960b4646e2e268aed26814689Brian Paul const struct pipe_vertex_element *elements); 2090a262998ef2813d19e9fee01d3e5808416e9cb04Brian 210185ed2105829d6f5eb19edb9abbf0d7977e157c3Brian Paulvoid draw_set_indexes(struct draw_context *draw, 211185ed2105829d6f5eb19edb9abbf0d7977e157c3Brian Paul const void *elements, unsigned elem_size); 2124f024e0f642f4f743e4d051ec71c00e45bfd361fChia-I Wu 21363a51aee86f76ae54fb1ce572d584fb0f01aaec5Brianvoid draw_set_mapped_vertex_buffer(struct draw_context *draw, 21463a51aee86f76ae54fb1ce572d584fb0f01aaec5Brian unsigned attr, const void *buffer); 2150a262998ef2813d19e9fee01d3e5808416e9cb04Brian 2169851644435f991a1a1bbb145333a97601627b37dMichal Krolvoid 2179851644435f991a1a1bbb145333a97601627b37dMichal Kroldraw_set_mapped_constant_buffer(struct draw_context *draw, 2189851644435f991a1a1bbb145333a97601627b37dMichal Krol unsigned shader_type, 2199851644435f991a1a1bbb145333a97601627b37dMichal Krol unsigned slot, 2209851644435f991a1a1bbb145333a97601627b37dMichal Krol const void *buffer, 2219851644435f991a1a1bbb145333a97601627b37dMichal Krol unsigned size); 22263a51aee86f76ae54fb1ce572d584fb0f01aaec5Brian 223a45b7f47ee0e38b288cc8fc4f6a1c013e8c227bcZack Rusinvoid 224a45b7f47ee0e38b288cc8fc4f6a1c013e8c227bcZack Rusindraw_set_mapped_so_buffers(struct draw_context *draw, 225a45b7f47ee0e38b288cc8fc4f6a1c013e8c227bcZack Rusin void *buffers[PIPE_MAX_SO_BUFFERS], 226a45b7f47ee0e38b288cc8fc4f6a1c013e8c227bcZack Rusin unsigned num_buffers); 227ec8cbd79ac4065111365a6720c9564de56855cc8Dave Airlie 228ec8cbd79ac4065111365a6720c9564de56855cc8Dave Airlievoid 229ec8cbd79ac4065111365a6720c9564de56855cc8Dave Airliedraw_set_mapped_so_targets(struct draw_context *draw, 230ec8cbd79ac4065111365a6720c9564de56855cc8Dave Airlie int num_targets, 231ec8cbd79ac4065111365a6720c9564de56855cc8Dave Airlie struct draw_so_target *targets[PIPE_MAX_SO_BUFFERS]); 232ec8cbd79ac4065111365a6720c9564de56855cc8Dave Airlie 233a45b7f47ee0e38b288cc8fc4f6a1c013e8c227bcZack Rusinvoid 234a45b7f47ee0e38b288cc8fc4f6a1c013e8c227bcZack Rusindraw_set_so_state(struct draw_context *draw, 235861a029ddb31e91bb4d8e18ab708d0d172f63aadMarek Olšák struct pipe_stream_output_info *state); 236a45b7f47ee0e38b288cc8fc4f6a1c013e8c227bcZack Rusin 2370a262998ef2813d19e9fee01d3e5808416e9cb04Brian 23808589f71051e588b0bb7d0c8b529976c85398dd1Keith Whitwell/*********************************************************************** 2395c0f6bf13b49d38fc41632ef5a0bbada98195398Brian Paul * draw_pt.c 24008589f71051e588b0bb7d0c8b529976c85398dd1Keith Whitwell */ 24108589f71051e588b0bb7d0c8b529976c85398dd1Keith Whitwell 2424f024e0f642f4f743e4d051ec71c00e45bfd361fChia-I Wuvoid draw_vbo(struct draw_context *draw, 2434f024e0f642f4f743e4d051ec71c00e45bfd361fChia-I Wu const struct pipe_draw_info *info); 2444f024e0f642f4f743e4d051ec71c00e45bfd361fChia-I Wu 24508589f71051e588b0bb7d0c8b529976c85398dd1Keith Whitwellvoid draw_arrays(struct draw_context *draw, unsigned prim, 24608589f71051e588b0bb7d0c8b529976c85398dd1Keith Whitwell unsigned start, unsigned count); 24708589f71051e588b0bb7d0c8b529976c85398dd1Keith Whitwell 2487ca0ce38340144794267609646048b3820d594abMichal Krolvoid 2497ca0ce38340144794267609646048b3820d594abMichal Kroldraw_arrays_instanced(struct draw_context *draw, 2507ca0ce38340144794267609646048b3820d594abMichal Krol unsigned mode, 2517ca0ce38340144794267609646048b3820d594abMichal Krol unsigned start, 2527ca0ce38340144794267609646048b3820d594abMichal Krol unsigned count, 2537ca0ce38340144794267609646048b3820d594abMichal Krol unsigned startInstance, 2547ca0ce38340144794267609646048b3820d594abMichal Krol unsigned instanceCount); 2557ca0ce38340144794267609646048b3820d594abMichal Krol 256297b3be25a7f097fb9b1a79e332acddc12dcc3feKeith Whitwell 2571246d06313f443c91dea07239b43a88ba2b86ddeKeith Whitwell/******************************************************************************* 2581246d06313f443c91dea07239b43a88ba2b86ddeKeith Whitwell * Driver backend interface 2591246d06313f443c91dea07239b43a88ba2b86ddeKeith Whitwell */ 260297b3be25a7f097fb9b1a79e332acddc12dcc3feKeith Whitwellstruct vbuf_render; 261297b3be25a7f097fb9b1a79e332acddc12dcc3feKeith Whitwellvoid draw_set_render( struct draw_context *draw, 262297b3be25a7f097fb9b1a79e332acddc12dcc3feKeith Whitwell struct vbuf_render *render ); 263297b3be25a7f097fb9b1a79e332acddc12dcc3feKeith Whitwell 2640588858702d1a5c9c08573ea6817e2e149473cf6Keith Whitwellvoid draw_set_driver_clipping( struct draw_context *draw, 2656c0dc4bafbdbdc0cb4b6e5934fe064226dbd47ecKeith Whitwell boolean bypass_clip_xy, 2664465efc3bf8d755a9afb7a4bb5382e2f5bf113e1Brian Paul boolean bypass_clip_z, 2674465efc3bf8d755a9afb7a4bb5382e2f5bf113e1Brian Paul boolean guard_band_xy); 2680588858702d1a5c9c08573ea6817e2e149473cf6Keith Whitwell 269c48da7d78b4e7bdbe056b3c9668756d49019be06Keith Whitwellvoid draw_set_force_passthrough( struct draw_context *draw, 270c48da7d78b4e7bdbe056b3c9668756d49019be06Keith Whitwell boolean enable ); 271c48da7d78b4e7bdbe056b3c9668756d49019be06Keith Whitwell 2720588858702d1a5c9c08573ea6817e2e149473cf6Keith Whitwell/******************************************************************************* 2730588858702d1a5c9c08573ea6817e2e149473cf6Keith Whitwell * Draw pipeline 2740588858702d1a5c9c08573ea6817e2e149473cf6Keith Whitwell */ 2750588858702d1a5c9c08573ea6817e2e149473cf6Keith Whitwellboolean draw_need_pipeline(const struct draw_context *draw, 2760588858702d1a5c9c08573ea6817e2e149473cf6Keith Whitwell const struct pipe_rasterizer_state *rasterizer, 2770588858702d1a5c9c08573ea6817e2e149473cf6Keith Whitwell unsigned prim ); 2780588858702d1a5c9c08573ea6817e2e149473cf6Keith Whitwell 2796dddd184803da5f67f69e7c243dbb596b4dd4b9dJosé Fonsecaint 2806dddd184803da5f67f69e7c243dbb596b4dd4b9dJosé Fonsecadraw_get_shader_param(unsigned shader, enum pipe_shader_cap param); 2816dddd184803da5f67f69e7c243dbb596b4dd4b9dJosé Fonseca 2826dddd184803da5f67f69e7c243dbb596b4dd4b9dJosé Fonsecaint 2836dddd184803da5f67f69e7c243dbb596b4dd4b9dJosé Fonsecadraw_get_shader_param_no_llvm(unsigned shader, enum pipe_shader_cap param); 284a508d2dddcc67d0f92cc36b9ed6f36a9bbfc579dLuca Barbieri 285279ffe3f163fd6a5e7bfa108db14c81acbb06eceBrian#endif /* DRAW_CONTEXT_H */ 286