From 6857dd57549f01daa025f45221a693259e474958 Mon Sep 17 00:00:00 2001 From: skallweitNV <64953474+skallweitNV@users.noreply.github.com> Date: Mon, 10 Jun 2024 18:12:01 +0200 Subject: [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 --- tools/gfx/metal/metal-shader-program.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'tools/gfx/metal/metal-shader-program.cpp') 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 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 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; } -- cgit v1.2.3