etnaviv: fix alpha blending cases
We need to check rgb_func/alpha_func when determining if blend or separate alpha is required. Signed-off-by: Jonathan Marek <jonathan@marek.ca> Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
This commit is contained in:
parent
6c3c05dc38
commit
5f73726013
|
@ -49,23 +49,26 @@ etna_blend_state_create(struct pipe_context *pctx,
|
||||||
|
|
||||||
/* Enable blending if
|
/* Enable blending if
|
||||||
* - blend enabled in blend state
|
* - blend enabled in blend state
|
||||||
* - NOT source factor is ONE and destination factor ZERO for both rgb and
|
* - NOT source factor is ONE and destination factor ZERO and eq is ADD for
|
||||||
* alpha (which would mean that blending is effectively disabled)
|
* both rgb and alpha (which mean that blending is effectively disabled)
|
||||||
*/
|
*/
|
||||||
alpha_enable = rt0->blend_enable &&
|
alpha_enable = rt0->blend_enable &&
|
||||||
!(rt0->rgb_src_factor == PIPE_BLENDFACTOR_ONE &&
|
!(rt0->rgb_src_factor == PIPE_BLENDFACTOR_ONE &&
|
||||||
rt0->rgb_dst_factor == PIPE_BLENDFACTOR_ZERO &&
|
rt0->rgb_dst_factor == PIPE_BLENDFACTOR_ZERO &&
|
||||||
|
rt0->rgb_func == PIPE_BLEND_ADD &&
|
||||||
rt0->alpha_src_factor == PIPE_BLENDFACTOR_ONE &&
|
rt0->alpha_src_factor == PIPE_BLENDFACTOR_ONE &&
|
||||||
rt0->alpha_dst_factor == PIPE_BLENDFACTOR_ZERO);
|
rt0->alpha_dst_factor == PIPE_BLENDFACTOR_ZERO &&
|
||||||
|
rt0->alpha_func == PIPE_BLEND_ADD);
|
||||||
|
|
||||||
/* Enable separate alpha if
|
/* Enable separate alpha if
|
||||||
* - Blending enabled (see above)
|
* - Blending enabled (see above)
|
||||||
* - NOT source factor is equal to destination factor for both rgb abd
|
* - NOT source/destination factor and eq is same for both rgb and alpha
|
||||||
* alpha (which would effectively that mean alpha is not separate)
|
* (which would effectively that mean alpha is not separate), and
|
||||||
*/
|
*/
|
||||||
bool separate_alpha = alpha_enable &&
|
bool separate_alpha = alpha_enable &&
|
||||||
!(rt0->rgb_src_factor == rt0->alpha_src_factor &&
|
!(rt0->rgb_src_factor == rt0->alpha_src_factor &&
|
||||||
rt0->rgb_dst_factor == rt0->alpha_dst_factor);
|
rt0->rgb_dst_factor == rt0->alpha_dst_factor &&
|
||||||
|
rt0->rgb_func == rt0->alpha_func);
|
||||||
|
|
||||||
if (alpha_enable) {
|
if (alpha_enable) {
|
||||||
co->PE_ALPHA_CONFIG =
|
co->PE_ALPHA_CONFIG =
|
||||||
|
|
Loading…
Reference in New Issue