Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

  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 varying_count[4];
  13.    uint8_t varying_index[4][128];
  14. };
  15.  
  16.  
  17. #define NVC0_SHADER_HEADER_SIZE (20 * 4)
  18.  
  19. struct nvc0_program {
  20.    struct pipe_shader_state pipe;
  21.  
  22.    ubyte type;
  23.    boolean translated;
  24.    boolean need_tls;
  25.    uint8_t num_gprs;
  26.  
  27.    uint32_t *code;
  28.    uint32_t *immd_data;
  29.    unsigned code_base;
  30.    unsigned code_size;
  31.    unsigned immd_base;
  32.    unsigned immd_size; /* size of immediate array data */
  33.    unsigned parm_size; /* size of non-bindable uniforms (c0[]) */
  34.  
  35.    uint32_t hdr[20];
  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 num_ucps; /* also set to max if ClipDistance is used */
  42.       uint8_t edgeflag; /* attribute index of edgeflag input */
  43.       boolean need_vertex_id;
  44.    } vp;
  45.    struct {
  46.       uint8_t early_z;
  47.       uint8_t in_pos[PIPE_MAX_SHADER_INPUTS];
  48.    } fp;
  49.    struct {
  50.       uint32_t tess_mode; /* ~0 if defined by the other stage */
  51.       uint32_t input_patch_size;
  52.    } tp;
  53.    struct {
  54.       uint32_t lmem_size; /* local memory (TGSI PRIVATE resource) size */
  55.       uint32_t smem_size; /* shared memory (TGSI LOCAL resource) size */
  56.       void *syms;
  57.       unsigned num_syms;
  58.    } cp;
  59.    uint8_t num_barriers;
  60.  
  61.    void *relocs;
  62.  
  63.    struct nvc0_transform_feedback_state *tfb;
  64.  
  65.    struct nouveau_heap *mem;
  66. };
  67.  
  68. #endif
  69.