Merge pull request #830 from v3n/master
Fixed implicit cast errors in Metal when strictly compiling C++
This commit is contained in:
commit
60b8c081c9
@ -29,23 +29,23 @@
|
||||
packFloatToRGBA needs highp. currently it uses half.
|
||||
24-nbody: no generated compute shaders for metal
|
||||
27-terrain: shaderc generates invalid metal shader for vs_terrain_height_texture. vertex output: half4 gl_Position [[position]], should be float4
|
||||
|
||||
|
||||
Known issues(driver problems??):
|
||||
OSX mac mini(late 2014), OSX10.11.3 : nanovg-rendering: color writemask off causes problem...
|
||||
iPad mini 2, iOS 8.1.1: 21-deferred: scissor not working properly
|
||||
26-occlusion: doesn't work with two rendercommandencoders, merge should fix this
|
||||
|
||||
|
||||
TODOs:
|
||||
07-callback, saveScreenshot should be implemented with one frame latency (using saveScreenshotBegin and End)
|
||||
- iOS device orientation change is not handled properly
|
||||
|
||||
|
||||
22-windows: todo support multiple windows
|
||||
|
||||
|
||||
- optimization: remove heavy sync, merge views with same fb and no clear.
|
||||
13-stencil and 16-shadowmaps are very inefficient. every view stores/loads backbuffer data
|
||||
|
||||
|
||||
- 15-shadowmaps-simple (example needs modification mtxCrop znew = z * 0.5 + 0.5 is not needed ) could be hacked in shader too
|
||||
|
||||
|
||||
BGFX_RESET_FLIP_AFTER_RENDER on low level renderers should be true? (crashes even with BGFX_RESET_FLIP_AFTER_RENDER because there is
|
||||
one rendering frame before reset). Do I have absolutely need to send result to View at flip or can I do it in submit?
|
||||
*/
|
||||
@ -243,7 +243,7 @@ namespace bgfx { namespace mtl
|
||||
MTLPixelFormat m_fmt;
|
||||
MTLPixelFormat m_fmtSrgb;
|
||||
};
|
||||
|
||||
|
||||
static TextureFormatInfo s_textureFormat[] =
|
||||
{
|
||||
{ MTLPixelFormat(130) /*BC1_RGBA*/, MTLPixelFormat(131) /*BC1_RGBA_sRGB*/ }, // BC1
|
||||
@ -411,7 +411,7 @@ namespace bgfx { namespace mtl
|
||||
}
|
||||
m_uniformBufferVertexOffset = 0;
|
||||
m_uniformBufferFragmentOffset = 0;
|
||||
|
||||
|
||||
g_caps.supported |= (0
|
||||
| BGFX_CAPS_TEXTURE_COMPARE_LEQUAL //NOTE: on IOS Gpu Family 1/2 have to set compare in shader
|
||||
| BGFX_CAPS_TEXTURE_COMPARE_ALL
|
||||
@ -434,27 +434,27 @@ namespace bgfx { namespace mtl
|
||||
{
|
||||
if ( iOSVersionEqualOrGreater("9.0.0") )
|
||||
{
|
||||
g_caps.maxTextureSize = m_device.supportsFeatureSet(4 /* iOS_GPUFamily3_v1 */) ? 16384 : 8192;
|
||||
g_caps.maxTextureSize = m_device.supportsFeatureSet((MTLFeatureSet)4 /* iOS_GPUFamily3_v1 */) ? 16384 : 8192;
|
||||
}
|
||||
else
|
||||
{
|
||||
g_caps.maxTextureSize = 4096;
|
||||
}
|
||||
g_caps.maxFBAttachments = uint8_t(bx::uint32_min(m_device.supportsFeatureSet(1 /* MTLFeatureSet_iOS_GPUFamily2_v1 */) ? 8 : 4, BGFX_CONFIG_MAX_FRAME_BUFFER_ATTACHMENTS));
|
||||
|
||||
g_caps.maxFBAttachments = uint8_t(bx::uint32_min(m_device.supportsFeatureSet((MTLFeatureSet)1 /* MTLFeatureSet_iOS_GPUFamily2_v1 */) ? 8 : 4, BGFX_CONFIG_MAX_FRAME_BUFFER_ATTACHMENTS));
|
||||
|
||||
} else if (BX_ENABLED(BX_PLATFORM_OSX) )
|
||||
{
|
||||
g_caps.maxTextureSize = 16384;
|
||||
g_caps.maxFBAttachments = 8;
|
||||
}
|
||||
|
||||
|
||||
//todo: vendor id, device id, gpu enum
|
||||
|
||||
m_hasPixelFormatDepth32Float_Stencil8 = (BX_ENABLED(BX_PLATFORM_OSX) ||
|
||||
( BX_ENABLED(BX_PLATFORM_IOS) && iOSVersionEqualOrGreater("9.0.0") ) );
|
||||
m_macOS11Runtime = (BX_ENABLED(BX_PLATFORM_OSX) && macOSVersionEqualOrGreater(10,11,0) );
|
||||
m_iOS9Runtime = (BX_ENABLED(BX_PLATFORM_IOS) && iOSVersionEqualOrGreater("9.0.0") );
|
||||
|
||||
|
||||
if (BX_ENABLED(BX_PLATFORM_OSX) )
|
||||
{
|
||||
s_textureFormat[TextureFormat::R8].m_fmtSrgb = MTLPixelFormatInvalid;
|
||||
@ -486,7 +486,7 @@ namespace bgfx { namespace mtl
|
||||
support |= BGFX_CAPS_FORMAT_TEXTURE_FRAMEBUFFER
|
||||
| BGFX_CAPS_FORMAT_TEXTURE_FRAMEBUFFER_MSAA;
|
||||
}
|
||||
|
||||
|
||||
//TODO: additional caps flags
|
||||
// support |= BGFX_CAPS_FORMAT_TEXTURE_IMAGE : BGFX_CAPS_FORMAT_TEXTURE_NONE;
|
||||
|
||||
@ -498,7 +498,7 @@ namespace bgfx { namespace mtl
|
||||
g_caps.formats[TextureFormat::RG32U] &= ~(BGFX_CAPS_FORMAT_TEXTURE_FRAMEBUFFER_MSAA);
|
||||
g_caps.formats[TextureFormat::RGBA32I] &= ~(BGFX_CAPS_FORMAT_TEXTURE_FRAMEBUFFER_MSAA);
|
||||
g_caps.formats[TextureFormat::RGBA32U] &= ~(BGFX_CAPS_FORMAT_TEXTURE_FRAMEBUFFER_MSAA);
|
||||
|
||||
|
||||
|
||||
if (BX_ENABLED(BX_PLATFORM_IOS) )
|
||||
{
|
||||
@ -511,17 +511,17 @@ namespace bgfx { namespace mtl
|
||||
g_caps.formats[TextureFormat::BC5] =
|
||||
g_caps.formats[TextureFormat::BC6H] =
|
||||
g_caps.formats[TextureFormat::BC7] = BGFX_CAPS_FORMAT_TEXTURE_NONE;
|
||||
|
||||
|
||||
g_caps.formats[TextureFormat::RG32F] &= ~(BGFX_CAPS_FORMAT_TEXTURE_FRAMEBUFFER_MSAA);
|
||||
g_caps.formats[TextureFormat::RGBA32F] &= ~(BGFX_CAPS_FORMAT_TEXTURE_FRAMEBUFFER_MSAA);
|
||||
}
|
||||
|
||||
|
||||
if (BX_ENABLED(BX_PLATFORM_OSX) )
|
||||
{
|
||||
s_textureFormat[TextureFormat::D24S8].m_fmt = m_device.depth24Stencil8PixelFormatSupported() ?
|
||||
s_textureFormat[TextureFormat::D24S8].m_fmt = (MTLPixelFormat)(m_device.depth24Stencil8PixelFormatSupported() ?
|
||||
255 /* Depth24Unorm_Stencil8 */ :
|
||||
MTLPixelFormatDepth32Float_Stencil8;
|
||||
|
||||
MTLPixelFormatDepth32Float_Stencil8);
|
||||
|
||||
g_caps.formats[TextureFormat::ETC2 ] =
|
||||
g_caps.formats[TextureFormat::ETC2A ] =
|
||||
g_caps.formats[TextureFormat::ETC2A1] =
|
||||
@ -1023,8 +1023,8 @@ namespace bgfx { namespace mtl
|
||||
release(m_backBufferDepth);
|
||||
}
|
||||
m_backBufferDepth = m_device.newTextureWithDescriptor(m_textureDescriptor);
|
||||
|
||||
|
||||
|
||||
|
||||
if (m_hasPixelFormatDepth32Float_Stencil8)
|
||||
m_backBufferStencil = m_backBufferDepth;
|
||||
else
|
||||
@ -1610,7 +1610,7 @@ namespace bgfx { namespace mtl
|
||||
{
|
||||
RenderPipelineDescriptor& pd = s_renderMtl->m_renderPipelineDescriptor;
|
||||
reset(pd);
|
||||
|
||||
|
||||
pd.alphaToCoverageEnabled = !!(BGFX_STATE_BLEND_ALPHA_TO_COVERAGE & _state);
|
||||
|
||||
uint32_t frameBufferAttachment = 1;
|
||||
@ -1640,9 +1640,9 @@ namespace bgfx { namespace mtl
|
||||
{
|
||||
pd.stencilAttachmentPixelFormat = MTLPixelFormatInvalid; //texture.m_ptrStencil.m_obj.pixelFormat;
|
||||
}
|
||||
|
||||
|
||||
if ( texture.m_textureFormat == TextureFormat::D24S8)
|
||||
pd.stencilAttachmentPixelFormat = texture.m_ptr.m_obj.pixelFormat;
|
||||
pd.stencilAttachmentPixelFormat = texture.m_ptr.m_obj.pixelFormat;
|
||||
}
|
||||
}
|
||||
|
||||
@ -2004,12 +2004,12 @@ namespace bgfx { namespace mtl
|
||||
if (s_renderMtl->m_iOS9Runtime || s_renderMtl->m_macOS11Runtime)
|
||||
{
|
||||
desc.cpuCacheMode = MTLCPUCacheModeDefaultCache;
|
||||
|
||||
|
||||
desc.storageMode = (MTLStorageMode)(writeOnly||isDepth(TextureFormat::Enum(m_textureFormat))
|
||||
? 2 /*MTLStorageModePrivate*/
|
||||
: 1 /*MTLStorageModeManaged*/
|
||||
);
|
||||
|
||||
|
||||
desc.usage = MTLTextureUsageShaderRead;
|
||||
if (computeWrite)
|
||||
desc.usage |= MTLTextureUsageShaderWrite;
|
||||
@ -2152,7 +2152,7 @@ namespace bgfx { namespace mtl
|
||||
s_renderMtl->m_renderCommandEncoder.setVertexSamplerState(0 == (BGFX_TEXTURE_INTERNAL_DEFAULT_SAMPLER & _flags)
|
||||
? s_renderMtl->getSamplerState(_flags)
|
||||
: m_sampler, _stage);
|
||||
|
||||
|
||||
s_renderMtl->m_renderCommandEncoder.setFragmentTexture(m_ptr, _stage);
|
||||
s_renderMtl->m_renderCommandEncoder.setFragmentSamplerState(0 == (BGFX_TEXTURE_INTERNAL_DEFAULT_SAMPLER & _flags)
|
||||
? s_renderMtl->getSamplerState(_flags)
|
||||
@ -2438,7 +2438,7 @@ namespace bgfx { namespace mtl
|
||||
for(uint32_t ii = 0; ii < g_caps.maxFBAttachments; ++ii)
|
||||
{
|
||||
MTLRenderPassColorAttachmentDescriptor* desc = renderPassDescriptor.colorAttachments[ii];
|
||||
|
||||
|
||||
if ( desc.texture != NULL)
|
||||
{
|
||||
if (0 != (BGFX_CLEAR_COLOR & clr.m_flags) )
|
||||
@ -2461,7 +2461,7 @@ namespace bgfx { namespace mtl
|
||||
float aa = clr.m_index[3]*1.0f/255.0f;
|
||||
desc.clearColor = MTLClearColorMake(rr, gg, bb, aa);
|
||||
}
|
||||
|
||||
|
||||
desc.loadAction = MTLLoadActionClear;
|
||||
}
|
||||
else
|
||||
@ -2470,7 +2470,7 @@ namespace bgfx { namespace mtl
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//TODO: optimize store actions use discard flag
|
||||
RenderPassDepthAttachmentDescriptor depthAttachment = renderPassDescriptor.depthAttachment;
|
||||
if (NULL != depthAttachment.texture)
|
||||
@ -2482,7 +2482,7 @@ namespace bgfx { namespace mtl
|
||||
;
|
||||
depthAttachment.storeAction = MTLStoreActionStore;
|
||||
}
|
||||
|
||||
|
||||
RenderPassStencilAttachmentDescriptor stencilAttachment = renderPassDescriptor.stencilAttachment;
|
||||
if (NULL != stencilAttachment.texture)
|
||||
{
|
||||
@ -2502,7 +2502,7 @@ namespace bgfx { namespace mtl
|
||||
if ( desc.texture != NULL)
|
||||
desc.loadAction = MTLLoadActionLoad;
|
||||
}
|
||||
|
||||
|
||||
//TODO: optimize store actions use discard flag
|
||||
RenderPassDepthAttachmentDescriptor depthAttachment = renderPassDescriptor.depthAttachment;
|
||||
if (NULL != depthAttachment.texture)
|
||||
@ -2510,7 +2510,7 @@ namespace bgfx { namespace mtl
|
||||
depthAttachment.loadAction = MTLLoadActionLoad;
|
||||
depthAttachment.storeAction = MTLStoreActionStore;
|
||||
}
|
||||
|
||||
|
||||
RenderPassStencilAttachmentDescriptor stencilAttachment = renderPassDescriptor.stencilAttachment;
|
||||
if (NULL != stencilAttachment.texture)
|
||||
{
|
||||
@ -2639,7 +2639,7 @@ namespace bgfx { namespace mtl
|
||||
rc.y = scissorRect.m_y;
|
||||
rc.width = scissorRect.m_width;
|
||||
rc.height = scissorRect.m_height;
|
||||
|
||||
|
||||
if ( rc.width == 0 || rc.height == 0 )
|
||||
continue;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user