1 // Copyright 2018 The SwiftShader Authors. All Rights Reserved. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 #ifndef VK_SHADER_MODULE_HPP_ 16 #define VK_SHADER_MODULE_HPP_ 17 18 #include "VkObject.hpp" 19 #include "Pipeline/SpirvBinary.hpp" 20 21 namespace vk { 22 23 class ShaderModule : public Object<ShaderModule, VkShaderModule> 24 { 25 public: 26 ShaderModule(const VkShaderModuleCreateInfo *pCreateInfo, void *mem); 27 28 static size_t ComputeRequiredAllocationSize(const VkShaderModuleCreateInfo *pCreateInfo); getBinary() const29 const sw::SpirvBinary &getBinary() const { return binary; } 30 31 private: 32 sw::SpirvBinary binary; 33 }; 34 Cast(VkShaderModule object)35static inline ShaderModule *Cast(VkShaderModule object) 36 { 37 return ShaderModule::Cast(object); 38 } 39 40 } // namespace vk 41 42 #endif // VK_SHADER_MODULE_HPP_ 43