mirror of https://github.com/AxioDL/boo.git
Ensure previous pipeline state is rebound on metal after copying render texture
This commit is contained in:
parent
2135f4e4dc
commit
3e1da36f39
|
@ -1189,13 +1189,17 @@ struct MetalCommandQueue : IGraphicsCommandQueue {
|
||||||
|
|
||||||
MetalShaderDataBinding* m_boundData = nullptr;
|
MetalShaderDataBinding* m_boundData = nullptr;
|
||||||
|
|
||||||
|
void _setShaderDataBinding(MetalShaderDataBinding* cbind) {
|
||||||
|
cbind->bind(m_enc, m_fillBuf);
|
||||||
|
m_boundData = cbind;
|
||||||
|
[m_enc setFragmentSamplerStates:m_samplers withRange:NSMakeRange(0, 5)];
|
||||||
|
[m_enc setVertexSamplerStates:m_samplers withRange:NSMakeRange(0, 5)];
|
||||||
|
}
|
||||||
|
|
||||||
void setShaderDataBinding(const ObjToken<IShaderDataBinding>& binding) {
|
void setShaderDataBinding(const ObjToken<IShaderDataBinding>& binding) {
|
||||||
@autoreleasepool {
|
@autoreleasepool {
|
||||||
MetalShaderDataBinding* cbind = binding.cast<MetalShaderDataBinding>();
|
MetalShaderDataBinding* cbind = binding.cast<MetalShaderDataBinding>();
|
||||||
cbind->bind(m_enc, m_fillBuf);
|
_setShaderDataBinding(cbind);
|
||||||
m_boundData = cbind;
|
|
||||||
[m_enc setFragmentSamplerStates:m_samplers withRange:NSMakeRange(0, 5)];
|
|
||||||
[m_enc setVertexSamplerStates:m_samplers withRange:NSMakeRange(0, 5)];
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1347,6 +1351,8 @@ struct MetalCommandQueue : IGraphicsCommandQueue {
|
||||||
m_enc = [m_cmdBuf renderCommandEncoderWithDescriptor:clearDepth ? tex->m_clearDepthPassDesc : tex->m_passDesc];
|
m_enc = [m_cmdBuf renderCommandEncoderWithDescriptor:clearDepth ? tex->m_clearDepthPassDesc : tex->m_passDesc];
|
||||||
[m_enc setFrontFacingWinding:MTLWindingCounterClockwise];
|
[m_enc setFrontFacingWinding:MTLWindingCounterClockwise];
|
||||||
|
|
||||||
|
if (m_boundData)
|
||||||
|
_setShaderDataBinding(m_boundData);
|
||||||
if (m_boundVp.width || m_boundVp.height)
|
if (m_boundVp.width || m_boundVp.height)
|
||||||
[m_enc setViewport:m_boundVp];
|
[m_enc setViewport:m_boundVp];
|
||||||
if (m_boundScissor.width || m_boundScissor.height)
|
if (m_boundScissor.width || m_boundScissor.height)
|
||||||
|
|
Loading…
Reference in New Issue