mirror of
https://github.com/cemu-project/Cemu.git
synced 2024-12-26 01:31:53 +01:00
Latte: Add support for MIN_DX10 shader instruction
This commit is contained in:
parent
05e0f349e0
commit
9d25b88368
@ -588,7 +588,6 @@ bool LatteMRT::UpdateCurrentFBO()
|
||||
if (depthBufferView == nullptr)
|
||||
{
|
||||
// create depth buffer view
|
||||
forceLogDebug_printf("Creating depth buffer tex %08x %dx%d slice %d", depthBufferPhysMem, depthBufferHeight, depthBufferWidth, depthBufferViewFirstSlice);
|
||||
if(depthBufferViewFirstSlice == 0)
|
||||
depthBufferView = LatteTexture_CreateMapping(depthBufferPhysMem, 0, depthBufferWidth, depthBufferHeight, 1, depthBufferPitch, depthBufferTileMode, depthBufferSwizzle, 0, 1, 0, 1, depthBufferFormat, Latte::E_DIM::DIM_2D, Latte::E_DIM::DIM_2D, true);
|
||||
else
|
||||
|
@ -813,6 +813,8 @@ LatteDecompilerShader* LatteShader_CompileSeparablePixelShader(uint64 baseHash,
|
||||
|
||||
void LatteSHRC_UpdateVertexShader(uint8* vertexShaderPtr, uint32 vertexShaderSize, bool usesGeometryShader)
|
||||
{
|
||||
// todo - should include VTX_SEMANTIC table in state
|
||||
|
||||
LatteSHRC_UpdateVSBaseHash(vertexShaderPtr, vertexShaderSize, usesGeometryShader);
|
||||
uint64 vsAuxHash = 0;
|
||||
auto itBaseShader = sVertexShaders.find(_shaderBaseHash_vs);
|
||||
|
@ -345,6 +345,7 @@ bool LatteDecompiler_IsALUTransInstruction(bool isOP3, uint32 opcode)
|
||||
opcode == ALU_OP2_INST_SETGE_UINT ||
|
||||
opcode == ALU_OP2_INST_SETGT_UINT ||
|
||||
opcode == ALU_OP2_INST_MAX_DX10 ||
|
||||
opcode == ALU_OP2_INST_MIN_DX10 ||
|
||||
opcode == ALU_OP2_INST_PRED_SETE ||
|
||||
opcode == ALU_OP2_INST_PRED_SETNE ||
|
||||
opcode == ALU_OP2_INST_PRED_SETGE ||
|
||||
|
@ -176,6 +176,7 @@ bool _isIntegerInstruction(const LatteDecompilerALUInstruction& aluInstruction)
|
||||
case ALU_OP2_INST_COS:
|
||||
case ALU_OP2_INST_RNDNE:
|
||||
case ALU_OP2_INST_MAX_DX10:
|
||||
case ALU_OP2_INST_MIN_DX10:
|
||||
case ALU_OP2_INST_SETGT:
|
||||
case ALU_OP2_INST_SETGE:
|
||||
case ALU_OP2_INST_SETNE:
|
||||
|
@ -1038,7 +1038,8 @@ void _emitALUOP2InstructionCode(LatteDecompilerShaderContext* shaderContext, Lat
|
||||
}
|
||||
else if( aluInstruction->opcode == ALU_OP2_INST_MAX ||
|
||||
aluInstruction->opcode == ALU_OP2_INST_MIN ||
|
||||
aluInstruction->opcode == ALU_OP2_INST_MAX_DX10 )
|
||||
aluInstruction->opcode == ALU_OP2_INST_MAX_DX10 ||
|
||||
aluInstruction->opcode == ALU_OP2_INST_MIN_DX10 )
|
||||
{
|
||||
outputType = _getALUInstructionOutputDataType(shaderContext, aluInstruction);
|
||||
_emitInstructionOutputVariableName(shaderContext, aluInstruction);
|
||||
@ -1048,10 +1049,10 @@ void _emitALUOP2InstructionCode(LatteDecompilerShaderContext* shaderContext, Lat
|
||||
src->add("max");
|
||||
else if( aluInstruction->opcode == ALU_OP2_INST_MIN )
|
||||
src->add("min");
|
||||
else if( aluInstruction->opcode == ALU_OP2_INST_MAX_DX10 )
|
||||
{
|
||||
else if (aluInstruction->opcode == ALU_OP2_INST_MAX_DX10)
|
||||
src->add("max");
|
||||
}
|
||||
else if (aluInstruction->opcode == ALU_OP2_INST_MIN_DX10)
|
||||
src->add("min");
|
||||
src->add("(");
|
||||
_emitOperandInputCode(shaderContext, aluInstruction, 0, LATTE_DECOMPILER_DTYPE_FLOAT);
|
||||
src->add(", ");
|
||||
|
@ -31,6 +31,7 @@
|
||||
#define ALU_OP2_INST_MAX (0x003)
|
||||
#define ALU_OP2_INST_MIN (0x004)
|
||||
#define ALU_OP2_INST_MAX_DX10 (0x005)
|
||||
#define ALU_OP2_INST_MIN_DX10 (0x006)
|
||||
#define ALU_OP2_INST_SETE (0x008)
|
||||
#define ALU_OP2_INST_SETGT (0x009)
|
||||
#define ALU_OP2_INST_SETGE (0x00A)
|
||||
|
@ -209,7 +209,6 @@ uint32 VkTextureChunkedHeap::allocateNewChunk(uint32 chunkIndex, uint32 minimumA
|
||||
VkResult r = vkAllocateMemory(m_device, &allocInfo, nullptr, &imageMemory);
|
||||
if (r != VK_SUCCESS)
|
||||
continue;
|
||||
forceLog_printf("Vulkan-Info: Allocated additional memory for textures from device-local memory");
|
||||
m_list_chunkInfo[chunkIndex].mem = imageMemory;
|
||||
return allocationSize;
|
||||
}
|
||||
@ -225,7 +224,6 @@ uint32 VkTextureChunkedHeap::allocateNewChunk(uint32 chunkIndex, uint32 minimumA
|
||||
VkResult r = vkAllocateMemory(m_device, &allocInfo, nullptr, &imageMemory);
|
||||
if (r != VK_SUCCESS)
|
||||
continue;
|
||||
forceLog_printf("Vulkan-Info: Allocated additional memory for textures from host-local memory");
|
||||
m_list_chunkInfo[chunkIndex].mem = imageMemory;
|
||||
return allocationSize;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user