#include <assert.h>
#include "pan_resource.h"
#include "pan_job.h"
+#include "pan_blend.h"
#include "pipe/p_compiler.h"
#include "pipe/p_config.h"
int fd;
};
-#define PANFROST_MAX_TRANSIENT_ENTRIES 64
-
-struct panfrost_transient_pool {
- /* Memory blocks in the pool */
- struct panfrost_memory_entry *entries[PANFROST_MAX_TRANSIENT_ENTRIES];
-
- /* Number of entries we own */
- unsigned entry_count;
-
- /* Current entry that we are writing to, zero-indexed, strictly less than entry_count */
- unsigned entry_index;
-
- /* Number of bytes into the current entry we are */
- off_t entry_offset;
-
- /* Entry size (all entries must be homogenous) */
- size_t entry_size;
-};
-
struct panfrost_context {
/* Gallium context */
struct pipe_context base;
struct pipe_framebuffer_state pipe_framebuffer;
- /* The number of concurrent FBOs allowed depends on the number of pools
- * used; pools are ringed for parallelism opportunities */
-
- struct panfrost_transient_pool transient_pools[2];
- int cmdstream_i;
-
struct panfrost_memory cmdstream_persistent;
struct panfrost_memory shaders;
struct panfrost_memory scratchpad;
* there's no real advantage to doing so */
bool require_sfbd;
- uint32_t out_sync;
+ uint32_t out_sync;
};
/* Corresponds to the CSO */
unsigned tiler_gl_enables;
};
-struct panfrost_blend_state {
- struct pipe_blend_state base;
-
- /* Whether a blend shader is in use */
- bool has_blend_shader;
-
- /* Compiled fixed function command */
- struct mali_blend_equation equation;
- float constant;
-
- /* Compiled blend shader */
- mali_ptr blend_shader;
- int blend_work_count;
-};
-
/* Variants bundle together to form the backing CSO, bundling multiple
* shaders with varying emulated features baked in (alpha test
* parameters, etc) */
/* Compiled, mapped descriptor, ready for the hardware */
bool compiled;
struct mali_shader_meta *tripipe;
- mali_ptr tripipe_gpu;
/* Non-descript information */
int uniform_count;
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);
+ 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 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);
/* Instancing */
struct pan_shift_odd
panfrost_padded_vertex_count(
- unsigned vertex_count,
- bool primitive_pot);
+ unsigned vertex_count,
+ bool primitive_pot);
unsigned