diff options
Diffstat (limited to 'src/gallium/drivers/radeonsi/si_state.h')
-rw-r--r-- | src/gallium/drivers/radeonsi/si_state.h | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/src/gallium/drivers/radeonsi/si_state.h b/src/gallium/drivers/radeonsi/si_state.h index d8f03392a4c..cd2b9626a92 100644 --- a/src/gallium/drivers/radeonsi/si_state.h +++ b/src/gallium/drivers/radeonsi/si_state.h @@ -61,6 +61,46 @@ struct si_state_dsa { uint8_t writemask[2]; }; +struct si_vertex_element +{ + unsigned count; + struct pipe_vertex_element elements[PIPE_MAX_ATTRIBS]; +}; + +struct si_shader_io { + unsigned name; + unsigned gpr; + unsigned done; + int sid; + unsigned param_offset; + unsigned interpolate; + bool centroid; +}; + +struct si_shader { + unsigned ninput; + unsigned noutput; + struct si_shader_io input[32]; + struct si_shader_io output[32]; + bool uses_kill; + bool fs_write_all; + unsigned nr_cbufs; +}; + +struct si_pipe_shader { + struct si_shader shader; + struct si_pm4_state *pm4; + struct r600_resource *bo; + struct si_vertex_element vertex_elements; + struct tgsi_token *tokens; + unsigned num_sgprs; + unsigned num_vgprs; + unsigned spi_ps_input_ena; + unsigned sprite_coord_enable; + struct pipe_stream_output_info so; + unsigned so_strides[4]; +}; + union si_state { struct { struct si_pm4_state *init; @@ -75,6 +115,8 @@ union si_state { struct si_pm4_state *fb_rs; struct si_pm4_state *fb_blend; struct si_pm4_state *dsa_stencil_ref; + struct si_pm4_state *vs; + struct si_pm4_state *ps; struct si_pm4_state *spi; struct si_pm4_state *draw_info; } named; |