change blend funcs validity check
Simplifies the validation of blend functions. Can allow `SW_SRC_ALPHA_SATURATE` as dst factor, but hey
This commit is contained in:
parent
f8f1988bd9
commit
af67e1144b
60
src/external/rlsw.h
vendored
60
src/external/rlsw.h
vendored
|
|
@ -1489,51 +1489,6 @@ static inline bool sw_is_face_valid(int face)
|
||||||
return (face == SW_FRONT || face == SW_BACK);
|
return (face == SW_FRONT || face == SW_BACK);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline bool sw_is_blend_src_factor_valid(int blend)
|
|
||||||
{
|
|
||||||
bool result = false;
|
|
||||||
|
|
||||||
switch (blend)
|
|
||||||
{
|
|
||||||
case SW_ZERO:
|
|
||||||
case SW_ONE:
|
|
||||||
case SW_SRC_COLOR:
|
|
||||||
case SW_ONE_MINUS_SRC_COLOR:
|
|
||||||
case SW_SRC_ALPHA:
|
|
||||||
case SW_ONE_MINUS_SRC_ALPHA:
|
|
||||||
case SW_DST_ALPHA:
|
|
||||||
case SW_ONE_MINUS_DST_ALPHA:
|
|
||||||
case SW_DST_COLOR:
|
|
||||||
case SW_ONE_MINUS_DST_COLOR:
|
|
||||||
case SW_SRC_ALPHA_SATURATE: result = true; break;
|
|
||||||
default: break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline bool sw_is_blend_dst_factor_valid(int blend)
|
|
||||||
{
|
|
||||||
bool result = false;
|
|
||||||
|
|
||||||
switch (blend)
|
|
||||||
{
|
|
||||||
case SW_ZERO:
|
|
||||||
case SW_ONE:
|
|
||||||
case SW_SRC_COLOR:
|
|
||||||
case SW_ONE_MINUS_SRC_COLOR:
|
|
||||||
case SW_SRC_ALPHA:
|
|
||||||
case SW_ONE_MINUS_SRC_ALPHA:
|
|
||||||
case SW_DST_ALPHA:
|
|
||||||
case SW_ONE_MINUS_DST_ALPHA:
|
|
||||||
case SW_DST_COLOR:
|
|
||||||
case SW_ONE_MINUS_DST_COLOR: result = true; break;
|
|
||||||
default: break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline bool sw_is_ready_to_render(void)
|
static inline bool sw_is_ready_to_render(void)
|
||||||
{
|
{
|
||||||
return (swCheckFramebufferStatus() == SW_FRAMEBUFFER_COMPLETE);
|
return (swCheckFramebufferStatus() == SW_FRAMEBUFFER_COMPLETE);
|
||||||
|
|
@ -4158,19 +4113,14 @@ void swClear(uint32_t bitmask)
|
||||||
|
|
||||||
void swBlendFunc(SWfactor sfactor, SWfactor dfactor)
|
void swBlendFunc(SWfactor sfactor, SWfactor dfactor)
|
||||||
{
|
{
|
||||||
if (!sw_is_blend_src_factor_valid(sfactor) ||
|
int sIndex = sw_blend_factor_index(sfactor);
|
||||||
!sw_is_blend_dst_factor_valid(dfactor))
|
if (sIndex < 0) { RLSW.errCode = SW_INVALID_ENUM; return; }
|
||||||
{
|
|
||||||
RLSW.errCode = SW_INVALID_ENUM;
|
int dIndex = sw_blend_factor_index(dfactor);
|
||||||
return;
|
if (dIndex < 0) { RLSW.errCode = SW_INVALID_ENUM; return; }
|
||||||
}
|
|
||||||
|
|
||||||
RLSW.srcFactor = sfactor;
|
RLSW.srcFactor = sfactor;
|
||||||
RLSW.dstFactor = dfactor;
|
RLSW.dstFactor = dfactor;
|
||||||
|
|
||||||
int sIndex = sw_blend_factor_index(sfactor);
|
|
||||||
int dIndex = sw_blend_factor_index(dfactor);
|
|
||||||
|
|
||||||
RLSW.blendFunc = SW_BLEND_TABLE[sIndex][dIndex];
|
RLSW.blendFunc = SW_BLEND_TABLE[sIndex][dIndex];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user