diff options
| author | skallweitNV <64953474+skallweitNV@users.noreply.github.com> | 2024-06-10 18:12:01 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-06-10 18:12:01 +0200 |
| commit | 6857dd57549f01daa025f45221a693259e474958 (patch) | |
| tree | c6db90150ff093eea525e57c7e52c0cc1c970095 /tools/gfx/metal/metal-shader-program.cpp | |
| parent | 0974463daf0982626cb2b8c8bb6f494f3e6c9e52 (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.cpp | 15 |
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; } |
