"Fossies" - the Fresh Open Source Software Archive

Member "mesa-20.1.8/src/gallium/drivers/nouveau/nv30/nv30_state.h" (16 Sep 2020, 3267 Bytes) of package /linux/misc/mesa-20.1.8.tar.xz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. For more information about "nv30_state.h" see the Fossies "Dox" file reference documentation.

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