pipeline simple optimization for _needs_blending_enabled
In _cogl_pipeline_needs_blending_enabled after first checking whether the property most recently changed requires blending we would then resort to checking all other properties too in case some other state also requires blending. We now avoid checking all other properties in the case that blending was previously disabled and checking the property recently changed doesn't require blending. Note: the plan is to improve this further by explicitly keeping track of the properties that currently cause blending to be enabled so that we never have to resort to checking all other properties we can constrain the checks to those masked properties.
This commit is contained in:
parent
6b08583f2f
commit
98dd3f723c
@ -907,11 +907,20 @@ _cogl_pipeline_needs_blending_enabled (CoglPipeline *pipeline,
|
|||||||
if (has_alpha)
|
if (has_alpha)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
|
/* At this point, considering just the state that has changed it
|
||||||
|
* looks like blending isn't needed. If blending was previously
|
||||||
|
* enabled though it could be that some other state still requires
|
||||||
|
* that we have blending enabled. In this case we still need to
|
||||||
|
* go and check the other state...
|
||||||
|
*
|
||||||
|
* FIXME: We should explicitly keep track of the mask of state
|
||||||
|
* groups that are currently causing blending to be enabled so that
|
||||||
|
* we never have to resort to checking *all* the state and can
|
||||||
|
* instead always limit the check to those in the mask.
|
||||||
|
*/
|
||||||
|
if (pipeline->real_blend_enable)
|
||||||
{
|
{
|
||||||
/* In this case we have so far only checked the property that
|
|
||||||
* has been changed so we now need to check all the other
|
|
||||||
* properties too. */
|
|
||||||
other_state = COGL_PIPELINE_STATE_AFFECTS_BLENDING & ~changes;
|
other_state = COGL_PIPELINE_STATE_AFFECTS_BLENDING & ~changes;
|
||||||
if (other_state &&
|
if (other_state &&
|
||||||
_cogl_pipeline_needs_blending_enabled (pipeline,
|
_cogl_pipeline_needs_blending_enabled (pipeline,
|
||||||
|
Loading…
Reference in New Issue
Block a user