X-Git-Url: https://git.libre-soc.org/?p=mesa.git;a=blobdiff_plain;f=src%2Fgallium%2Fdrivers%2Fpanfrost%2Fpan_cmdstream.h;h=3603dcc2bc3ff657d5a522dcd3ad0355dd0244f0;hp=92544d2a37bd3a68d69c3d500dbad08de34c9719;hb=1513392e776317892a074fd350497370dae7ee58;hpb=56aeb921e92ace34e84440ff679590b98895b9e7 diff --git a/src/gallium/drivers/panfrost/pan_cmdstream.h b/src/gallium/drivers/panfrost/pan_cmdstream.h index 92544d2a37b..3603dcc2bc3 100644 --- a/src/gallium/drivers/panfrost/pan_cmdstream.h +++ b/src/gallium/drivers/panfrost/pan_cmdstream.h @@ -28,35 +28,96 @@ #include "pipe/p_defines.h" #include "pipe/p_state.h" -#include "panfrost-job.h" +#include "midgard_pack.h" #include "pan_job.h" -void -panfrost_vt_attach_framebuffer(struct panfrost_context *ctx, - struct midgard_payload_vertex_tiler *vt); +void panfrost_sampler_desc_init(const struct pipe_sampler_state *cso, struct mali_midgard_sampler_packed *hw); +void panfrost_sampler_desc_init_bifrost(const struct pipe_sampler_state *cso, struct mali_bifrost_sampler_packed *hw); void -panfrost_vt_update_occlusion_query(struct panfrost_context *ctx, - struct midgard_payload_vertex_tiler *tp); +panfrost_vt_init(struct panfrost_context *ctx, + enum pipe_shader_type stage, + struct mali_vertex_tiler_prefix *prefix, + struct mali_vertex_tiler_postfix *postfix); void -panfrost_emit_shader_meta(struct panfrost_batch *batch, - enum pipe_shader_type st, - struct midgard_payload_vertex_tiler *vtp); +panfrost_vt_set_draw_info(struct panfrost_context *ctx, + const struct pipe_draw_info *info, + enum mali_draw_mode draw_mode, + struct mali_vertex_tiler_postfix *vertex_postfix, + struct mali_vertex_tiler_prefix *tiler_prefix, + struct mali_vertex_tiler_postfix *tiler_postfix, + unsigned *vertex_count, + unsigned *padded_count); -void -panfrost_emit_viewport(struct panfrost_batch *batch, - struct midgard_payload_vertex_tiler *tp); +mali_ptr +panfrost_emit_compute_shader_meta(struct panfrost_batch *batch, enum pipe_shader_type stage); -void +mali_ptr +panfrost_emit_frag_shader_meta(struct panfrost_batch *batch); + +mali_ptr +panfrost_emit_viewport(struct panfrost_batch *batch); + +mali_ptr panfrost_emit_const_buf(struct panfrost_batch *batch, enum pipe_shader_type stage, - struct midgard_payload_vertex_tiler *vtp); + mali_ptr *push_constants); -void +mali_ptr panfrost_emit_shared_memory(struct panfrost_batch *batch, - const struct pipe_grid_info *info, - struct midgard_payload_vertex_tiler *vtp); + const struct pipe_grid_info *info); + +mali_ptr +panfrost_emit_texture_descriptors(struct panfrost_batch *batch, + enum pipe_shader_type stage); + +mali_ptr +panfrost_emit_sampler_descriptors(struct panfrost_batch *batch, + enum pipe_shader_type stage); + +mali_ptr +panfrost_emit_vertex_data(struct panfrost_batch *batch, + mali_ptr *buffers); + +void +panfrost_emit_varying_descriptor(struct panfrost_batch *batch, + unsigned vertex_count, + struct mali_vertex_tiler_postfix *vertex_postfix, + struct mali_vertex_tiler_postfix *tiler_postfix, + union midgard_primitive_size *primitive_size); + +void +panfrost_emit_vertex_tiler_jobs(struct panfrost_batch *batch, + struct mali_vertex_tiler_prefix *vertex_prefix, + struct mali_vertex_tiler_postfix *vertex_postfix, + struct mali_vertex_tiler_prefix *tiler_prefix, + struct mali_vertex_tiler_postfix *tiler_postfix, + union midgard_primitive_size *primitive_size); + +void +panfrost_vt_update_primitive_size(struct panfrost_context *ctx, + struct mali_vertex_tiler_prefix *prefix, + union midgard_primitive_size *primitive_size); + +mali_ptr +panfrost_emit_sample_locations(struct panfrost_batch *batch); + +static inline unsigned +panfrost_translate_compare_func(enum pipe_compare_func in) +{ + switch (in) { + case PIPE_FUNC_NEVER: return MALI_FUNC_NEVER; + case PIPE_FUNC_LESS: return MALI_FUNC_LESS; + case PIPE_FUNC_EQUAL: return MALI_FUNC_EQUAL; + case PIPE_FUNC_LEQUAL: return MALI_FUNC_LEQUAL; + case PIPE_FUNC_GREATER: return MALI_FUNC_GREATER; + case PIPE_FUNC_NOTEQUAL: return MALI_FUNC_NOT_EQUAL; + case PIPE_FUNC_GEQUAL: return MALI_FUNC_GEQUAL; + case PIPE_FUNC_ALWAYS: return MALI_FUNC_ALWAYS; + default: unreachable("Invalid func"); + } +} #endif /* __PAN_CMDSTREAM_H__ */