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
{
13 uint8_t varying_count
[4];
14 uint8_t varying_index
[4][128];
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
23 struct pipe_shader_state pipe
;
33 unsigned parm_size
; /* size of non-bindable uniforms (c0[]) */
35 uint32_t hdr
[NVC0_MAX_SHADER_HEADER_SIZE
/4];
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 */
45 bool need_draw_parameters
;
46 bool layer_viewport_relative
; /* also applies go gp and tp */
51 uint8_t color_interp
[2];
53 bool force_persample_interp
;
55 bool reads_framebuffer
;
56 bool post_depth_coverage
;
59 uint32_t tess_mode
; /* ~0 if defined by the other stage */
62 uint32_t lmem_size
; /* local memory (TGSI PRIVATE resource) size */
63 uint32_t smem_size
; /* shared memory (TGSI LOCAL resource) size */
70 struct nvc0_transform_feedback_state
*tfb
;
72 struct nouveau_heap
*mem
;
76 nvc0_program_sp_start_id(struct nvc0_context
*, int, struct nvc0_program
*);