Skip to content

Commit 52db910

Browse files
committed
lib shader stage
Signed-off-by: Ali Cheraghi <alichraghi@proton.me>
1 parent f3961db commit 52db910

File tree

7 files changed

+14
-10
lines changed

7 files changed

+14
-10
lines changed

include/nbl/asset/IDescriptorSetLayout.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -330,7 +330,7 @@ class IDescriptorSetLayout : public IDescriptorSetLayoutBase
330330
bindings[i].binding = i;
331331
bindings[i].type = type;
332332
bindings[i].createFlags = SBinding::E_CREATE_FLAGS::ECF_NONE;
333-
bindings[i].stageFlags = stageAccessFlags ? stageAccessFlags[i]:asset::IShader::ESS_ALL;
333+
bindings[i].stageFlags = stageAccessFlags ? stageAccessFlags[i]:asset::IShader::ESS_ALL_OR_LIBRARY;
334334
bindings[i].count = counts ? counts[i]:1u;
335335
bindings[i].samplers = nullptr;
336336
}

include/nbl/asset/utils/IMeshPackerV2.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -380,7 +380,7 @@ class IMeshPackerV2 : public IMeshPacker<MeshBufferType,MDIStructType>, public I
380380
{
381381
bnd->binding = binding;
382382
bnd->count = count;
383-
bnd->stageFlags = asset::ISpecializedShader::ESS_ALL;
383+
bnd->stageFlags = asset::ISpecializedShader::ESS_ALL_OR_LIBRARY;
384384
bnd->type = asset::IDescriptor::E_TYPE::ET_UNIFORM_TEXEL_BUFFER;
385385
bnd->samplers = nullptr;
386386
bnd++;
@@ -517,7 +517,7 @@ class IMeshPackerV2 : public IMeshPacker<MeshBufferType,MDIStructType>, public I
517517
{
518518
bnd->binding = binding;
519519
bnd->count = 1u;
520-
bnd->stageFlags = asset::ISpecializedShader::ESS_ALL;
520+
bnd->stageFlags = asset::ISpecializedShader::ESS_ALL_OR_LIBRARY;
521521
bnd->type = asset::IDescriptor::E_TYPE::ET_STORAGE_BUFFER;
522522
bnd->samplers = nullptr;
523523
bnd++;

include/nbl/asset/utils/IVirtualTexture.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1047,7 +1047,7 @@ class IVirtualTexture : public core::IReferenceCounted, public IVirtualTextureBa
10471047
auto fillBinding = [](auto& bnd, uint32_t _binding, uint32_t _count, core::smart_refctd_ptr<sampler_t>* _samplers) {
10481048
bnd.binding = _binding;
10491049
bnd.count = _count;
1050-
bnd.stageFlags = asset::IShader::E_SHADER_STAGE::ESS_ALL;
1050+
bnd.stageFlags = asset::IShader::E_SHADER_STAGE::ESS_ALL_OR_LIBRARY;
10511051
bnd.type = asset::IDescriptor::E_TYPE::ET_COMBINED_IMAGE_SAMPLER;
10521052
bnd.immutableSamplers = _samplers;
10531053
};

include/nbl/builtin/hlsl/enums.hlsl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ enum ShaderStage : uint32_t
2929
ESS_INTERSECTION = 1 << 12,
3030
ESS_CALLABLE = 1 << 13,
3131
ESS_ALL_GRAPHICS = 0x0000001F,
32-
ESS_ALL = 0x7fffffff
32+
ESS_ALL_OR_LIBRARY = 0x7fffffff
3333
};
3434

3535
enum SampleCountFlags : uint16_t

include/nbl/video/CVulkanCommon.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -464,7 +464,7 @@ inline VkShaderStageFlags getVkShaderStageFlagsFromShaderStage(const core::bitfl
464464
if(in.hasFlags(IGPUShader::E_SHADER_STAGE::ESS_INTERSECTION)) ret |= VK_SHADER_STAGE_INTERSECTION_BIT_KHR;
465465
if(in.hasFlags(IGPUShader::E_SHADER_STAGE::ESS_CALLABLE)) ret |= VK_SHADER_STAGE_CALLABLE_BIT_KHR;
466466
if(in.hasFlags(IGPUShader::E_SHADER_STAGE::ESS_ALL_GRAPHICS)) ret |= VK_SHADER_STAGE_ALL_GRAPHICS;
467-
if(in.hasFlags(IGPUShader::E_SHADER_STAGE::ESS_ALL)) ret |= VK_SHADER_STAGE_ALL;
467+
if(in.hasFlags(IGPUShader::E_SHADER_STAGE::ESS_ALL_OR_LIBRARY)) ret |= VK_SHADER_STAGE_ALL;
468468
return ret;
469469
}
470470

src/nbl/asset/utils/CHLSLCompiler.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ static const wchar_t* ShaderStageToString(asset::IShader::E_SHADER_STAGE stage)
4242
return L"as";
4343
case asset::IShader::E_SHADER_STAGE::ESS_MESH:
4444
return L"ms";
45+
case asset::IShader::E_SHADER_STAGE::ESS_ALL_OR_LIBRARY:
46+
return L"lib";
4547
default:
4648
return nullptr;
4749
};
@@ -403,8 +405,10 @@ core::smart_refctd_ptr<ICPUShader> CHLSLCompiler::compileToSPIRV_impl(const std:
403405
arguments.push_back(L"-HV");
404406
arguments.push_back(L"202x");
405407
// TODO: add this to `CHLSLCompiler::SOptions` and handle it properly in `dxc_compile_flags.empty()`
406-
arguments.push_back(L"-E");
407-
arguments.push_back(L"main");
408+
if (stage != asset::IShader::E_SHADER_STAGE::ESS_ALL_OR_LIBRARY) {
409+
arguments.push_back(L"-E");
410+
arguments.push_back(L"main");
411+
}
408412
// If a custom SPIR-V optimizer is specified, use that instead of DXC's spirv-opt.
409413
// This is how we can get more optimizer options.
410414
//

src/nbl/video/ILogicalDevice.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -291,8 +291,6 @@ core::smart_refctd_ptr<IGPUShader> ILogicalDevice::createShader(const SShaderCre
291291
// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineShaderStageCreateInfo.html#VUID-VkPipelineShaderStageCreateInfo-stage-00706
292292
switch (shaderStage)
293293
{
294-
case IGPUShader::E_SHADER_STAGE::ESS_VERTEX:
295-
break;
296294
case IGPUShader::E_SHADER_STAGE::ESS_TESSELLATION_CONTROL: [[fallthrough]];
297295
case IGPUShader::E_SHADER_STAGE::ESS_TESSELLATION_EVALUATION:
298296
if (!features.tessellationShader)
@@ -308,6 +306,8 @@ core::smart_refctd_ptr<IGPUShader> ILogicalDevice::createShader(const SShaderCre
308306
return nullptr;
309307
}
310308
break;
309+
case IGPUShader::E_SHADER_STAGE::ESS_ALL_OR_LIBRARY: [[fallthrough]];
310+
case IGPUShader::E_SHADER_STAGE::ESS_VERTEX: [[fallthrough]];
311311
case IGPUShader::E_SHADER_STAGE::ESS_FRAGMENT: [[fallthrough]];
312312
case IGPUShader::E_SHADER_STAGE::ESS_COMPUTE:
313313
break;

0 commit comments

Comments
 (0)