From de2926a6d5efc941a1865c0a6f47bf643a8f938e Mon Sep 17 00:00:00 2001 From: "HuYingzhuo(hugo/hyzboy)" Date: Tue, 6 Jun 2023 21:03:13 +0800 Subject: [PATCH] standalone GPUDevice::CreateMP --- inc/hgl/graph/VKDevice.h | 2 -- inc/hgl/graph/VKMaterialParameters.h | 7 +--- src/SceneGraph/Vulkan/VKDeviceMaterial.cpp | 38 +++++++++++----------- 3 files changed, 20 insertions(+), 27 deletions(-) diff --git a/inc/hgl/graph/VKDevice.h b/inc/hgl/graph/VKDevice.h index e838bf8b..05b6cbe0 100644 --- a/inc/hgl/graph/VKDevice.h +++ b/inc/hgl/graph/VKDevice.h @@ -209,8 +209,6 @@ public: // public: //shader & material - MaterialParameters *CreateMP(const MaterialDescriptorManager *,const PipelineLayoutData *,const DescriptorSetType &); - ShaderModule *CreateShaderModule(VkShaderStageFlagBits,const uint32_t *,const size_t); Material *CreateMaterial(const UTF8String &mtl_name,ShaderModuleMap *shader_maps,MaterialDescriptorManager *,VertexInput *); diff --git a/inc/hgl/graph/VKMaterialParameters.h b/inc/hgl/graph/VKMaterialParameters.h index a8d76220..cffadf27 100644 --- a/inc/hgl/graph/VKMaterialParameters.h +++ b/inc/hgl/graph/VKMaterialParameters.h @@ -18,12 +18,6 @@ protected: DescriptorSet *descriptor_set; -private: - - friend class GPUDevice; - - MaterialParameters(const MaterialDescriptorManager *,const DescriptorSetType &type,DescriptorSet *); - public: const DescriptorSetType GetType (){return set_type;} @@ -47,6 +41,7 @@ public: public: + MaterialParameters(const MaterialDescriptorManager *,const DescriptorSetType &type,DescriptorSet *); virtual ~MaterialParameters(); bool BindUBO(const int &index,DeviceBuffer *ubo,bool dynamic=false); diff --git a/src/SceneGraph/Vulkan/VKDeviceMaterial.cpp b/src/SceneGraph/Vulkan/VKDeviceMaterial.cpp index 0b1b7007..78883599 100644 --- a/src/SceneGraph/Vulkan/VKDeviceMaterial.cpp +++ b/src/SceneGraph/Vulkan/VKDeviceMaterial.cpp @@ -55,26 +55,26 @@ namespace ++itp; } } + + MaterialParameters *CreateMP(VkDevice device,VkDescriptorPool desc_pool,const MaterialDescriptorManager *desc_manager,const PipelineLayoutData *pld,const DescriptorSetType &desc_set_type) + { + if(!desc_manager||!pld)return(nullptr); + RANGE_CHECK_RETURN_NULLPTR(desc_set_type) + + DescriptorSet *ds=CreateDS(device,desc_pool,pld,desc_set_type); + + if(!ds)return(nullptr); + + #ifdef _DEBUG + const UTF8String addr_string=HexToString((uint64_t)(ds->GetDescriptorSet())); + + LOG_INFO(U8_TEXT("Create [DescriptSets:")+addr_string+("] OK! Material Name: \"")+desc_manager->GetMaterialName()+U8_TEXT("\" Type: ")+GetDescriptorSetTypeName(desc_set_type)); + #endif//_DEBUG + + return(new MaterialParameters(desc_manager,desc_set_type,ds)); + } }//namespace -MaterialParameters *GPUDevice::CreateMP(const MaterialDescriptorManager *desc_manager,const PipelineLayoutData *pld,const DescriptorSetType &desc_set_type) -{ - if(!desc_manager||!pld)return(nullptr); - RANGE_CHECK_RETURN_NULLPTR(desc_set_type) - - DescriptorSet *ds=CreateDS(attr->device,attr->desc_pool,pld,desc_set_type); - - if(!ds)return(nullptr); - -#ifdef _DEBUG - const UTF8String addr_string=HexToString((uint64_t)(ds->GetDescriptorSet())); - - LOG_INFO(U8_TEXT("Create [DescriptSets:")+addr_string+("] OK! Material Name: \"")+desc_manager->GetMaterialName()+U8_TEXT("\" Type: ")+GetDescriptorSetTypeName(desc_set_type)); -#endif//_DEBUG - - return(new MaterialParameters(desc_manager,desc_set_type,ds)); -} - Material *GPUDevice::CreateMaterial(const UTF8String &mtl_name,ShaderModuleMap *shader_maps,MaterialDescriptorManager *desc_manager,VertexInput *vi) { const int shader_count=shader_maps->GetCount(); @@ -107,7 +107,7 @@ Material *GPUDevice::CreateMaterial(const UTF8String &mtl_name,ShaderModuleMap * ENUM_CLASS_FOR(DescriptorSetType,int,dst) { if(desc_manager->hasSet((DescriptorSetType)dst)) - data->mp_array[dst]=CreateMP(desc_manager,pld,(DescriptorSetType)dst); + data->mp_array[dst]=CreateMP(attr->device,attr->desc_pool,desc_manager,pld,(DescriptorSetType)dst); else data->mp_array[dst]=nullptr; }