Lines Matching refs:equation

140 /* Determines if an equation can run in fixed function */
143 pan_blend_can_fixed_function(const struct pan_blend_equation equation,
146 return !equation.blend_enable ||
147 (can_fixed_function_equation(equation.rgb_func,
148 equation.rgb_src_factor,
149 equation.rgb_invert_src_factor,
150 equation.rgb_dst_factor,
151 equation.rgb_invert_dst_factor,
153 can_fixed_function_equation(equation.alpha_func,
154 equation.alpha_src_factor,
155 equation.alpha_invert_src_factor,
156 equation.alpha_dst_factor,
157 equation.alpha_invert_dst_factor,
283 pan_blend_is_opaque(const struct pan_blend_equation equation)
287 if (equation.color_mask != 0xF)
291 if (!equation.blend_enable)
295 return equation.rgb_src_factor == BLEND_FACTOR_ZERO &&
296 equation.rgb_invert_src_factor &&
297 equation.rgb_dst_factor == BLEND_FACTOR_ZERO &&
298 !equation.rgb_invert_dst_factor &&
299 (equation.rgb_func == BLEND_FUNC_ADD ||
300 equation.rgb_func == BLEND_FUNC_SUBTRACT) &&
301 equation.alpha_src_factor == BLEND_FACTOR_ZERO &&
302 equation.alpha_invert_src_factor &&
303 equation.alpha_dst_factor == BLEND_FACTOR_ZERO &&
304 !equation.alpha_invert_dst_factor &&
305 (equation.alpha_func == BLEND_FUNC_ADD ||
306 equation.alpha_func == BLEND_FUNC_SUBTRACT);
402 /* Determines if a blend equation reads back the destination. This can occur by
403 * explicitly referencing the destination in the blend equation, or by using a
407 pan_blend_reads_dest(const struct pan_blend_equation equation)
409 return (equation.color_mask && equation.color_mask != 0xF) ||
410 is_dest_factor(equation.rgb_src_factor, false) ||
411 is_dest_factor(equation.alpha_src_factor, true) ||
412 equation.rgb_dst_factor != BLEND_FACTOR_ZERO ||
413 equation.rgb_invert_dst_factor ||
414 equation.alpha_dst_factor != BLEND_FACTOR_ZERO ||
415 equation.alpha_invert_dst_factor;
419 * state. Assumes the equation can be represented as fixed-function. */
422 pan_blend_to_fixed_function_equation(const struct pan_blend_equation equation,
426 if (!equation.blend_enable) {
427 out->color_mask = equation.color_mask;
438 to_panfrost_function(equation.rgb_func,
439 equation.rgb_src_factor,
440 equation.rgb_invert_src_factor,
441 equation.rgb_dst_factor,
442 equation.rgb_invert_dst_factor,
445 to_panfrost_function(equation.alpha_func,
446 equation.alpha_src_factor,
447 equation.alpha_invert_src_factor,
448 equation.alpha_dst_factor,
449 equation.alpha_invert_dst_factor,
451 out->color_mask = equation.color_mask;
455 pan_pack_blend(const struct pan_blend_equation equation)
462 pan_blend_to_fixed_function_equation(equation, &cfg);
533 if (!rt_state->equation.blend_enable) {
539 if (rt_state->equation.color_mask & 7) {
540 assert(rt_state->equation.rgb_func < ARRAY_SIZE(funcs));
541 assert(rt_state->equation.rgb_src_factor < ARRAY_SIZE(factors));
542 assert(rt_state->equation.rgb_dst_factor < ARRAY_SIZE(factors));
544 (rt_state->equation.color_mask & 1) ? "R" : "",
545 (rt_state->equation.color_mask & 2) ? "G" : "",
546 (rt_state->equation.color_mask & 4) ? "B" : "",
547 funcs[rt_state->equation.rgb_func],
548 rt_state->equation.rgb_invert_src_factor ? "-" : "",
549 factors[rt_state->equation.rgb_src_factor],
550 rt_state->equation.rgb_invert_dst_factor ? "-" : "",
551 factors[rt_state->equation.rgb_dst_factor],
552 rt_state->equation.color_mask & 8 ? ";" : "");
558 if (rt_state->equation.color_mask & 8) {
559 assert(rt_state->equation.alpha_func < ARRAY_SIZE(funcs));
560 assert(rt_state->equation.alpha_src_factor < ARRAY_SIZE(factors));
561 assert(rt_state->equation.alpha_dst_factor < ARRAY_SIZE(factors));
563 funcs[rt_state->equation.alpha_func],
564 rt_state->equation.alpha_invert_src_factor ? "-" : "",
565 factors[rt_state->equation.alpha_src_factor],
566 rt_state->equation.alpha_invert_dst_factor ? "-" : "",
567 factors[rt_state->equation.alpha_dst_factor]);
617 state->logicop_enable ? "logicop" : "equation",
629 .rt[0].colormask = rt_state->equation.color_mask,
633 if (!rt_state->equation.blend_enable) {
645 options.rt[0].rgb.func = rt_state->equation.rgb_func;
646 options.rt[0].rgb.src_factor = rt_state->equation.rgb_src_factor;
647 options.rt[0].rgb.invert_src_factor = rt_state->equation.rgb_invert_src_factor;
648 options.rt[0].rgb.dst_factor = rt_state->equation.rgb_dst_factor;
649 options.rt[0].rgb.invert_dst_factor = rt_state->equation.rgb_invert_dst_factor;
650 options.rt[0].alpha.func = rt_state->equation.alpha_func;
651 options.rt[0].alpha.src_factor = rt_state->equation.alpha_src_factor;
652 options.rt[0].alpha.invert_src_factor = rt_state->equation.alpha_invert_src_factor;
653 options.rt[0].alpha.dst_factor = rt_state->equation.alpha_dst_factor;
654 options.rt[0].alpha.invert_dst_factor = rt_state->equation.alpha_invert_dst_factor;
776 .has_constants = pan_blend_constant_mask(state->rts[rt].equation) != 0,
780 .equation = state->rts[rt].equation,