RenderState: Approximate logic op with blending if unsupported

This is a giant hack which was previously removed because it causes
broken rendering. However, it seems that some devices still do not
support logical operations (looking at you, Adreno/Mali). Therefore, for
a handful of cases where the hack actually makes things slightly better,
we can use it.

... but not without spamming the log with warnings. With my warning
message PR, we can inform the users before emulation starts anyway.
This commit is contained in:
Stenzek
2019-08-02 19:20:36 +10:00
parent 4ccb4ef74f
commit f6f9dc0cac
3 changed files with 47 additions and 0 deletions

View File

@ -68,6 +68,10 @@ union BlendingState
{
void Generate(const BPMemory& bp);
// HACK: Replaces logical operations with blend operations.
// Will not be bit-correct, and in some cases not even remotely in the same ballpark.
void ApproximateLogicOpWithBlending();
BlendingState& operator=(const BlendingState& rhs);
bool operator==(const BlendingState& rhs) const { return hex == rhs.hex; }