r300_emit.h revision 953a309de9204490edcd011e700c06c7c25c0b9e
1bea0c5812bd2795b514725d2a3788add3dc209afCorbin Simpson/* 2bea0c5812bd2795b514725d2a3788add3dc209afCorbin Simpson * Copyright 2008 Corbin Simpson <MostAwesomeDude@gmail.com> 3bea0c5812bd2795b514725d2a3788add3dc209afCorbin Simpson * 4bea0c5812bd2795b514725d2a3788add3dc209afCorbin Simpson * Permission is hereby granted, free of charge, to any person obtaining a 5bea0c5812bd2795b514725d2a3788add3dc209afCorbin Simpson * copy of this software and associated documentation files (the "Software"), 6bea0c5812bd2795b514725d2a3788add3dc209afCorbin Simpson * to deal in the Software without restriction, including without limitation 7bea0c5812bd2795b514725d2a3788add3dc209afCorbin Simpson * on the rights to use, copy, modify, merge, publish, distribute, sub 8bea0c5812bd2795b514725d2a3788add3dc209afCorbin Simpson * license, and/or sell copies of the Software, and to permit persons to whom 9bea0c5812bd2795b514725d2a3788add3dc209afCorbin Simpson * the Software is furnished to do so, subject to the following conditions: 10bea0c5812bd2795b514725d2a3788add3dc209afCorbin Simpson * 11bea0c5812bd2795b514725d2a3788add3dc209afCorbin Simpson * The above copyright notice and this permission notice (including the next 12bea0c5812bd2795b514725d2a3788add3dc209afCorbin Simpson * paragraph) shall be included in all copies or substantial portions of the 13bea0c5812bd2795b514725d2a3788add3dc209afCorbin Simpson * Software. 14bea0c5812bd2795b514725d2a3788add3dc209afCorbin Simpson * 15bea0c5812bd2795b514725d2a3788add3dc209afCorbin Simpson * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16bea0c5812bd2795b514725d2a3788add3dc209afCorbin Simpson * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17bea0c5812bd2795b514725d2a3788add3dc209afCorbin Simpson * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL 18bea0c5812bd2795b514725d2a3788add3dc209afCorbin Simpson * THE AUTHOR(S) AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, 19bea0c5812bd2795b514725d2a3788add3dc209afCorbin Simpson * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 20bea0c5812bd2795b514725d2a3788add3dc209afCorbin Simpson * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE 21bea0c5812bd2795b514725d2a3788add3dc209afCorbin Simpson * USE OR OTHER DEALINGS IN THE SOFTWARE. */ 22bea0c5812bd2795b514725d2a3788add3dc209afCorbin Simpson 23b16d4399892dbf8ab2c72a60b46bbc03ee5cd9a6Corbin Simpson#ifndef R300_EMIT_H 24b16d4399892dbf8ab2c72a60b46bbc03ee5cd9a6Corbin Simpson#define R300_EMIT_H 25b16d4399892dbf8ab2c72a60b46bbc03ee5cd9a6Corbin Simpson 262db46af8758bf77a2748460f617d0ead5b08a454Maciej Cencora#include "r300_context.h" 272db46af8758bf77a2748460f617d0ead5b08a454Maciej Cencora#include "radeon_code.h" 282db46af8758bf77a2748460f617d0ead5b08a454Maciej Cencora 29d0c398a8e2985b855f923aec3470cef8734a622aNicolai Hähnlestruct rX00_fragment_program_code; 30188f8c679254f193cdcfcd4ef338f3c8c5e1146dNicolai Hähnlestruct r300_vertex_program_code; 31188f8c679254f193cdcfcd4ef338f3c8c5e1146dNicolai Hähnle 323445f476977ae403cef9ca15661fa0f96ff50ecaMaciej Cencoravoid r300_emit_aos(struct r300_context* r300, unsigned offset); 333445f476977ae403cef9ca15661fa0f96ff50ecaMaciej Cencora 34841122d0e8025290ff2691e13ade1099d2c3351cMarek Olšákvoid r300_emit_blend_state(struct r300_context* r300, 35841122d0e8025290ff2691e13ade1099d2c3351cMarek Olšák unsigned size, void* state); 36bea0c5812bd2795b514725d2a3788add3dc209afCorbin Simpson 37841122d0e8025290ff2691e13ade1099d2c3351cMarek Olšákvoid r300_emit_blend_color_state(struct r300_context* r300, 38841122d0e8025290ff2691e13ade1099d2c3351cMarek Olšák unsigned size, void* state); 392e635ef563e2bff50e7a2af4f505bbd066865723Corbin Simpson 40841122d0e8025290ff2691e13ade1099d2c3351cMarek Olšákvoid r300_emit_clip_state(struct r300_context* r300, 41841122d0e8025290ff2691e13ade1099d2c3351cMarek Olšák unsigned size, void* state); 421a359d983512b39783ce9f4eb842d3ea4ec012a6Corbin Simpson 43841122d0e8025290ff2691e13ade1099d2c3351cMarek Olšákvoid r300_emit_dsa_state(struct r300_context* r300, 44841122d0e8025290ff2691e13ade1099d2c3351cMarek Olšák unsigned size, void* state); 4570b508bffba723b58817e375447c1695d9d5602bCorbin Simpson 46d0c398a8e2985b855f923aec3470cef8734a622aNicolai Hähnlevoid r300_emit_fragment_program_code(struct r300_context* r300, 472db46af8758bf77a2748460f617d0ead5b08a454Maciej Cencora struct rX00_fragment_program_code* generic_code); 482db46af8758bf77a2748460f617d0ead5b08a454Maciej Cencora 492db46af8758bf77a2748460f617d0ead5b08a454Maciej Cencoravoid r300_emit_fs_constant_buffer(struct r300_context* r300, 502db46af8758bf77a2748460f617d0ead5b08a454Maciej Cencora struct rc_constant_list* constants); 51fe7863f3f82cda290334cecfde816e21a0e9f5d3Corbin Simpson 52953a309de9204490edcd011e700c06c7c25c0b9eMarek Olšákvoid r300_emit_fs_constant_rc_state(struct r300_context* r300, 53953a309de9204490edcd011e700c06c7c25c0b9eMarek Olšák struct rc_constant_list* constants); 54953a309de9204490edcd011e700c06c7c25c0b9eMarek Olšák 55d0c398a8e2985b855f923aec3470cef8734a622aNicolai Hähnlevoid r500_emit_fragment_program_code(struct r300_context* r300, 562db46af8758bf77a2748460f617d0ead5b08a454Maciej Cencora struct rX00_fragment_program_code* generic_code); 572db46af8758bf77a2748460f617d0ead5b08a454Maciej Cencora 582db46af8758bf77a2748460f617d0ead5b08a454Maciej Cencoravoid r500_emit_fs_constant_buffer(struct r300_context* r300, 592db46af8758bf77a2748460f617d0ead5b08a454Maciej Cencora struct rc_constant_list* constants); 60fe7863f3f82cda290334cecfde816e21a0e9f5d3Corbin Simpson 61953a309de9204490edcd011e700c06c7c25c0b9eMarek Olšákvoid r500_emit_fs_constant_rc_state(struct r300_context* r300, 62953a309de9204490edcd011e700c06c7c25c0b9eMarek Olšák struct rc_constant_list* constants); 63953a309de9204490edcd011e700c06c7c25c0b9eMarek Olšák 64841122d0e8025290ff2691e13ade1099d2c3351cMarek Olšákvoid r300_emit_fb_state(struct r300_context* r300, unsigned size, void* state); 65fe7863f3f82cda290334cecfde816e21a0e9f5d3Corbin Simpson 66e31bca139f720396d1a1639b46d37aee4fd9736eMarek Olšákvoid r300_emit_query_start(struct r300_context* r300); 6716a06fea73b1e6e8857f7568762bfc56dcfe2940Corbin Simpson 6851d1cf55da6f8b8a215814589a189b6e5e537fe5Dave Airlievoid r300_emit_query_end(struct r300_context* r300); 691ddb22675c123fc955ad3ab46bba45d3330d2ec4Nicolai Hähnle 70841122d0e8025290ff2691e13ade1099d2c3351cMarek Olšákvoid r300_emit_rs_state(struct r300_context* r300, unsigned size, void* state); 71484858ae48fef039034cf43391883a432ac40c78Corbin Simpson 72841122d0e8025290ff2691e13ade1099d2c3351cMarek Olšákvoid r300_emit_rs_block_state(struct r300_context* r300, 73841122d0e8025290ff2691e13ade1099d2c3351cMarek Olšák unsigned size, void* state); 74b7219853af66085d859468e91606ae4ee5bae28eCorbin Simpson 75841122d0e8025290ff2691e13ade1099d2c3351cMarek Olšákvoid r300_emit_scissor_state(struct r300_context* r300, 76841122d0e8025290ff2691e13ade1099d2c3351cMarek Olšák unsigned size, void* state); 77b16d4399892dbf8ab2c72a60b46bbc03ee5cd9a6Corbin Simpson 78d2ac3d5e79bdf5a32a2dca135403d963ac6c83e4Marek Olšákvoid r300_emit_textures_state(struct r300_context *r300, 79d2ac3d5e79bdf5a32a2dca135403d963ac6c83e4Marek Olšák unsigned size, void *state); 80f3f5e04103d804a23cfbe8bd264c8e0db64bd31fCorbin Simpson 814816764777485b46f360eb6f86dea243d1809221Corbin Simpsonvoid r300_emit_vertex_buffer(struct r300_context* r300); 824816764777485b46f360eb6f86dea243d1809221Corbin Simpson 83942762cd973af0df75040de21d3321cd19829e70Marek Olšákvoid r300_emit_vertex_stream_state(struct r300_context* r300, 84841122d0e8025290ff2691e13ade1099d2c3351cMarek Olšák unsigned size, void* state); 85b16d4399892dbf8ab2c72a60b46bbc03ee5cd9a6Corbin Simpson 86942762cd973af0df75040de21d3321cd19829e70Marek Olšákvoid r300_emit_vap_output_state(struct r300_context* r300, 87942762cd973af0df75040de21d3321cd19829e70Marek Olšák unsigned size, void* state); 88942762cd973af0df75040de21d3321cd19829e70Marek Olšák 892db46af8758bf77a2748460f617d0ead5b08a454Maciej Cencoravoid r300_emit_vs_constant_buffer(struct r300_context* r300, 902db46af8758bf77a2748460f617d0ead5b08a454Maciej Cencora struct rc_constant_list* constants); 91188f8c679254f193cdcfcd4ef338f3c8c5e1146dNicolai Hähnle 92841122d0e8025290ff2691e13ade1099d2c3351cMarek Olšákvoid r300_emit_vs_state(struct r300_context* r300, unsigned size, void* state); 93ddd0c94f0440cebc5e63afc1ae0300e0f51bc0a3Corbin Simpson 94841122d0e8025290ff2691e13ade1099d2c3351cMarek Olšákvoid r300_emit_viewport_state(struct r300_context* r300, 95841122d0e8025290ff2691e13ade1099d2c3351cMarek Olšák unsigned size, void* state); 96f3f5e04103d804a23cfbe8bd264c8e0db64bd31fCorbin Simpson 97841122d0e8025290ff2691e13ade1099d2c3351cMarek Olšákvoid r300_emit_ztop_state(struct r300_context* r300, 98841122d0e8025290ff2691e13ade1099d2c3351cMarek Olšák unsigned size, void* state); 998a2c961798b4ab1f1095f14d814242422020d4f9Corbin Simpson 100fe6d3b9222ce184daab61ebb390a6af0b9889abfMarek Olšákvoid r300_emit_pvs_flush(struct r300_context* r300, unsigned size, void* state); 101fe6d3b9222ce184daab61ebb390a6af0b9889abfMarek Olšák 102279715e76e5385afaad2834191e8578cf3a5d233Marek Olšákvoid r300_emit_texture_cache_inval(struct r300_context* r300, unsigned size, void* state); 1032431a027c197c7172d6769eb616d4301cc6a0bcaCorbin Simpson 104e6632b4bf7cba5fe8a77d54635a3b617fa67185fMarek Olšákunsigned r300_get_num_dirty_dwords(struct r300_context *r300); 105e6632b4bf7cba5fe8a77d54635a3b617fa67185fMarek Olšák 106b16d4399892dbf8ab2c72a60b46bbc03ee5cd9a6Corbin Simpson/* Emit all dirty state. */ 107b16d4399892dbf8ab2c72a60b46bbc03ee5cd9a6Corbin Simpsonvoid r300_emit_dirty_state(struct r300_context* r300); 108b16d4399892dbf8ab2c72a60b46bbc03ee5cd9a6Corbin Simpson 109d36e3952c21240cde19dac7f16cc37aac7174673Marek Olšákvoid r300_emit_buffer_validate(struct r300_context *r300, 110d36e3952c21240cde19dac7f16cc37aac7174673Marek Olšák boolean do_validate_vertex_buffers, 111287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell struct pipe_resource *index_buffer); 11276bc66b664c7e135aa9c06cedd94ee1961d68c70Dave Airlie 113b16d4399892dbf8ab2c72a60b46bbc03ee5cd9a6Corbin Simpson#endif /* R300_EMIT_H */ 114