summaryrefslogtreecommitdiff
path: root/src/gallium/drivers/r300/r300_emit.h
blob: eaa0a6c4ac0be698f7a8966c20f5da6a9014b564 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
/*
 * Copyright 2008 Corbin Simpson <MostAwesomeDude@gmail.com>
 *
 * Permission is hereby granted, free of charge, to any person obtaining a
 * copy of this software and associated documentation files (the "Software"),
 * to deal in the Software without restriction, including without limitation
 * on the rights to use, copy, modify, merge, publish, distribute, sub
 * license, and/or sell copies of the Software, and to permit persons to whom
 * the Software is furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice (including the next
 * paragraph) shall be included in all copies or substantial portions of the
 * Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
 * THE AUTHOR(S) AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
 * USE OR OTHER DEALINGS IN THE SOFTWARE. */

#ifndef R300_EMIT_H
#define R300_EMIT_H

#include "r300_context.h"

struct rX00_fragment_program_code;
struct r300_vertex_program_code;

uint32_t pack_float24(float f);

void r300_emit_vertex_arrays(struct r300_context* r300, int offset,
                             boolean indexed, int instance_id);

void r300_emit_blend_state(struct r300_context* r300,
                           unsigned size, void* state);

void r300_emit_blend_color_state(struct r300_context* r300,
                                 unsigned size, void* state);

void r300_emit_clip_state(struct r300_context* r300,
                          unsigned size, void* state);

void r300_emit_dsa_state(struct r300_context* r300,
                         unsigned size, void* state);

void r300_emit_hyperz_state(struct r300_context *r300,
                            unsigned size, void *state);

void r300_emit_hyperz_end(struct r300_context *r300);

void r300_emit_fs(struct r300_context* r300, unsigned size, void *state);

void r300_emit_fs_constants(struct r300_context* r300, unsigned size, void *state);

void r300_emit_fs_rc_constant_state(struct r300_context* r300, unsigned size, void *state);

void r500_emit_fs(struct r300_context* r300, unsigned size, void *state);

void r500_emit_fs_constants(struct r300_context* r300, unsigned size, void *state);

void r500_emit_fs_rc_constant_state(struct r300_context* r300, unsigned size, void *state);

void r300_emit_fb_state(struct r300_context* r300, unsigned size, void* state);

void r300_emit_fb_state_pipelined(struct r300_context *r300,
                                  unsigned size, void *state);

void r300_emit_gpu_flush(struct r300_context *r300, unsigned size, void *state);

void r300_emit_aa_state(struct r300_context *r300, unsigned size, void *state);

void r300_emit_query_start(struct r300_context *r300, unsigned size, void *state);

void r300_emit_query_end(struct r300_context* r300);

void r300_emit_rs_state(struct r300_context* r300, unsigned size, void* state);

void r300_emit_rs_block_state(struct r300_context* r300,
                              unsigned size, void* state);

void r300_emit_sample_mask(struct r300_context *r300,
                           unsigned size, void *state);

void r300_emit_scissor_state(struct r300_context* r300,
                             unsigned size, void* state);

void r300_emit_textures_state(struct r300_context *r300,
                              unsigned size, void *state);

void r300_emit_vertex_arrays_swtcl(struct r300_context *r300, boolean indexed);

void r300_emit_vap_invariant_state(struct r300_context *r300,
                                   unsigned size, void *state);

void r300_emit_vertex_stream_state(struct r300_context* r300,
                                   unsigned size, void* state);

void r300_emit_vs_constants(struct r300_context* r300,
                            unsigned size, void *state);

void r300_emit_vs_state(struct r300_context* r300, unsigned size, void* state);

void r300_emit_viewport_state(struct r300_context* r300,
                              unsigned size, void* state);

void r300_emit_ztop_state(struct r300_context* r300,
                          unsigned size, void* state);

void r300_emit_pvs_flush(struct r300_context* r300, unsigned size, void* state);

void r300_emit_texture_cache_inval(struct r300_context* r300, unsigned size, void* state);

void r300_emit_invariant_state(struct r300_context *r300,
                               unsigned size, void *state);

void r300_emit_hiz_clear(struct r300_context *r300, unsigned size, void *state);
void r300_emit_zmask_clear(struct r300_context *r300, unsigned size, void *state);
void r300_emit_cmask_clear(struct r300_context *r300, unsigned size, void *state);

unsigned r300_get_num_dirty_dwords(struct r300_context *r300);
unsigned r300_get_num_cs_end_dwords(struct r300_context *r300);

/* Emit all dirty state. */
void r300_emit_dirty_state(struct r300_context* r300);

boolean r300_emit_buffer_validate(struct r300_context *r300,
                                  boolean do_validate_vertex_buffers,
                                  struct pipe_resource *index_buffer);

#endif /* R300_EMIT_H */