mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-07-13 19:17:12 +00:00
Add new shader enums for RT shader stages
This commit is contained in:
@@ -1645,6 +1645,12 @@ QString ToQStr(const ShaderStage stage, const GraphicsAPI apitype)
|
||||
case ShaderStage::Compute: return lit("Compute");
|
||||
case ShaderStage::Amplification: return lit("Amplif.");
|
||||
case ShaderStage::Mesh: return lit("Mesh");
|
||||
case ShaderStage::RayGen: return lit("RayGen");
|
||||
case ShaderStage::Intersection: return lit("Intersection");
|
||||
case ShaderStage::AnyHit: return lit("AnyHit");
|
||||
case ShaderStage::ClosestHit: return lit("ClosestHit");
|
||||
case ShaderStage::Miss: return lit("Miss");
|
||||
case ShaderStage::Callable: return lit("Callable");
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
@@ -1660,6 +1666,12 @@ QString ToQStr(const ShaderStage stage, const GraphicsAPI apitype)
|
||||
case ShaderStage::Compute: return lit("Compute");
|
||||
case ShaderStage::Task: return lit("Task");
|
||||
case ShaderStage::Mesh: return lit("Mesh");
|
||||
case ShaderStage::RayGen: return lit("RayGen");
|
||||
case ShaderStage::Intersection: return lit("Intersection");
|
||||
case ShaderStage::AnyHit: return lit("AnyHit");
|
||||
case ShaderStage::ClosestHit: return lit("ClosestHit");
|
||||
case ShaderStage::Miss: return lit("Miss");
|
||||
case ShaderStage::Callable: return lit("Callable");
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -986,6 +986,12 @@ rdcstr DoStringise(const ShaderStage &el)
|
||||
STRINGISE_ENUM_CLASS(Compute);
|
||||
STRINGISE_ENUM_CLASS(Task);
|
||||
STRINGISE_ENUM_CLASS(Mesh);
|
||||
STRINGISE_ENUM_CLASS(RayGen);
|
||||
STRINGISE_ENUM_CLASS(Intersection);
|
||||
STRINGISE_ENUM_CLASS(AnyHit);
|
||||
STRINGISE_ENUM_CLASS(ClosestHit);
|
||||
STRINGISE_ENUM_CLASS(Miss);
|
||||
STRINGISE_ENUM_CLASS(Callable);
|
||||
}
|
||||
END_ENUM_STRINGISE();
|
||||
}
|
||||
@@ -1300,6 +1306,12 @@ rdcstr DoStringise(const ShaderStageMask &el)
|
||||
STRINGISE_BITFIELD_CLASS_BIT(Compute);
|
||||
STRINGISE_BITFIELD_CLASS_BIT(Task);
|
||||
STRINGISE_BITFIELD_CLASS_BIT(Mesh);
|
||||
STRINGISE_BITFIELD_CLASS_BIT(RayGen);
|
||||
STRINGISE_BITFIELD_CLASS_BIT(Intersection);
|
||||
STRINGISE_BITFIELD_CLASS_BIT(AnyHit);
|
||||
STRINGISE_BITFIELD_CLASS_BIT(ClosestHit);
|
||||
STRINGISE_BITFIELD_CLASS_BIT(Miss);
|
||||
STRINGISE_BITFIELD_CLASS_BIT(Callable);
|
||||
}
|
||||
END_BITFIELD_STRINGISE();
|
||||
}
|
||||
|
||||
@@ -2580,6 +2580,31 @@ DOCUMENT(R"(The stage in a pipeline where a shader runs
|
||||
.. data:: Mesh
|
||||
|
||||
The mesh shader.
|
||||
|
||||
.. data:: RayGen
|
||||
|
||||
A ray generation shader, called from a ray dispatch command to launch initial rays.
|
||||
|
||||
.. data:: Intersection
|
||||
|
||||
An intersection shader, used for procedural objects in a BLAS to calculate hits.
|
||||
|
||||
.. data:: AnyHit
|
||||
|
||||
An any-hit shader, called in an indeterminate order and number when a ray intersection has been
|
||||
found with an object but may not be the final hit.
|
||||
|
||||
.. data:: ClosestHit
|
||||
|
||||
A closest-hit shader, called once the closest hit on a ray has been found.
|
||||
|
||||
.. data:: Miss
|
||||
|
||||
A miss shader, called when a ray has no valid closest hit at all.
|
||||
|
||||
.. data:: Callable
|
||||
|
||||
A callable shader, called by shader code via index during ray processing.
|
||||
)");
|
||||
enum class ShaderStage : uint8_t
|
||||
{
|
||||
@@ -2604,6 +2629,13 @@ enum class ShaderStage : uint8_t
|
||||
|
||||
Mesh,
|
||||
|
||||
RayGen,
|
||||
Intersection,
|
||||
AnyHit,
|
||||
ClosestHit,
|
||||
Miss,
|
||||
Callable,
|
||||
|
||||
Count,
|
||||
};
|
||||
|
||||
@@ -4763,7 +4795,14 @@ enum class ShaderStageMask : uint16_t
|
||||
Task = 1 << uint32_t(ShaderStage::Task),
|
||||
Amplification = Task,
|
||||
Mesh = 1 << uint32_t(ShaderStage::Mesh),
|
||||
All = Vertex | Hull | Domain | Geometry | Pixel | Compute | Task | Mesh,
|
||||
RayGen = 1 << uint32_t(ShaderStage::RayGen),
|
||||
Intersection = 1 << uint32_t(ShaderStage::Intersection),
|
||||
AnyHit = 1 << uint32_t(ShaderStage::AnyHit),
|
||||
ClosestHit = 1 << uint32_t(ShaderStage::ClosestHit),
|
||||
Miss = 1 << uint32_t(ShaderStage::Miss),
|
||||
Callable = 1 << uint32_t(ShaderStage::Callable),
|
||||
All = Vertex | Hull | Domain | Geometry | Pixel | Compute | Task | Mesh | RayGen | Intersection |
|
||||
AnyHit | ClosestHit | Miss | Callable,
|
||||
};
|
||||
|
||||
BITMASK_OPERATORS(ShaderStageMask);
|
||||
|
||||
@@ -298,6 +298,12 @@ rdcstr DisassembleSPIRV(ShaderStage stage, const bytebuf &shaderBytes, const rdc
|
||||
case ShaderStage::Compute: stageName = "comp"; break;
|
||||
case ShaderStage::Task: stageName = "task"; break;
|
||||
case ShaderStage::Mesh: stageName = "mesh"; break;
|
||||
case ShaderStage::RayGen: stageName = "rgen"; break;
|
||||
case ShaderStage::Intersection: stageName = "rint"; break;
|
||||
case ShaderStage::AnyHit: stageName = "rahit"; break;
|
||||
case ShaderStage::ClosestHit: stageName = "rchit"; break;
|
||||
case ShaderStage::Miss: stageName = "rmiss"; break;
|
||||
case ShaderStage::Callable: stageName = "rcall"; break;
|
||||
case ShaderStage::Count: return "; Cannot identify shader type";
|
||||
}
|
||||
|
||||
@@ -410,6 +416,30 @@ rdcstr DisassembleGLSL(ShaderStage stage, const bytebuf &shaderBytes, const rdcs
|
||||
stageIndex = 7;
|
||||
stageName = "mesh";
|
||||
break;
|
||||
case ShaderStage::RayGen:
|
||||
stageIndex = 8;
|
||||
stageName = "rgen";
|
||||
break;
|
||||
case ShaderStage::Intersection:
|
||||
stageIndex = 9;
|
||||
stageName = "rint";
|
||||
break;
|
||||
case ShaderStage::AnyHit:
|
||||
stageIndex = 10;
|
||||
stageName = "rahit";
|
||||
break;
|
||||
case ShaderStage::ClosestHit:
|
||||
stageIndex = 11;
|
||||
stageName = "rchit";
|
||||
break;
|
||||
case ShaderStage::Miss:
|
||||
stageIndex = 12;
|
||||
stageName = "rmiss";
|
||||
break;
|
||||
case ShaderStage::Callable:
|
||||
stageIndex = 13;
|
||||
stageName = "rcall";
|
||||
break;
|
||||
case ShaderStage::Count: return "; Cannot identify shader type";
|
||||
}
|
||||
|
||||
|
||||
@@ -302,6 +302,12 @@ ShaderStage GetShaderStage(ShaderType type)
|
||||
case DXBC::ShaderType::Compute: return ShaderStage::Compute;
|
||||
case DXBC::ShaderType::Amplification: return ShaderStage::Amplification;
|
||||
case DXBC::ShaderType::Mesh: return ShaderStage::Mesh;
|
||||
case DXBC::ShaderType::RayGeneration: return ShaderStage::RayGen;
|
||||
case DXBC::ShaderType::Intersection: return ShaderStage::Intersection;
|
||||
case DXBC::ShaderType::AnyHit: return ShaderStage::AnyHit;
|
||||
case DXBC::ShaderType::ClosestHit: return ShaderStage::ClosestHit;
|
||||
case DXBC::ShaderType::Miss: return ShaderStage::Miss;
|
||||
case DXBC::ShaderType::Callable: return ShaderStage::Callable;
|
||||
default: RDCERR("Unexpected DXBC shader type %u", type); return ShaderStage::Vertex;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -569,6 +569,12 @@ VkShaderStageFlags ShaderMaskFromIndex(size_t index)
|
||||
VK_SHADER_STAGE_COMPUTE_BIT,
|
||||
VK_SHADER_STAGE_TASK_BIT_EXT,
|
||||
VK_SHADER_STAGE_MESH_BIT_EXT,
|
||||
VK_SHADER_STAGE_RAYGEN_BIT_KHR,
|
||||
VK_SHADER_STAGE_INTERSECTION_BIT_KHR,
|
||||
VK_SHADER_STAGE_ANY_HIT_BIT_KHR,
|
||||
VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR,
|
||||
VK_SHADER_STAGE_MISS_BIT_KHR,
|
||||
VK_SHADER_STAGE_CALLABLE_BIT_KHR,
|
||||
};
|
||||
|
||||
RDCCOMPILE_ASSERT(ARRAY_COUNT(mask) == NumShaderStages, "Array is out of date");
|
||||
|
||||
@@ -517,10 +517,23 @@ bool WrappedVulkan::Serialise_vkCreateGraphicsPipelines(
|
||||
DerivedResource(device, shadId);
|
||||
DerivedResource(pipe, shadId);
|
||||
|
||||
const char *names[] = {" vertex shader", " tess control shader",
|
||||
" tess eval shader", " geometry shader",
|
||||
" fragment shader", NULL,
|
||||
" task shader", " mesh shader"};
|
||||
const char *names[] = {
|
||||
" vertex shader",
|
||||
" tess control shader",
|
||||
" tess eval shader",
|
||||
" geometry shader",
|
||||
" fragment shader",
|
||||
NULL,
|
||||
" task shader",
|
||||
" mesh shader",
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
};
|
||||
RDCCOMPILE_ASSERT(ARRAY_COUNT(names) == NumShaderStages, "Array is out of date");
|
||||
|
||||
if(shadName)
|
||||
GetReplay()->GetResourceDesc(shadId).SetCustomName(shadName->pObjectName);
|
||||
|
||||
Reference in New Issue
Block a user