Subversion Repositories Kolibri OS

Rev

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

  1. #ifndef __NV30_STATE_H__
  2. #define __NV30_STATE_H__
  3.  
  4. #include "pipe/p_state.h"
  5. #include "tgsi/tgsi_scan.h"
  6. #include "util/u_dynarray.h"
  7.  
  8. #define NV30_QUERY_ZCULL_0 (PIPE_QUERY_TYPES + 0)
  9. #define NV30_QUERY_ZCULL_1 (PIPE_QUERY_TYPES + 1)
  10. #define NV30_QUERY_ZCULL_2 (PIPE_QUERY_TYPES + 2)
  11. #define NV30_QUERY_ZCULL_3 (PIPE_QUERY_TYPES + 3)
  12.  
  13. #define SB_DATA(so, u)        (so)->data[(so)->size++] = (u)
  14. #define SB_MTHD30(so, mthd, size)                                          \
  15.    SB_DATA((so), ((size) << 18) | (7 << 13) | NV30_3D_##mthd)
  16. #define SB_MTHD40(so, mthd, size)                                          \
  17.    SB_DATA((so), ((size) << 18) | (7 << 13) | NV40_3D_##mthd)
  18.  
  19. struct nv30_blend_stateobj {
  20.    struct pipe_blend_state pipe;
  21.    unsigned data[16];
  22.    unsigned size;
  23. };
  24.  
  25. struct nv30_rasterizer_stateobj {
  26.    struct pipe_rasterizer_state pipe;
  27.    unsigned data[32];
  28.    unsigned size;
  29. };
  30.  
  31. struct nv30_zsa_stateobj {
  32.    struct pipe_depth_stencil_alpha_state pipe;
  33.    unsigned data[32];
  34.    unsigned size;
  35. };
  36.  
  37. struct nv30_sampler_state {
  38.    struct pipe_sampler_state pipe;
  39.    unsigned fmt;
  40.    unsigned wrap;
  41.    unsigned en;
  42.    unsigned filt;
  43.    unsigned bcol;
  44.    /* 4.8 */
  45.    unsigned min_lod;
  46.    unsigned max_lod;
  47. };
  48.  
  49. struct nv30_sampler_view {
  50.    struct pipe_sampler_view pipe;
  51.    unsigned fmt;
  52.    unsigned swz;
  53.    unsigned filt;
  54.    unsigned filt_mask;
  55.    unsigned wrap;
  56.    unsigned wrap_mask;
  57.    unsigned npot_size0;
  58.    unsigned npot_size1;
  59.    /* 4.8 */
  60.    unsigned base_lod;
  61.    unsigned high_lod;
  62. };
  63.  
  64. struct nv30_shader_reloc {
  65.    unsigned location;
  66.    int target;
  67. };
  68.  
  69. struct nv30_vertprog_exec {
  70.    uint32_t data[4];
  71. };
  72.  
  73. struct nv30_vertprog_data {
  74.    int index; /* immediates == -1 */
  75.    float value[4];
  76. };
  77.  
  78. struct nv30_vertprog {
  79.    struct pipe_shader_state pipe;
  80.    struct tgsi_shader_info info;
  81.  
  82.    struct draw_vertex_shader *draw;
  83.    boolean translated;
  84.    unsigned enabled_ucps;
  85.    uint16_t texcoord[10];
  86.  
  87.    struct util_dynarray branch_relocs;
  88.    struct nv30_vertprog_exec *insns;
  89.    unsigned nr_insns;
  90.  
  91.    struct util_dynarray const_relocs;
  92.    struct nv30_vertprog_data *consts;
  93.    unsigned nr_consts;
  94.  
  95.    struct nouveau_heap *exec;
  96.    struct nouveau_heap *data;
  97.    uint32_t ir;
  98.    uint32_t or;
  99.    void *nvfx;
  100. };
  101.  
  102. struct nv30_fragprog_data {
  103.    unsigned offset;
  104.    unsigned index;
  105. };
  106.  
  107. struct nv30_fragprog {
  108.    struct pipe_shader_state pipe;
  109.    struct tgsi_shader_info info;
  110.  
  111.    struct draw_fragment_shader *draw;
  112.    boolean translated;
  113.  
  114.    uint32_t *insn;
  115.    unsigned insn_len;
  116.  
  117.    uint16_t texcoord[10];
  118.    struct nv30_fragprog_data *consts;
  119.    unsigned nr_consts;
  120.  
  121.    struct pipe_resource *buffer;
  122.    uint32_t vp_or; /* appended to VP_RESULT_EN */
  123.    uint32_t fp_control;
  124.    uint32_t point_sprite_control;
  125.    uint32_t coord_conventions;
  126.    uint32_t texcoords;
  127.    uint32_t rt_enable;
  128. };
  129.  
  130. struct nv30_vertex_element {
  131.    unsigned state;
  132. };
  133.  
  134. struct nv30_vertex_stateobj {
  135.    struct pipe_vertex_element pipe[PIPE_MAX_ATTRIBS];
  136.    struct translate *translate;
  137.    bool need_conversion;
  138.    unsigned num_elements;
  139.    unsigned vtx_size;
  140.    unsigned vtx_per_packet_max;
  141.    struct nv30_vertex_element element[];
  142. };
  143.  
  144. #endif
  145.