Home | History | Annotate | Download | only in protected_memory

Lines Matching refs:vk

45 void ImageValidator::initPrograms (vk::SourceCollections& programCollection) const
113 const vk::VkImage image, const vk::VkFormat imageFormat) const
134 const vk::DeviceInterface& vk = ctx.getDeviceInterface();
135 const vk::VkDevice device = ctx.getDevice();
136 const vk::VkQueue queue = ctx.getQueue();
140 de::UniquePtr<vk::BufferWithMemory> refUniform (makeBuffer(ctx,
144 vk::VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT,
145 vk::MemoryRequirement::HostVisible));
149 vk::flushMappedMemoryRange(vk, device, refUniform->getAllocation().getMemory(), refUniform->getAllocation().getOffset(), refUniformSize);
153 de::MovePtr<vk::BufferWithMemory> helperBuffer (makeBuffer(ctx,
157 vk::VK_BUFFER_USAGE_STORAGE_BUFFER_BIT,
158 vk::MemoryRequirement::Protected));
159 vk::Unique<vk::VkShaderModule> resetSSBOShader (vk::createShaderModule(vk, device, ctx.getBinaryCollection().get("ResetSSBO"), 0));
160 vk::Unique<vk::VkShaderModule> validatorShader (vk::createShaderModule(vk, device, ctx.getBinaryCollection().get("ImageValidator"), 0));
162 vk::Unique<vk::VkSampler> sampler (makeSampler(vk, device));
163 const vk::VkImageViewCreateInfo viewParams =
165 vk::VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO, // sType
169 vk::VK_IMAGE_VIEW_TYPE_2D, // viewType
171 vk::makeComponentMappingRGBA(), // components
173 vk::VK_IMAGE_ASPECT_COLOR_BIT, // aspectMask
180 vk::Unique<vk::VkImageView> imageView (vk::createImageView(vk, device, &viewParams));
183 vk::Unique<vk::VkDescriptorSetLayout> descriptorSetLayout(vk::DescriptorSetLayoutBuilder()
184 .addSingleSamplerBinding(vk::VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, vk::VK_SHADER_STAGE_COMPUTE_BIT, DE_NULL)
185 .addSingleBinding(vk::VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, vk::VK_SHADER_STAGE_COMPUTE_BIT)
186 .addSingleBinding(vk::VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, vk::VK_SHADER_STAGE_COMPUTE_BIT)
187 .build(vk, device));
188 vk::Unique<vk::VkDescriptorPool> descriptorPool(vk::DescriptorPoolBuilder()
189 .addType(vk::VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, 1u)
190 .addType(vk::VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, 1u)
191 .addType(vk::VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, 1u)
192 .build(vk, device, vk::VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT, 1u));
193 vk::Unique<vk::VkDescriptorSet> descriptorSet (makeDescriptorSet(vk, device, *descriptorPool, *descriptorSetLayout));
197 vk::VkDescriptorBufferInfo descRefUniform = makeDescriptorBufferInfo(**refUniform, 0, refUniformSize);
198 vk::VkDescriptorBufferInfo descBuffer = makeDescriptorBufferInfo(**helperBuffer, 0, helperBufferSize);
199 vk::VkDescriptorImageInfo descSampledImg = makeDescriptorImageInfo(*sampler, *imageView, vk::VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL);
201 vk::DescriptorSetUpdateBuilder()
202 .writeSingle(*descriptorSet, vk::DescriptorSetUpdateBuilder::Location::binding(0u), vk::VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, &descSampledImg)
203 .writeSingle(*descriptorSet, vk::DescriptorSetUpdateBuilder::Location::binding(1u), vk::VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, &descBuffer)
204 .writeSingle(*descriptorSet, vk::DescriptorSetUpdateBuilder::Location::binding(2u), vk::VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, &descRefUniform)
205 .update(vk, device);
209 vk::Unique<vk::VkPipelineLayout> pipelineLayout (makePipelineLayout(vk, device, *descriptorSetLayout));
211 vk::Unique<vk::VkCommandPool> cmdPool (makeCommandPool(vk, device, PROTECTION_ENABLED, queueFamilyIndex));
215 const vk::Unique<vk::VkFence> fence (vk::createFence(vk, device));
216 vk::Unique<vk::VkPipeline> resetSSBOPipeline (makeComputePipeline(vk, device, *pipelineLayout, *resetSSBOShader, DE_NULL));
217 vk::Unique<vk::VkCommandBuffer> resetCmdBuffer (vk::allocateCommandBuffer(vk, device, *cmdPool, vk::VK_COMMAND_BUFFER_LEVEL_PRIMARY));
218 beginCommandBuffer(vk, *resetCmdBuffer);
220 vk.cmdBindPipeline(*resetCmdBuffer, vk::VK_PIPELINE_BIND_POINT_COMPUTE, *resetSSBOPipeline);
221 vk.cmdBindDescriptorSets(*resetCmdBuffer, vk::VK_PIPELINE_BIND_POINT_COMPUTE, *pipelineLayout, 0u, 1u, &*descriptorSet, 0u, DE_NULL);
222 vk.cmdDispatch(*resetCmdBuffer, 1u, 1u, 1u);
224 VK_CHECK(vk.endCommandBuffer(*resetCmdBuffer));
229 vk::VkResult queueSubmitResult;
231 const vk::Unique<vk::VkFence> fence (vk::createFence(vk, device));
232 vk::Unique<vk::VkPipeline> validationPipeline (makeComputePipeline(vk, device, *pipelineLayout, *validatorShader, DE_NULL));
233 vk::Unique<vk::VkCommandBuffer> cmdBuffer (vk::allocateCommandBuffer(vk, device, *cmdPool, vk::VK_COMMAND_BUFFER_LEVEL_PRIMARY));
235 beginCommandBuffer(vk, *cmdBuffer);
237 vk.cmdBindPipeline(*cmdBuffer, vk::VK_PIPELINE_BIND_POINT_COMPUTE, *validationPipeline);
238 vk.cmdBindDescriptorSets(*cmdBuffer, vk::VK_PIPELINE_BIND_POINT_COMPUTE, *pipelineLayout, 0u, 1u, &*descriptorSet, 0u, DE_NULL);
239 vk.cmdDispatch(*cmdBuffer, 1u, 1u, 1u);
241 VK_CHECK(vk.endCommandBuffer(*cmdBuffer));
247 if (queueSubmitResult == vk::VK_TIMEOUT)