Commit 28d5a26e by Nicolas Capens

Work around unsuppressable GCC error.

GCC warns against bitfields not fitting the entire range of an enum with a fixed underlying type of unsigned int, which gets promoted to an error with -Werror and cannot be suppressed. However, GCC already defaults to using unsigned int as the underlying type of an unscoped enum without a fixed underlying type. So we can just omit it. Bug chromium:697528 Change-Id: I8db8fef09e3397d4ec5ebe9f7c3c5e4ae9c0edff Reviewed-on: https://swiftshader-review.googlesource.com/8928Reviewed-by: 's avatarAlexis Hétu <sugoi@google.com> Reviewed-by: 's avatarNicolas Capens <capn@google.com> Tested-by: 's avatarNicolas Capens <capn@google.com>
parent 17982c4a
......@@ -15,6 +15,18 @@
#ifndef sw_Types_hpp
#define sw_Types_hpp
#include <limits>
#include <type_traits>
// GCC warns against bitfields not fitting the entire range of an enum with a fixed underlying type of unsigned int, which gets promoted to an error with -Werror and cannot be suppressed.
// However, GCC already defaults to using unsigned int as the underlying type of an unscoped enum without a fixed underlying type. So we can just omit it.
#if defined(__GNUC__) && !defined(__clang__)
namespace {enum E {}; static_assert(!std::numeric_limits<std::underlying_type<E>::type>::is_signed, "expected unscoped enum whose underlying type is not fixed to be unsigned");}
#define ENUM_UNDERLYING_TYPE_UNSIGNED_INT
#else
#define ENUM_UNDERLYING_TYPE_UNSIGNED_INT : unsigned int
#endif
#if defined(_MSC_VER)
typedef signed __int8 int8_t;
typedef signed __int16 int16_t;
......
......@@ -20,6 +20,7 @@
#include "Stream.hpp"
#include "Point.hpp"
#include "Vertex.hpp"
#include "Common/Types.hpp"
namespace sw
{
......@@ -52,7 +53,7 @@ namespace sw
PositionT = 15
};
enum DrawType : unsigned int
enum DrawType ENUM_UNDERLYING_TYPE_UNSIGNED_INT
{
// These types must stay ordered by vertices per primitive. Also, if these basic types
// are modified, verify the value assigned to task->verticesPerPrimitive in Renderer.cpp
......@@ -97,7 +98,7 @@ namespace sw
DRAW_LAST = DRAW_INDEXEDTRIANGLEFAN32
};
enum FillMode : unsigned int
enum FillMode ENUM_UNDERLYING_TYPE_UNSIGNED_INT
{
FILL_SOLID,
FILL_WIREFRAME,
......@@ -106,7 +107,7 @@ namespace sw
FILL_LAST = FILL_VERTEX
};
enum ShadingMode : unsigned int
enum ShadingMode ENUM_UNDERLYING_TYPE_UNSIGNED_INT
{
SHADING_FLAT,
SHADING_GOURAUD,
......@@ -114,7 +115,7 @@ namespace sw
SHADING_LAST = SHADING_GOURAUD
};
enum DepthCompareMode : unsigned int
enum DepthCompareMode ENUM_UNDERLYING_TYPE_UNSIGNED_INT
{
DEPTH_ALWAYS,
DEPTH_NEVER,
......@@ -128,7 +129,7 @@ namespace sw
DEPTH_LAST = DEPTH_GREATEREQUAL
};
enum StencilCompareMode : unsigned int
enum StencilCompareMode ENUM_UNDERLYING_TYPE_UNSIGNED_INT
{
STENCIL_ALWAYS,
STENCIL_NEVER,
......@@ -142,7 +143,7 @@ namespace sw
STENCIL_LAST = STENCIL_GREATEREQUAL
};
enum StencilOperation : unsigned int
enum StencilOperation ENUM_UNDERLYING_TYPE_UNSIGNED_INT
{
OPERATION_KEEP,
OPERATION_ZERO,
......@@ -156,7 +157,7 @@ namespace sw
OPERATION_LAST = OPERATION_DECR
};
enum AlphaCompareMode : unsigned int
enum AlphaCompareMode ENUM_UNDERLYING_TYPE_UNSIGNED_INT
{
ALPHA_ALWAYS,
ALPHA_NEVER,
......@@ -170,7 +171,7 @@ namespace sw
ALPHA_LAST = ALPHA_GREATEREQUAL
};
enum CullMode : unsigned int
enum CullMode ENUM_UNDERLYING_TYPE_UNSIGNED_INT
{
CULL_NONE,
CULL_CLOCKWISE,
......@@ -179,7 +180,7 @@ namespace sw
CULL_LAST = CULL_COUNTERCLOCKWISE
};
enum BlendFactor : unsigned int
enum BlendFactor ENUM_UNDERLYING_TYPE_UNSIGNED_INT
{
BLEND_ZERO,
BLEND_ONE,
......@@ -200,7 +201,7 @@ namespace sw
BLEND_LAST = BLEND_INVCONSTANT
};
enum BlendOperation : unsigned int
enum BlendOperation ENUM_UNDERLYING_TYPE_UNSIGNED_INT
{
BLENDOP_ADD,
BLENDOP_SUB,
......@@ -215,7 +216,7 @@ namespace sw
BLENDOP_LAST = BLENDOP_NULL
};
enum LogicalOperation : unsigned int
enum LogicalOperation ENUM_UNDERLYING_TYPE_UNSIGNED_INT
{
LOGICALOP_CLEAR,
LOGICALOP_SET,
......@@ -237,7 +238,7 @@ namespace sw
LOGICALOP_LAST = LOGICALOP_OR_INVERTED
};
enum MaterialSource : unsigned int
enum MaterialSource ENUM_UNDERLYING_TYPE_UNSIGNED_INT
{
MATERIAL_MATERIAL,
MATERIAL_COLOR1,
......@@ -246,7 +247,7 @@ namespace sw
MATERIAL_LAST = MATERIAL_COLOR2
};
enum FogMode : unsigned int
enum FogMode ENUM_UNDERLYING_TYPE_UNSIGNED_INT
{
FOG_NONE,
FOG_LINEAR,
......@@ -256,7 +257,7 @@ namespace sw
FOG_LAST = FOG_EXP2
};
enum TexGen : unsigned int
enum TexGen ENUM_UNDERLYING_TYPE_UNSIGNED_INT
{
TEXGEN_PASSTHRU,
TEXGEN_NORMAL,
......@@ -268,7 +269,7 @@ namespace sw
TEXGEN_LAST = TEXGEN_NONE
};
enum TransparencyAntialiasing : unsigned int
enum TransparencyAntialiasing ENUM_UNDERLYING_TYPE_UNSIGNED_INT
{
TRANSPARENCY_NONE,
TRANSPARENCY_ALPHA_TO_COVERAGE,
......
......@@ -17,6 +17,7 @@
#include "Main/Config.hpp"
#include "Renderer/Surface.hpp"
#include "Common/Types.hpp"
namespace sw
{
......@@ -63,7 +64,7 @@ namespace sw
SAMPLER_VERTEX
};
enum TextureType : unsigned int
enum TextureType ENUM_UNDERLYING_TYPE_UNSIGNED_INT
{
TEXTURE_NULL,
TEXTURE_2D,
......@@ -74,7 +75,7 @@ namespace sw
TEXTURE_LAST = TEXTURE_2D_ARRAY
};
enum FilterType : unsigned int
enum FilterType ENUM_UNDERLYING_TYPE_UNSIGNED_INT
{
FILTER_POINT,
FILTER_GATHER,
......@@ -86,7 +87,7 @@ namespace sw
FILTER_LAST = FILTER_ANISOTROPIC
};
enum MipmapType : unsigned int
enum MipmapType ENUM_UNDERLYING_TYPE_UNSIGNED_INT
{
MIPMAP_NONE,
MIPMAP_POINT,
......@@ -95,7 +96,7 @@ namespace sw
MIPMAP_LAST = MIPMAP_LINEAR
};
enum AddressingMode : unsigned int
enum AddressingMode ENUM_UNDERLYING_TYPE_UNSIGNED_INT
{
ADDRESSING_WRAP,
ADDRESSING_CLAMP,
......@@ -108,7 +109,7 @@ namespace sw
ADDRESSING_LAST = ADDRESSING_TEXELFETCH
};
enum SwizzleType : unsigned int
enum SwizzleType ENUM_UNDERLYING_TYPE_UNSIGNED_INT
{
SWIZZLE_RED,
SWIZZLE_GREEN,
......
......@@ -21,7 +21,7 @@ namespace sw
{
class Resource;
enum StreamType : unsigned int
enum StreamType ENUM_UNDERLYING_TYPE_UNSIGNED_INT
{
STREAMTYPE_COLOR, // 4 normalized unsigned bytes, ZYXW order
STREAMTYPE_UDEC3, // 3 unsigned 10-bit fields
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment