layer_initialize_dispatch_table was using gpa pointer without lookup.
That could put the loader GPA function in for the lowest dispatch table
instead of the icd GPA function.
Use the same return from GPA call for GPA itself.
There was code fixing up GPA dispatch in draw_state.cpp and mem_tracker.cpp.
Remove that now that layer_initialize_dispatch_table does the right thing.
layer_initialize_dispatch_table(&nextTable, fpNextGPA, (VkPhysicalGpu) pCurObj->nextObject);
- PFN_vkGetProcAddr fpGetProcAddr = (PFN_vkGetProcAddr)fpNextGPA((VkPhysicalGpu) pCurObj->nextObject, (char *) "vkGetProcAddr");
- nextTable.GetProcAddr = fpGetProcAddr;
-
if (!globalLockInitialized)
{
// TODO/TBD: Need to delete this mutex sometime. How??? One
layer_initialize_dispatch_table(&nextTable, fpNextGPA, (VkPhysicalGpu) pCurObj->nextObject);
- PFN_vkGetProcAddr fpGetProcAddr = (PFN_vkGetProcAddr)fpNextGPA((VkPhysicalGpu) pCurObj->nextObject, (char *) "vkGetProcAddr");
- nextTable.GetProcAddr = fpGetProcAddr;
-
if (!globalLockInitialized)
{
// TODO/TBD: Need to delete this mutex sometime. How??? One
for proto in self.protos:
if 'WsiX11AssociateConnection' == proto.name:
stmts.append("#if defined(__linux__) || defined(XCB_NVIDIA)")
- if proto.name == "GetProcAddr":
- stmts.append("table->%s = gpa; /* direct assignment */" %
- proto.name)
- elif self.is_dispatchable_object_first_param(proto) or proto.name == "CreateInstance":
+ if self.is_dispatchable_object_first_param(proto) or proto.name == "CreateInstance":
stmts.append("table->%s = (PFN_vk%s) gpa(gpu, \"vk%s\");" %
(proto.name, proto.name, proto.name))
else: