Method: Vulkan::Pipeline#construct_specialization_info

Defined in:
lib/vulkan/pipeline.rb

#construct_specialization_info(specialization_constants_hash) ⇒ Object



134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
# File 'lib/vulkan/pipeline.rb', line 134

def construct_specialization_info(specialization_constants_hash)
  specialization_info = nil
  if specialization_constants_hash&.any?
    specialization_data = ""
    specialization_entries = specialization_constants_hash.map do |id, data|
      VkSpecializationMapEntry.malloc.tap do |entry|
        entry.constantID = id
        entry.offset = specialization_data.size
        entry.size = data.size
        specialization_data << data
      end
    end
    specialization_info = VkSpecializationInfo.malloc
    specialization_info.mapEntryCount = specialization_entries.count
    specialization_info.pMapEntries = array_of_structures(specialization_entries)
    specialization_info.dataSize = specialization_data.size
    specialization_info.pData = specialization_data
  end
  specialization_info
end