summaryrefslogtreecommitdiff
path: root/tools/gfx/metal/metal-shader-program.cpp
diff options
context:
space:
mode:
authorskallweitNV <64953474+skallweitNV@users.noreply.github.com>2024-06-10 18:12:01 +0200
committerGitHub <noreply@github.com>2024-06-10 18:12:01 +0200
commit6857dd57549f01daa025f45221a693259e474958 (patch)
treec6db90150ff093eea525e57c7e52c0cc1c970095 /tools/gfx/metal/metal-shader-program.cpp
parent0974463daf0982626cb2b8c8bb6f494f3e6c9e52 (diff)
[gfx] Metal graphics support (#4324)
* fix double semicolons * fix another double semicolon * wait for init data upload * remove obsolete setData * refactor swapchain to work on virtual back buffers * buffer/texture use breakable device reference * refactor input layout * create render command encoder * add todo * refactor framebuffer layout * refactor framebuffer * refactor shader program * translatePrimitiveType * add more translate functions * refactor framebuffer * refactor render pass * implement graphics pipeline state * add depth stencil state * initial render command encoder support * comment
Diffstat (limited to 'tools/gfx/metal/metal-shader-program.cpp')
-rw-r--r--tools/gfx/metal/metal-shader-program.cpp15
1 files changed, 9 insertions, 6 deletions
diff --git a/tools/gfx/metal/metal-shader-program.cpp b/tools/gfx/metal/metal-shader-program.cpp
index 1b998bc57..e0f973eb6 100644
--- a/tools/gfx/metal/metal-shader-program.cpp
+++ b/tools/gfx/metal/metal-shader-program.cpp
@@ -22,19 +22,22 @@ ShaderProgramImpl::~ShaderProgramImpl()
Result ShaderProgramImpl::createShaderModule(slang::EntryPointReflection* entryPointInfo, ComPtr<ISlangBlob> kernelCode)
{
- m_codeBlobs.add(kernelCode);
- const char* realEntryPointName = entryPointInfo->getNameOverride();
+ Module module;
+ module.stage = entryPointInfo->getStage();
+ module.entryPointName = entryPointInfo->getNameOverride();
+ module.code = kernelCode;
+
dispatch_data_t data = dispatch_data_create(kernelCode->getBufferPointer(), kernelCode->getBufferSize(), dispatch_get_main_queue(), NULL);
NS::Error* error;
- NS::SharedPtr<MTL::Library> library = NS::TransferPtr(m_device->m_device->newLibrary(data, &error));
- if (!library)
+ module.library = NS::TransferPtr(m_device->m_device->newLibrary(data, &error));
+ if (!module.library)
{
// TODO use better mechanism for reporting errors
std::cout << error->localizedDescription()->utf8String() << std::endl;
return SLANG_E_INVALID_ARG;
}
- m_entryPointNames.add(realEntryPointName);
- m_modules.add(library);
+
+ m_modules.add(module);
return SLANG_OK;
}