Home | History | Annotate | Download | only in nvc0
      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 NVC0_SHADER_HEADER_SIZE (20 * 4)
     19 
     20 struct nvc0_program {
     21    struct pipe_shader_state pipe;
     22 
     23    ubyte type;
     24    bool translated;
     25    bool need_tls;
     26    uint8_t num_gprs;
     27 
     28    uint32_t *code;
     29    unsigned code_base;
     30    unsigned code_size;
     31    unsigned parm_size; /* size of non-bindable uniforms (c0[]) */
     32 
     33    uint32_t hdr[20];
     34    uint32_t flags[2];
     35 
     36    struct {
     37       uint32_t clip_mode; /* clip/cull selection */
     38       uint8_t clip_enable; /* mask of defined clip planes */
     39       uint8_t cull_enable; /* mask of defined cull distances */
     40       uint8_t num_ucps; /* also set to max if ClipDistance is used */
     41       uint8_t edgeflag; /* attribute index of edgeflag input */
     42       bool need_vertex_id;
     43       bool need_draw_parameters;
     44    } vp;
     45    struct {
     46       uint8_t early_z;
     47       uint8_t colors;
     48       uint8_t color_interp[2];
     49       bool sample_mask_in;
     50       bool force_persample_interp;
     51       bool flatshade;
     52       bool reads_framebuffer;
     53    } fp;
     54    struct {
     55       uint32_t tess_mode; /* ~0 if defined by the other stage */
     56       uint32_t input_patch_size;
     57    } tp;
     58    struct {
     59       uint32_t lmem_size; /* local memory (TGSI PRIVATE resource) size */
     60       uint32_t smem_size; /* shared memory (TGSI LOCAL resource) size */
     61       void *syms;
     62       unsigned num_syms;
     63    } cp;
     64    uint8_t num_barriers;
     65 
     66    void *relocs;
     67    void *fixups;
     68 
     69    struct nvc0_transform_feedback_state *tfb;
     70 
     71    struct nouveau_heap *mem;
     72 };
     73 
     74 #endif
     75