2 #ifndef __NVC0_PROGRAM_H__
3 #define __NVC0_PROGRAM_H__
5 #include "pipe/p_state.h"
7 #define NVC0_CAP_MAX_PROGRAM_TEMPS 128
10 struct nvc0_transform_feedback_state
{
12 uint8_t varying_count
[4];
13 uint8_t varying_index
[4][128];
17 #define NVC0_SHADER_HEADER_SIZE (20 * 4)
20 struct pipe_shader_state pipe
;
32 unsigned immd_size
; /* size of immediate array data */
33 unsigned parm_size
; /* size of non-bindable uniforms (c0[]) */
39 uint32_t clip_mode
; /* clip/cull selection */
40 uint8_t clip_enable
; /* mask of defined clip planes */
41 uint8_t num_ucps
; /* also set to max if ClipDistance is used */
42 uint8_t edgeflag
; /* attribute index of edgeflag input */
43 boolean need_vertex_id
;
47 uint8_t in_pos
[PIPE_MAX_SHADER_INPUTS
];
48 uint8_t sample_interp
;
51 uint32_t tess_mode
; /* ~0 if defined by the other stage */
52 uint32_t input_patch_size
;
55 uint32_t lmem_size
; /* local memory (TGSI PRIVATE resource) size */
56 uint32_t smem_size
; /* shared memory (TGSI LOCAL resource) size */
64 struct nvc0_transform_feedback_state
*tfb
;
66 struct nouveau_heap
*mem
;