#ifndef __PAN_CMDSTREAM_H__
#define __PAN_CMDSTREAM_H__
-#include "panfrost-job.h"
+#include "pipe/p_defines.h"
+#include "pipe/p_state.h"
+
+#include "midgard_pack.h"
#include "pan_job.h"
+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_init(struct panfrost_context *ctx,
+ enum pipe_shader_type stage,
+ struct mali_vertex_tiler_prefix *prefix,
+ struct mali_vertex_tiler_postfix *postfix);
+
+void
+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_shader_meta(struct panfrost_batch *batch,
+ enum pipe_shader_type st,
+ struct mali_vertex_tiler_postfix *postfix);
+
void
panfrost_emit_viewport(struct panfrost_batch *batch,
- struct midgard_payload_vertex_tiler *tp);
+ struct mali_vertex_tiler_postfix *tiler_postfix);
+
+void
+panfrost_emit_const_buf(struct panfrost_batch *batch,
+ enum pipe_shader_type stage,
+ struct mali_vertex_tiler_postfix *postfix);
+
+void
+panfrost_emit_shared_memory(struct panfrost_batch *batch,
+ const struct pipe_grid_info *info,
+ struct midgard_payload_vertex_tiler *vtp);
+
+void
+panfrost_emit_texture_descriptors(struct panfrost_batch *batch,
+ enum pipe_shader_type stage,
+ struct mali_vertex_tiler_postfix *postfix);
+
+void
+panfrost_emit_sampler_descriptors(struct panfrost_batch *batch,
+ enum pipe_shader_type stage,
+ struct mali_vertex_tiler_postfix *postfix);
+
+void
+panfrost_emit_vertex_data(struct panfrost_batch *batch,
+ struct mali_vertex_tiler_postfix *vertex_postfix);
+
+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__ */