@ -46,10 +46,8 @@ inline GLenum VertexType(Maxwell::VertexAttribute attrib) {
return GL_UNSIGNED_INT ;
case Maxwell : : VertexAttribute : : Size : : Size_10_10_10_2 :
return GL_UNSIGNED_INT_2_10_10_10_REV ;
default :
LOG_ERROR ( Render_OpenGL , " Unimplemented vertex size={} " , attrib . SizeString ( ) ) ;
return { } ;
}
break ;
case Maxwell : : VertexAttribute : : Type : : SignedInt :
case Maxwell : : VertexAttribute : : Type : : SignedNorm :
switch ( attrib . size ) {
@ -70,10 +68,8 @@ inline GLenum VertexType(Maxwell::VertexAttribute attrib) {
return GL_INT ;
case Maxwell : : VertexAttribute : : Size : : Size_10_10_10_2 :
return GL_INT_2_10_10_10_REV ;
default :
LOG_ERROR ( Render_OpenGL , " Unimplemented vertex size={} " , attrib . SizeString ( ) ) ;
return { } ;
}
break ;
case Maxwell : : VertexAttribute : : Type : : Float :
switch ( attrib . size ) {
case Maxwell : : VertexAttribute : : Size : : Size_16 :
@ -86,10 +82,8 @@ inline GLenum VertexType(Maxwell::VertexAttribute attrib) {
case Maxwell : : VertexAttribute : : Size : : Size_32_32_32 :
case Maxwell : : VertexAttribute : : Size : : Size_32_32_32_32 :
return GL_FLOAT ;
default :
LOG_ERROR ( Render_OpenGL , " Unimplemented vertex size={} " , attrib . SizeString ( ) ) ;
return { } ;
}
break ;
case Maxwell : : VertexAttribute : : Type : : UnsignedScaled :
switch ( attrib . size ) {
case Maxwell : : VertexAttribute : : Size : : Size_8 :
@ -102,10 +96,8 @@ inline GLenum VertexType(Maxwell::VertexAttribute attrib) {
case Maxwell : : VertexAttribute : : Size : : Size_16_16_16 :
case Maxwell : : VertexAttribute : : Size : : Size_16_16_16_16 :
return GL_UNSIGNED_SHORT ;
default :
LOG_ERROR ( Render_OpenGL , " Unimplemented vertex size={} " , attrib . SizeString ( ) ) ;
return { } ;
}
break ;
case Maxwell : : VertexAttribute : : Type : : SignedScaled :
switch ( attrib . size ) {
case Maxwell : : VertexAttribute : : Size : : Size_8 :
@ -118,14 +110,12 @@ inline GLenum VertexType(Maxwell::VertexAttribute attrib) {
case Maxwell : : VertexAttribute : : Size : : Size_16_16_16 :
case Maxwell : : VertexAttribute : : Size : : Size_16_16_16_16 :
return GL_SHORT ;
default :
LOG_ERROR ( Render_OpenGL , " Unimplemented vertex size={} " , attrib . SizeString ( ) ) ;
return { } ;
}
default :
LOG_ERROR ( Render_OpenGL , " Unimplemented vertex type={} " , attrib . TypeString ( ) ) ;
return { } ;
break ;
}
UNIMPLEMENTED_MSG ( " Unimplemented vertex type={} and size={} " , attrib . TypeString ( ) ,
attrib . SizeString ( ) ) ;
return { } ;
}
inline GLenum IndexFormat ( Maxwell : : IndexFormat index_format ) {
@ -137,8 +127,7 @@ inline GLenum IndexFormat(Maxwell::IndexFormat index_format) {
case Maxwell : : IndexFormat : : UnsignedInt :
return GL_UNSIGNED_INT ;
}
LOG_CRITICAL ( Render_OpenGL , " Unimplemented index_format={} " , static_cast < u32 > ( index_format ) ) ;
UNREACHABLE ( ) ;
UNREACHABLE_MSG ( " Invalid index_format={} " , static_cast < u32 > ( index_format ) ) ;
return { } ;
}
@ -180,10 +169,20 @@ inline GLenum PrimitiveTopology(Maxwell::PrimitiveTopology topology) {
}
inline GLenum TextureFilterMode ( Tegra : : Texture : : TextureFilter filter_mode ,
Tegra : : Texture : : TextureMipmapFilter mip _filter_mode) {
Tegra : : Texture : : TextureMipmapFilter mip map _filter_mode) {
switch ( filter_mode ) {
case Tegra : : Texture : : TextureFilter : : Linear : {
switch ( mip_filter_mode ) {
case Tegra : : Texture : : TextureFilter : : Nearest :
switch ( mipmap_filter_mode ) {
case Tegra : : Texture : : TextureMipmapFilter : : None :
return GL_NEAREST ;
case Tegra : : Texture : : TextureMipmapFilter : : Nearest :
return GL_NEAREST_MIPMAP_NEAREST ;
case Tegra : : Texture : : TextureMipmapFilter : : Linear :
return GL_NEAREST_MIPMAP_LINEAR ;
}
break ;
case Tegra : : Texture : : TextureFilter : : Linear :
switch ( mipmap_filter_mode ) {
case Tegra : : Texture : : TextureMipmapFilter : : None :
return GL_LINEAR ;
case Tegra : : Texture : : TextureMipmapFilter : : Nearest :
@ -193,20 +192,9 @@ inline GLenum TextureFilterMode(Tegra::Texture::TextureFilter filter_mode,
}
break ;
}
case Tegra : : Texture : : TextureFilter : : Nearest : {
switch ( mip_filter_mode ) {
case Tegra : : Texture : : TextureMipmapFilter : : None :
return GL_NEAREST ;
case Tegra : : Texture : : TextureMipmapFilter : : Nearest :
return GL_NEAREST_MIPMAP_NEAREST ;
case Tegra : : Texture : : TextureMipmapFilter : : Linear :
return GL_NEAREST_MIPMAP_LINEAR ;
}
break ;
}
}
LOG_ERROR ( Render_OpenGL , " Unimplemented texture filter mode={} " , static_cast < u32 > ( filter_mode ) ) ;
return GL_LINEAR ;
UNREACHABLE_MSG ( " Invalid texture filter mode={} and mipmap filter mode={} " ,
static_cast < u32 > ( filter_mode ) , static_cast < u32 > ( mipmap_filter_mode ) ) ;
return GL_NEAREST ;
}
inline GLenum WrapMode ( Tegra : : Texture : : WrapMode wrap_mode ) {
@ -229,10 +217,9 @@ inline GLenum WrapMode(Tegra::Texture::WrapMode wrap_mode) {
} else {
return GL_MIRROR_CLAMP_TO_EDGE ;
}
default :
LOG_ERROR ( Render_OpenGL , " Unimplemented texture wrap mode={} " , static_cast < u32 > ( wrap_mode ) ) ;
return GL_REPEAT ;
}
UNIMPLEMENTED_MSG ( " Unimplemented texture wrap mode={} " , static_cast < u32 > ( wrap_mode ) ) ;
return GL_REPEAT ;
}
inline GLenum DepthCompareFunc ( Tegra : : Texture : : DepthCompareFunc func ) {
@ -254,8 +241,7 @@ inline GLenum DepthCompareFunc(Tegra::Texture::DepthCompareFunc func) {
case Tegra : : Texture : : DepthCompareFunc : : Always :
return GL_ALWAYS ;
}
LOG_ERROR ( Render_OpenGL , " Unimplemented texture depth compare function ={} " ,
static_cast < u32 > ( func ) ) ;
UNIMPLEMENTED_MSG ( " Unimplemented texture depth compare function={} " , static_cast < u32 > ( func ) ) ;
return GL_GREATER ;
}
@ -277,7 +263,7 @@ inline GLenum BlendEquation(Maxwell::Blend::Equation equation) {
case Maxwell : : Blend : : Equation : : MaxGL :
return GL_MAX ;
}
LOG_ERROR( Render_OpenGL , " Unimplemented blend equation={} " , static_cast < u32 > ( equation ) ) ;
UNIMPLEMENTED_MSG( " Unimplemented blend equation={} " , static_cast < u32 > ( equation ) ) ;
return GL_FUNC_ADD ;
}
@ -341,7 +327,7 @@ inline GLenum BlendFunc(Maxwell::Blend::Factor factor) {
case Maxwell : : Blend : : Factor : : OneMinusConstantAlphaGL :
return GL_ONE_MINUS_CONSTANT_ALPHA ;
}
LOG_ERROR( Render_OpenGL , " Unimplemented blend factor={} " , static_cast < u32 > ( factor ) ) ;
UNIMPLEMENTED_MSG( " Unimplemented blend factor={} " , static_cast < u32 > ( factor ) ) ;
return GL_ZERO ;
}
@ -361,7 +347,7 @@ inline GLenum SwizzleSource(Tegra::Texture::SwizzleSource source) {
case Tegra : : Texture : : SwizzleSource : : OneFloat :
return GL_ONE ;
}
LOG_ERROR( Render_OpenGL , " Unimplemented swizzle source={} " , static_cast < u32 > ( source ) ) ;
UNIMPLEMENTED_MSG( " Unimplemented swizzle source={} " , static_cast < u32 > ( source ) ) ;
return GL_ZERO ;
}
@ -392,7 +378,7 @@ inline GLenum ComparisonOp(Maxwell::ComparisonOp comparison) {
case Maxwell : : ComparisonOp : : AlwaysOld :
return GL_ALWAYS ;
}
LOG_ERROR( Render_OpenGL , " Unimplemented comparison op={} " , static_cast < u32 > ( comparison ) ) ;
UNIMPLEMENTED_MSG( " Unimplemented comparison op={} " , static_cast < u32 > ( comparison ) ) ;
return GL_ALWAYS ;
}
@ -423,7 +409,7 @@ inline GLenum StencilOp(Maxwell::StencilOp stencil) {
case Maxwell : : StencilOp : : DecrWrapOGL :
return GL_DECR_WRAP ;
}
LOG_ERROR( Render_OpenGL , " Unimplemented stencil op={} " , static_cast < u32 > ( stencil ) ) ;
UNIMPLEMENTED_MSG( " Unimplemented stencil op={} " , static_cast < u32 > ( stencil ) ) ;
return GL_KEEP ;
}
@ -434,7 +420,7 @@ inline GLenum FrontFace(Maxwell::FrontFace front_face) {
case Maxwell : : FrontFace : : CounterClockWise :
return GL_CCW ;
}
LOG_ERROR( Render_OpenGL , " Unimplemented front face cull={} " , static_cast < u32 > ( front_face ) ) ;
UNIMPLEMENTED_MSG( " Unimplemented front face cull={} " , static_cast < u32 > ( front_face ) ) ;
return GL_CCW ;
}
@ -447,7 +433,7 @@ inline GLenum CullFace(Maxwell::CullFace cull_face) {
case Maxwell : : CullFace : : FrontAndBack :
return GL_FRONT_AND_BACK ;
}
LOG_ERROR( Render_OpenGL , " Unimplemented cull face={} " , static_cast < u32 > ( cull_face ) ) ;
UNIMPLEMENTED_MSG( " Unimplemented cull face={} " , static_cast < u32 > ( cull_face ) ) ;
return GL_BACK ;
}
@ -486,7 +472,7 @@ inline GLenum LogicOp(Maxwell::LogicOperation operation) {
case Maxwell : : LogicOperation : : Set :
return GL_SET ;
}
LOG_ERROR( Render_OpenGL , " Unimplemented logic operation={} " , static_cast < u32 > ( operation ) ) ;
UNIMPLEMENTED_MSG( " Unimplemented logic operation={} " , static_cast < u32 > ( operation ) ) ;
return GL_COPY ;
}