GLES - fix some sanitizer warnings

These are benign but worth fixing as it clears the log to find more important errors.

A common problem with the sanitizer is that enums are often used to represent bits (e.g. 1, 2, 4, 8 etc) but without specifying the enum type, the compiler is free to use unsigned or signed int. In this case it uses int, and when it performs bitwise operations on the int type, the sanitizer complains.

This is probably because a bitshift with negative signed value can give undefined behaviour - the sanitizer can't know ahead of time that you are using the enum for sensible bitflags.
This commit is contained in:
lawnjelly 2021-02-18 12:39:13 +00:00
parent 4384605cb1
commit e7d1735bff
3 changed files with 5 additions and 4 deletions

View file

@ -1288,7 +1288,8 @@ PREAMBLE(bool)::_prefill_line(RasterizerCanvas::Item::CommandLine *p_line, FillS
r_fill_state.curr_batch->type = line_batch_type; r_fill_state.curr_batch->type = line_batch_type;
r_fill_state.curr_batch->color = bcol; r_fill_state.curr_batch->color = bcol;
r_fill_state.curr_batch->batch_texture_id = -1; // cast is to stop sanitizer benign warning .. watch though in case destination type changes
r_fill_state.curr_batch->batch_texture_id = (uint16_t)-1;
r_fill_state.curr_batch->first_command = command_num; r_fill_state.curr_batch->first_command = command_num;
r_fill_state.curr_batch->num_commands = 1; r_fill_state.curr_batch->num_commands = 1;
//r_fill_state.curr_batch->first_quad = bdata.total_quads; //r_fill_state.curr_batch->first_quad = bdata.total_quads;

View file

@ -45,7 +45,7 @@ public:
// these flags are specifically for batching // these flags are specifically for batching
// some of the logic is thus in rasterizer_storage.cpp // some of the logic is thus in rasterizer_storage.cpp
// we could alternatively set bitflags for each 'uses' and test on the fly // we could alternatively set bitflags for each 'uses' and test on the fly
enum BatchFlags { enum BatchFlags : uint32_t {
PREVENT_COLOR_BAKING = 1 << 0, PREVENT_COLOR_BAKING = 1 << 0,
PREVENT_VERTEX_BAKING = 1 << 1, PREVENT_VERTEX_BAKING = 1 << 1,
@ -65,7 +65,7 @@ public:
BT_DUMMY = 5, // dummy batch is just used to keep the batch creation loop simple BT_DUMMY = 5, // dummy batch is just used to keep the batch creation loop simple
}; };
enum BatchTypeFlags { enum BatchTypeFlags : uint32_t {
BTF_DEFAULT = 1 << BT_DEFAULT, BTF_DEFAULT = 1 << BT_DEFAULT,
BTF_RECT = 1 << BT_RECT, BTF_RECT = 1 << BT_RECT,
BTF_LINE = 1 << BT_LINE, BTF_LINE = 1 << BT_LINE,

View file

@ -81,7 +81,7 @@ public:
/* TEXTURE API */ /* TEXTURE API */
enum TextureFlags { enum TextureFlags : unsigned int { // unsigned to stop sanitizer complaining about bit operations on ints
TEXTURE_FLAG_MIPMAPS = 1, /// Enable automatic mipmap generation - when available TEXTURE_FLAG_MIPMAPS = 1, /// Enable automatic mipmap generation - when available
TEXTURE_FLAG_REPEAT = 2, /// Repeat texture (Tiling), otherwise Clamping TEXTURE_FLAG_REPEAT = 2, /// Repeat texture (Tiling), otherwise Clamping
TEXTURE_FLAG_FILTER = 4, /// Create texture with linear (or available) filter TEXTURE_FLAG_FILTER = 4, /// Create texture with linear (or available) filter