mirror of
https://github.com/MobileGL-Dev/MobileGL
synced 2026-09-12 06:08:30 +09:00
[Chore] (MG_Backend/DirectVulkan): hard assert instead of silently fallback
This commit is contained in:
@@ -480,8 +480,7 @@ namespace MobileGL::MG_Backend::DirectVulkan {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_framebufferManager &&
|
if (m_framebufferManager->Transition(commandBuffer,
|
||||||
m_framebufferManager->Transition(commandBuffer,
|
|
||||||
VkFramebufferManager::TransitionResource::OffscreenColorTexture,
|
VkFramebufferManager::TransitionResource::OffscreenColorTexture,
|
||||||
VkFramebufferManager::TransitionUsage::ShaderRead,
|
VkFramebufferManager::TransitionUsage::ShaderRead,
|
||||||
texture->GetExternalIndex())) {
|
texture->GetExternalIndex())) {
|
||||||
|
|||||||
@@ -90,9 +90,7 @@ namespace MobileGL::MG_Backend::DirectVulkan {
|
|||||||
Bool VkTextureSamplerManager::SyncTextureAndGetDescriptor(const MG_State::GLState::ITextureObject& texture,
|
Bool VkTextureSamplerManager::SyncTextureAndGetDescriptor(const MG_State::GLState::ITextureObject& texture,
|
||||||
const MG_State::GLState::SamplerObject* samplerOverride,
|
const MG_State::GLState::SamplerObject* samplerOverride,
|
||||||
VkDescriptorImageInfo& outImageInfo) {
|
VkDescriptorImageInfo& outImageInfo) {
|
||||||
if (m_device == VK_NULL_HANDLE) {
|
MOBILEGL_ASSERT(m_device != VK_NULL_HANDLE, "SyncTextureAndGetDescriptor: m_device == VK_NULL_HANDLE");
|
||||||
return GetFallbackDescriptor(outImageInfo);
|
|
||||||
}
|
|
||||||
|
|
||||||
auto it = m_textureResources.find(texture.GetExternalIndex());
|
auto it = m_textureResources.find(texture.GetExternalIndex());
|
||||||
if (it == m_textureResources.end()) {
|
if (it == m_textureResources.end()) {
|
||||||
|
|||||||
@@ -160,30 +160,29 @@ namespace MobileGL::MG_Backend::DirectVulkan {
|
|||||||
payload.renderPass = (m_activeRenderPass != VK_NULL_HANDLE) ? m_activeRenderPass : GetDefaultLoadRenderPass();
|
payload.renderPass = (m_activeRenderPass != VK_NULL_HANDLE) ? m_activeRenderPass : GetDefaultLoadRenderPass();
|
||||||
payload.subpass = 0;
|
payload.subpass = 0;
|
||||||
payload.topology = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST;
|
payload.topology = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST;
|
||||||
if (MG_State::pGLContext != nullptr) {
|
const Bool depthTestEnabled = MG_State::pGLContext->IsCapabilityEnabled(CapabilityInput::DepthTest);
|
||||||
const Bool depthTestEnabled = MG_State::pGLContext->IsCapabilityEnabled(CapabilityInput::DepthTest);
|
payload.depthTestEnable = depthTestEnabled;
|
||||||
payload.depthTestEnable = depthTestEnabled;
|
payload.depthWriteEnable = depthTestEnabled && MG_State::pGLContext->GetDepthMask();
|
||||||
payload.depthWriteEnable = depthTestEnabled && MG_State::pGLContext->GetDepthMask();
|
payload.depthCompareOp = toVkCompareOp(MG_State::pGLContext->GetDepthFunc());
|
||||||
payload.depthCompareOp = toVkCompareOp(MG_State::pGLContext->GetDepthFunc());
|
|
||||||
|
|
||||||
payload.blendEnable = MG_State::pGLContext->IsCapabilityEnabled(CapabilityInput::Blend);
|
payload.blendEnable = MG_State::pGLContext->IsCapabilityEnabled(CapabilityInput::Blend);
|
||||||
BlendFactor srcRGB = BlendFactor::One;
|
BlendFactor srcRGB = BlendFactor::One;
|
||||||
BlendFactor dstRGB = BlendFactor::Zero;
|
BlendFactor dstRGB = BlendFactor::Zero;
|
||||||
BlendFactor srcAlpha = BlendFactor::One;
|
BlendFactor srcAlpha = BlendFactor::One;
|
||||||
BlendFactor dstAlpha = BlendFactor::Zero;
|
BlendFactor dstAlpha = BlendFactor::Zero;
|
||||||
MG_State::pGLContext->GetBlendFunc(srcRGB, dstRGB, srcAlpha, dstAlpha);
|
MG_State::pGLContext->GetBlendFunc(srcRGB, dstRGB, srcAlpha, dstAlpha);
|
||||||
payload.srcColorBlendFactor = toVkBlendFactor(srcRGB);
|
payload.srcColorBlendFactor = toVkBlendFactor(srcRGB);
|
||||||
payload.dstColorBlendFactor = toVkBlendFactor(dstRGB);
|
payload.dstColorBlendFactor = toVkBlendFactor(dstRGB);
|
||||||
payload.srcAlphaBlendFactor = toVkBlendFactor(srcAlpha);
|
payload.srcAlphaBlendFactor = toVkBlendFactor(srcAlpha);
|
||||||
payload.dstAlphaBlendFactor = toVkBlendFactor(dstAlpha);
|
payload.dstAlphaBlendFactor = toVkBlendFactor(dstAlpha);
|
||||||
|
|
||||||
|
payload.colorWriteMask = 0;
|
||||||
|
const BoolVec4 colorMask = MG_State::pGLContext->GetColorMask();
|
||||||
|
if (colorMask.x()) payload.colorWriteMask |= VK_COLOR_COMPONENT_R_BIT;
|
||||||
|
if (colorMask.y()) payload.colorWriteMask |= VK_COLOR_COMPONENT_G_BIT;
|
||||||
|
if (colorMask.z()) payload.colorWriteMask |= VK_COLOR_COMPONENT_B_BIT;
|
||||||
|
if (colorMask.w()) payload.colorWriteMask |= VK_COLOR_COMPONENT_A_BIT;
|
||||||
|
|
||||||
payload.colorWriteMask = 0;
|
|
||||||
const BoolVec4 colorMask = MG_State::pGLContext->GetColorMask();
|
|
||||||
if (colorMask.x()) payload.colorWriteMask |= VK_COLOR_COMPONENT_R_BIT;
|
|
||||||
if (colorMask.y()) payload.colorWriteMask |= VK_COLOR_COMPONENT_G_BIT;
|
|
||||||
if (colorMask.z()) payload.colorWriteMask |= VK_COLOR_COMPONENT_B_BIT;
|
|
||||||
if (colorMask.w()) payload.colorWriteMask |= VK_COLOR_COMPONENT_A_BIT;
|
|
||||||
}
|
|
||||||
payload.stages = &stages;
|
payload.stages = &stages;
|
||||||
payload.vertexInputState = &vertexInputState;
|
payload.vertexInputState = &vertexInputState;
|
||||||
return m_pipelineFactory->GetOrCreatePipeline(payload);
|
return m_pipelineFactory->GetOrCreatePipeline(payload);
|
||||||
|
|||||||
Reference in New Issue
Block a user