nv50/ir: remove symbol table support for compute shaders
[mesa.git] / src / gallium / drivers / nouveau / nvc0 / nvc0_program.h
1
2 #ifndef __NVC0_PROGRAM_H__
3 #define __NVC0_PROGRAM_H__
4
5 #include "pipe/p_state.h"
6
7 #define NVC0_CAP_MAX_PROGRAM_TEMPS 128
8
9
10 struct nvc0_transform_feedback_state {
11 uint32_t stride[4];
12 uint8_t stream[4];
13 uint8_t varying_count[4];
14 uint8_t varying_index[4][128];
15 };
16
17
18 #define GF100_SHADER_HEADER_SIZE (20 * 4)
19 #define TU102_SHADER_HEADER_SIZE (32 * 4)
20 #define NVC0_MAX_SHADER_HEADER_SIZE TU102_SHADER_HEADER_SIZE
21
22 struct nvc0_program {
23 struct pipe_shader_state pipe;
24
25 ubyte type;
26 bool translated;
27 bool need_tls;
28 uint8_t num_gprs;
29
30 uint32_t *code;
31 unsigned code_base;
32 unsigned code_size;
33 unsigned parm_size; /* size of non-bindable uniforms (c0[]) */
34
35 uint32_t hdr[NVC0_MAX_SHADER_HEADER_SIZE/4];
36 uint32_t flags[2];
37
38 struct {
39 uint32_t clip_mode; /* clip/cull selection */
40 uint8_t clip_enable; /* mask of defined clip planes */
41 uint8_t cull_enable; /* mask of defined cull distances */
42 uint8_t num_ucps; /* also set to max if ClipDistance is used */
43 uint8_t edgeflag; /* attribute index of edgeflag input */
44 bool need_vertex_id;
45 bool need_draw_parameters;
46 bool layer_viewport_relative; /* also applies go gp and tp */
47 } vp;
48 struct {
49 uint8_t early_z;
50 uint8_t colors;
51 uint8_t color_interp[2];
52 bool sample_mask_in;
53 bool force_persample_interp;
54 bool flatshade;
55 bool reads_framebuffer;
56 bool post_depth_coverage;
57 } fp;
58 struct {
59 uint32_t tess_mode; /* ~0 if defined by the other stage */
60 } tp;
61 struct {
62 uint32_t lmem_size; /* local memory (TGSI PRIVATE resource) size */
63 uint32_t smem_size; /* shared memory (TGSI LOCAL resource) size */
64 } cp;
65 uint8_t num_barriers;
66
67 void *relocs;
68 void *fixups;
69
70 struct nvc0_transform_feedback_state *tfb;
71
72 struct nouveau_heap *mem;
73 };
74
75 void
76 nvc0_program_sp_start_id(struct nvc0_context *, int, struct nvc0_program *);
77 #endif