#include "pan_resource.h"
#include "pan_job.h"
#include "pan_blend.h"
+#include "pan_encoder.h"
#include "pipe/p_compiler.h"
#include "pipe/p_config.h"
unsigned type;
unsigned index;
- /* Memory for the GPU to writeback the value of the query */
- struct panfrost_transfer transfer;
+ union {
+ /* For computed queries. 64-bit to prevent overflow */
+ struct {
+ uint64_t start;
+ uint64_t end;
+ };
+
+ /* Memory for the GPU to writeback the value of the query */
+ struct panfrost_transfer transfer;
+ };
};
struct panfrost_fence {
struct panfrost_memory tiler_dummy;
struct panfrost_memory depth_stencil_buffer;
+ bool active_queries;
+ uint64_t prims_generated;
+ uint64_t tf_prims_generated;
struct panfrost_query *occlusion_query;
/* Each draw has corresponding vertex and tiler payloads */
unsigned vertex_count;
unsigned instance_count;
+ enum pipe_prim_type active_prim;
/* If instancing is enabled, vertex count padded for instance; if
* it is disabled, just equal to plain vertex count */
bool writes_point_size;
bool reads_point_coord;
bool reads_face;
+ bool reads_frag_coord;
struct mali_attr_meta varyings[PIPE_MAX_ATTRIBS];
gl_varying_slot varyings_loc[PIPE_MAX_ATTRIBS];
+ struct pipe_stream_output_info stream_output;
+ uint64_t so_mask;
unsigned sysval_count;
unsigned sysval[MAX_SYSVAL_COUNT];
enum pipe_shader_ir ir_type,
const void *ir,
gl_shader_stage stage,
- struct panfrost_shader_state *state);
-
-void
-panfrost_pack_work_groups_compute(
- struct mali_vertex_tiler_prefix *out,
- unsigned num_x,
- unsigned num_y,
- unsigned num_z,
- unsigned size_x,
- unsigned size_y,
- unsigned size_z);
-
-void
-panfrost_pack_work_groups_fused(
- struct mali_vertex_tiler_prefix *vertex,
- struct mali_vertex_tiler_prefix *tiler,
- unsigned num_x,
- unsigned num_y,
- unsigned num_z,
- unsigned size_x,
- unsigned size_y,
- unsigned size_z);
+ struct panfrost_shader_state *state,
+ uint64_t *outputs_written);
/* Instancing */