mirror of
https://github.com/cemu-project/Cemu.git
synced 2025-12-21 01:37:04 +00:00
31 lines
1.2 KiB
C++
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();
|
|
}
|