Don't cast -1 to enum to represent a missing value.

This is undefined behavior in C++, and a clang warning suggests it is
actually producing bad code as a result:

../Source/Core/VideoCommon/BPFunctions.cpp:164:45: warning: comparison of constant 4294967295 with expression of type 'PEControl::PixelFormat' is always false [-Wtautological-constant-out-of-range-compare]
        if (new_format == old_format || old_format == (unsigned int)-1)
This commit is contained in:
comex 2014-03-27 23:52:27 -04:00
parent 9b8296d5ab
commit b5654a2464
3 changed files with 12 additions and 11 deletions

View File

@ -161,7 +161,7 @@ void OnPixelFormatChange()
auto new_format = bpmem.zcontrol.pixel_format; auto new_format = bpmem.zcontrol.pixel_format;
// no need to reinterpret pixel data in these cases // no need to reinterpret pixel data in these cases
if (new_format == old_format || old_format == (unsigned int)-1) if (new_format == old_format || old_format == PEControl::INVALID_FMT)
goto skip; goto skip;
// Check for pixel format changes // Check for pixel format changes

View File

@ -779,14 +779,15 @@ union PEControl
{ {
enum PixelFormat : u32 enum PixelFormat : u32
{ {
RGB8_Z24 = 0, RGB8_Z24 = 0,
RGBA6_Z24 = 1, RGBA6_Z24 = 1,
RGB565_Z16 = 2, RGB565_Z16 = 2,
Z24 = 3, Z24 = 3,
Y8 = 4, Y8 = 4,
U8 = 5, U8 = 5,
V8 = 6, V8 = 6,
YUV420 = 7 YUV420 = 7,
INVALID_FMT = 0xffffffff, // Used by Dolphin to represent a missing value.
}; };
enum DepthFormat : u32 enum DepthFormat : u32

View File

@ -64,7 +64,7 @@ int Renderer::s_LastEFBScale;
bool Renderer::s_skipSwap; bool Renderer::s_skipSwap;
bool Renderer::XFBWrited; bool Renderer::XFBWrited;
PEControl::PixelFormat Renderer::prev_efb_format = (PEControl::PixelFormat)-1; PEControl::PixelFormat Renderer::prev_efb_format = PEControl::INVALID_FMT;
unsigned int Renderer::efb_scale_numeratorX = 1; unsigned int Renderer::efb_scale_numeratorX = 1;
unsigned int Renderer::efb_scale_numeratorY = 1; unsigned int Renderer::efb_scale_numeratorY = 1;
unsigned int Renderer::efb_scale_denominatorX = 1; unsigned int Renderer::efb_scale_denominatorX = 1;
@ -89,7 +89,7 @@ Renderer::Renderer()
Renderer::~Renderer() Renderer::~Renderer()
{ {
// invalidate previous efb format // invalidate previous efb format
prev_efb_format = (PEControl::PixelFormat)-1; prev_efb_format = PEControl::INVALID_FMT;
efb_scale_numeratorX = efb_scale_numeratorY = efb_scale_denominatorX = efb_scale_denominatorY = 1; efb_scale_numeratorX = efb_scale_numeratorY = efb_scale_denominatorX = efb_scale_denominatorY = 1;