X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fgallium%2Fdrivers%2Filo%2Filo_shader.h;h=d12b086ec8140588690819c952fcff555d7716a9;hb=2f2d1b3d9b090aeba316d6c425c23e92340b5502;hp=f286a9f785f6e1563bdd0e970b758d43df34ad39;hpb=4d789c76dce580d754fe146041d7a1118524a4ff;p=mesa.git diff --git a/src/gallium/drivers/ilo/ilo_shader.h b/src/gallium/drivers/ilo/ilo_shader.h index f286a9f785f..d12b086ec81 100644 --- a/src/gallium/drivers/ilo/ilo_shader.h +++ b/src/gallium/drivers/ilo/ilo_shader.h @@ -30,10 +30,51 @@ #include "ilo_common.h" +enum ilo_kernel_param { + ILO_KERNEL_INPUT_COUNT, + ILO_KERNEL_OUTPUT_COUNT, + ILO_KERNEL_URB_DATA_START_REG, + ILO_KERNEL_SKIP_CBUF0_UPLOAD, + ILO_KERNEL_PCB_CBUF0_SIZE, + + ILO_KERNEL_VS_INPUT_INSTANCEID, + ILO_KERNEL_VS_INPUT_VERTEXID, + ILO_KERNEL_VS_INPUT_EDGEFLAG, + ILO_KERNEL_VS_PCB_UCP_SIZE, + ILO_KERNEL_VS_GEN6_SO, + ILO_KERNEL_VS_GEN6_SO_START_REG, + ILO_KERNEL_VS_GEN6_SO_POINT_OFFSET, + ILO_KERNEL_VS_GEN6_SO_LINE_OFFSET, + ILO_KERNEL_VS_GEN6_SO_TRI_OFFSET, + + ILO_KERNEL_GS_DISCARD_ADJACENCY, + ILO_KERNEL_GS_GEN6_SVBI_POST_INC, + + ILO_KERNEL_FS_INPUT_Z, + ILO_KERNEL_FS_INPUT_W, + ILO_KERNEL_FS_OUTPUT_Z, + ILO_KERNEL_FS_USE_KILL, + ILO_KERNEL_FS_BARYCENTRIC_INTERPOLATIONS, + ILO_KERNEL_FS_DISPATCH_16_OFFSET, + + ILO_KERNEL_PARAM_COUNT, +}; + +struct ilo_kernel_routing { + uint32_t const_interp_enable; + uint32_t point_sprite_enable; + unsigned source_skip, source_len; + + bool swizzle_enable; + uint16_t swizzles[16]; +}; + struct intel_bo; struct ilo_context; +struct ilo_rasterizer_state; struct ilo_shader_cache; struct ilo_shader_state; +struct ilo_shader_cso; struct ilo_shader_cache * ilo_shader_cache_create(void); @@ -55,10 +96,55 @@ ilo_shader_cache_upload(struct ilo_shader_cache *shc, bool incremental); struct ilo_shader_state * -ilo_shader_state_create(const struct ilo_context *ilo, - int type, const void *templ); +ilo_shader_create_vs(const struct ilo_dev_info *dev, + const struct pipe_shader_state *state, + const struct ilo_context *precompile); + +struct ilo_shader_state * +ilo_shader_create_gs(const struct ilo_dev_info *dev, + const struct pipe_shader_state *state, + const struct ilo_context *precompile); + +struct ilo_shader_state * +ilo_shader_create_fs(const struct ilo_dev_info *dev, + const struct pipe_shader_state *state, + const struct ilo_context *precompile); + +struct ilo_shader_state * +ilo_shader_create_cs(const struct ilo_dev_info *dev, + const struct pipe_compute_state *state, + const struct ilo_context *precompile); void -ilo_shader_state_destroy(struct ilo_shader_state *state); +ilo_shader_destroy(struct ilo_shader_state *shader); + +int +ilo_shader_get_type(const struct ilo_shader_state *shader); + +bool +ilo_shader_select_kernel(struct ilo_shader_state *shader, + const struct ilo_context *ilo, + uint32_t dirty); + +bool +ilo_shader_select_kernel_routing(struct ilo_shader_state *shader, + const struct ilo_shader_state *source, + const struct ilo_rasterizer_state *rasterizer); + +uint32_t +ilo_shader_get_kernel_offset(const struct ilo_shader_state *shader); + +int +ilo_shader_get_kernel_param(const struct ilo_shader_state *shader, + enum ilo_kernel_param param); + +const struct ilo_shader_cso * +ilo_shader_get_kernel_cso(const struct ilo_shader_state *shader); + +const struct pipe_stream_output_info * +ilo_shader_get_kernel_so_info(const struct ilo_shader_state *shader); + +const struct ilo_kernel_routing * +ilo_shader_get_kernel_routing(const struct ilo_shader_state *shader); #endif /* ILO_SHADER_H */