Cemu/src/Cafe/HW/Latte/Renderer/Metal/MetalHybridComputePipeline.cpp
2024-08-16 16:38:01 +02:00

31 lines
1.2 KiB
C++

#include "Cafe/HW/Latte/Renderer/Metal/MetalHybridComputePipeline.h"
MetalHybridComputePipeline::MetalHybridComputePipeline(class MetalRenderer* mtlRenderer, MTL::Library* library, const char* vertexFunctionName, const char* kernelFunctionName)
{
// Render pipeline state
MTL::Function* vertexFunction = library->newFunction(ToNSString(vertexFunctionName));
MTL::RenderPipelineDescriptor* renderPipelineDescriptor = MTL::RenderPipelineDescriptor::alloc()->init();
renderPipelineDescriptor->setVertexFunction(vertexFunction);
renderPipelineDescriptor->setRasterizationEnabled(false);
NS::Error* error = nullptr;
m_renderPipelineState = mtlRenderer->GetDevice()->newRenderPipelineState(renderPipelineDescriptor, &error);
renderPipelineDescriptor->release();
vertexFunction->release();
if (error)
{
printf("error creating hybrid render pipeline state: %s\n", error->localizedDescription()->utf8String());
error->release();
}
// Compute pipeline state
// TODO
}
MetalHybridComputePipeline::~MetalHybridComputePipeline()
{
m_renderPipelineState->release();
// TODO: uncomment
//m_computePipelineState->release();
}