mirror of
https://github.com/cemu-project/Cemu.git
synced 2024-12-01 21:44:17 +01:00
use uchar for index type
This commit is contained in:
parent
e7f8f0ee4c
commit
a328c5e753
@ -3901,7 +3901,7 @@ void LatteDecompiler_emitMSLShader(LatteDecompilerShaderContext* shaderContext,
|
|||||||
// Vertex buffers
|
// Vertex buffers
|
||||||
std::string vertexBufferDefinitions = "#define VERTEX_BUFFER_DEFINITIONS ";
|
std::string vertexBufferDefinitions = "#define VERTEX_BUFFER_DEFINITIONS ";
|
||||||
std::string vertexBuffers = "#define VERTEX_BUFFERS ";
|
std::string vertexBuffers = "#define VERTEX_BUFFERS ";
|
||||||
std::string inputFetchDefinition = "VertexIn fetchVertex(thread uint& vid, device uint* indexBuffer, uint indexType VERTEX_BUFFER_DEFINITIONS) {\n";
|
std::string inputFetchDefinition = "VertexIn fetchVertex(thread uint& vid, device uint* indexBuffer, uchar indexType VERTEX_BUFFER_DEFINITIONS) {\n";
|
||||||
|
|
||||||
// Index buffer
|
// Index buffer
|
||||||
inputFetchDefinition += "if (indexType == 1) // UShort\n";
|
inputFetchDefinition += "if (indexType == 1) // UShort\n";
|
||||||
|
@ -490,8 +490,7 @@ namespace LatteDecompiler
|
|||||||
// TODO: inly include index buffer if needed
|
// TODO: inly include index buffer if needed
|
||||||
src->addFmt(", device uint* indexBuffer [[buffer({})]]", decompilerContext->output->resourceMappingMTL.indexBufferBinding);
|
src->addFmt(", device uint* indexBuffer [[buffer({})]]", decompilerContext->output->resourceMappingMTL.indexBufferBinding);
|
||||||
// TODO: put into the support buffer?
|
// TODO: put into the support buffer?
|
||||||
// TODO: use uchar?
|
src->addFmt(", constant uchar& indexType [[buffer({})]]", decompilerContext->output->resourceMappingMTL.indexTypeBinding);
|
||||||
src->addFmt(", constant uint& indexType [[buffer({})]]", decompilerContext->output->resourceMappingMTL.indexTypeBinding);
|
|
||||||
src->add(" VERTEX_BUFFER_DEFINITIONS");
|
src->add(" VERTEX_BUFFER_DEFINITIONS");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -1187,9 +1187,12 @@ void MetalRenderer::draw_execute(uint32 baseVertex, uint32 baseInstance, uint32
|
|||||||
// TODO: make a helper function for this
|
// TODO: make a helper function for this
|
||||||
renderCommandEncoder->setObjectBytes(&verticesPerInstance, sizeof(verticesPerInstance), vertexShader->resourceMapping.verticesPerInstanceBinding);
|
renderCommandEncoder->setObjectBytes(&verticesPerInstance, sizeof(verticesPerInstance), vertexShader->resourceMapping.verticesPerInstanceBinding);
|
||||||
encoderState.m_buffers[METAL_SHADER_TYPE_OBJECT][vertexShader->resourceMapping.verticesPerInstanceBinding] = {nullptr};
|
encoderState.m_buffers[METAL_SHADER_TYPE_OBJECT][vertexShader->resourceMapping.verticesPerInstanceBinding] = {nullptr};
|
||||||
|
|
||||||
if (indexBuffer)
|
if (indexBuffer)
|
||||||
SetBuffer(renderCommandEncoder, METAL_SHADER_TYPE_OBJECT, indexBuffer, indexBufferOffset, vertexShader->resourceMapping.indexBufferBinding);
|
SetBuffer(renderCommandEncoder, METAL_SHADER_TYPE_OBJECT, indexBuffer, indexBufferOffset, vertexShader->resourceMapping.indexBufferBinding);
|
||||||
renderCommandEncoder->setObjectBytes(&hostIndexType, sizeof(hostIndexType), vertexShader->resourceMapping.indexTypeBinding);
|
|
||||||
|
uint8 hostIndexTypeU8 = (uint8)hostIndexType;
|
||||||
|
renderCommandEncoder->setObjectBytes(&hostIndexTypeU8, sizeof(hostIndexTypeU8), vertexShader->resourceMapping.indexTypeBinding);
|
||||||
encoderState.m_buffers[METAL_SHADER_TYPE_OBJECT][vertexShader->resourceMapping.indexTypeBinding] = {nullptr};
|
encoderState.m_buffers[METAL_SHADER_TYPE_OBJECT][vertexShader->resourceMapping.indexTypeBinding] = {nullptr};
|
||||||
|
|
||||||
uint32 verticesPerPrimitive = 0;
|
uint32 verticesPerPrimitive = 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user