/* A blend shader descriptor ready for actual use */
struct panfrost_blend_shader_final {
- /* The compiled shader in GPU memory, possibly patched */
- struct panfrost_bo *bo;
+ /* GPU address where we're compiled to */
+ uint64_t gpu;
/* First instruction tag (for tagging the pointer) */
unsigned first_tag;
};
struct panfrost_blend_equation_final {
- struct mali_blend_equation *equation;
+ struct mali_blend_equation_packed equation;
float constant;
};
* fixed-function configuration for this blend state */
bool has_fixed_function;
- struct mali_blend_equation equation;
+ struct mali_blend_equation_packed equation;
/* Mask of blend color components read */
unsigned constant_mask;
+ /* Properties of the blend mode */
+ bool opaque, load_dest, no_colour;
+
/* Regardless of fixed-function blending, this is a map of pipe_format
* to panfrost_blend_shader */
/* Set for a shader, clear for an equation */
bool is_shader;
+ /* Set if this is the replace mode */
+ bool opaque;
+
+ /* Set if destination is loaded */
+ bool load_dest;
+
+ /* Set if the colour mask is 0x0 (nothing is written) */
+ bool no_colour;
+
union {
struct panfrost_blend_shader_final shader;
struct panfrost_blend_equation_final equation;
struct panfrost_blend_final
panfrost_get_blend_for_context(struct panfrost_context *ctx, unsigned rt);
+struct panfrost_blend_shader *
+panfrost_get_blend_shader(
+ struct panfrost_context *ctx,
+ struct panfrost_blend_state *blend,
+ enum pipe_format fmt,
+ unsigned rt);
+
#endif