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