-
Notifications
You must be signed in to change notification settings - Fork 809
Description
As specified in #657
Creating a simple function compiled as a library
float3 Apply(float3 input)
{
return input * 2.0f;
}
Calling reflection on the library :
D3D12_FUNCTION_DESC func_desc;
auto fr = lib_ref->GetFunctionByIndex(0);
fr->GetDesc(&func_desc);
D3D12_PARAMETER_DESC pdesc;
auto p = fr->GetFunctionParameter(0);
HRESULT hr = p->GetDesc(&pdesc);
hr for the parameter returns E_FAIL
This prevents to scan for the function signatures, which in our old dx11 based system (which we are moving to dx12), allowed us to scan for function signatures, and if the signature matches, makes it eligible to be "linked" in a "host shader".
In d3d11 we had to do that by generating HLSL code (since function linking graph sadly does not support compute), but in the dxil case would allow us to perform everything at bytecode level, which is of course much neater.
For our type of applications it allows a lot of flexibility in various use cases (mostly gpu based procedural geometry modifiers, particle systems, distance fields generation), since our end user can just write a few simple functions, and connect them to a complex compute system without worrying about the inner complexity.
This would also in other cases allow us perform some pre validation before trying to attempt linking, so we can return an early error instead of : "linking failed", which would vastly improve our automated testing.
Thanks
Metadata
Metadata
Assignees
Labels
Type
Projects
Status