<p dir="ltr"></p>
<p dir="ltr">On Oct 8, 2016 10:36 AM, "Michael Schellenberger Costa" <<a href="mailto:mschellenbergercosta@googlemail.com">mschellenbergercosta@googlemail.com</a>> wrote:<br>
><br>
> Hi Jason,<br>
><br>
><br>
> is there a reason that the first counter "i" is declared outside of the loop?</p>
<p dir="ltr">Not really. I just moved the code that was there before. I have no idea why it was written that way.</p>
<p dir="ltr">><br>
> --Michael<br>
><br>
><br>
><br>
> On 08.10.2016 18:18, Jason Ekstrand wrote:<br>
>><br>
>> Now that we don't have meta, we have no need for a gen-agnostic pipeline<br>
>> create path. We can, instead, just generate one Create*Pipelines function<br>
>> per gen and be done with it.<br>
>><br>
>> Signed-off-by: Jason Ekstrand <<a href="mailto:jason@jlekstrand.net">jason@jlekstrand.net</a>><br>
>> ---<br>
>> src/intel/vulkan/anv_genX.h | 7 ---<br>
>> src/intel/vulkan/anv_pipeline.c | 106 ---------------------------------------<br>
>> src/intel/vulkan/anv_private.h | 7 ---<br>
>> src/intel/vulkan/genX_pipeline.c | 63 ++++++++++++++++++++++-<br>
>> 4 files changed, 61 insertions(+), 122 deletions(-)<br>
>><br>
>> diff --git a/src/intel/vulkan/anv_genX.h b/src/intel/vulkan/anv_genX.h<br>
>> index b862c06..e6cef53 100644<br>
>> --- a/src/intel/vulkan/anv_genX.h<br>
>> +++ b/src/intel/vulkan/anv_genX.h<br>
>> @@ -65,12 +65,5 @@ genX(graphics_pipeline_create)(VkDevice _device,<br>
>> const VkAllocationCallbacks *alloc,<br>
>> VkPipeline *pPipeline);<br>
>> -VkResult<br>
>> -genX(compute_pipeline_create)(VkDevice _device,<br>
>> - struct anv_pipeline_cache *cache,<br>
>> - const VkComputePipelineCreateInfo *pCreateInfo,<br>
>> - const VkAllocationCallbacks *alloc,<br>
>> - VkPipeline *pPipeline);<br>
>> -<br>
>> void genX(blorp_exec)(struct blorp_batch *batch,<br>
>> const struct blorp_params *params);<br>
>> diff --git a/src/intel/vulkan/anv_pipeline.c b/src/intel/vulkan/anv_pipeline.c<br>
>> index 6a364ff..bd1bf38 100644<br>
>> --- a/src/intel/vulkan/anv_pipeline.c<br>
>> +++ b/src/intel/vulkan/anv_pipeline.c<br>
>> @@ -1116,109 +1116,3 @@ compile_fail:<br>
>> return result;<br>
>> }<br>
>> -<br>
>> -VkResult<br>
>> -anv_graphics_pipeline_create(<br>
>> - VkDevice _device,<br>
>> - VkPipelineCache _cache,<br>
>> - const VkGraphicsPipelineCreateInfo *pCreateInfo,<br>
>> - const VkAllocationCallbacks *pAllocator,<br>
>> - VkPipeline *pPipeline)<br>
>> -{<br>
>> - ANV_FROM_HANDLE(anv_device, device, _device);<br>
>> - ANV_FROM_HANDLE(anv_pipeline_cache, cache, _cache);<br>
>> -<br>
>> - switch (device->info.gen) {<br>
>> - case 7:<br>
>> - if (device->info.is_haswell)<br>
>> - return gen75_graphics_pipeline_create(_device, cache, pCreateInfo, pAllocator, pPipeline);<br>
>> - else<br>
>> - return gen7_graphics_pipeline_create(_device, cache, pCreateInfo, pAllocator, pPipeline);<br>
>> - case 8:<br>
>> - return gen8_graphics_pipeline_create(_device, cache, pCreateInfo, pAllocator, pPipeline);<br>
>> - case 9:<br>
>> - return gen9_graphics_pipeline_create(_device, cache, pCreateInfo, pAllocator, pPipeline);<br>
>> - default:<br>
>> - unreachable("unsupported gen\n");<br>
>> - }<br>
>> -}<br>
>> -<br>
>> -VkResult anv_CreateGraphicsPipelines(<br>
>> - VkDevice _device,<br>
>> - VkPipelineCache pipelineCache,<br>
>> - uint32_t count,<br>
>> - const VkGraphicsPipelineCreateInfo* pCreateInfos,<br>
>> - const VkAllocationCallbacks* pAllocator,<br>
>> - VkPipeline* pPipelines)<br>
>> -{<br>
>> - VkResult result = VK_SUCCESS;<br>
>> -<br>
>> - unsigned i = 0;<br>
>> - for (; i < count; i++) {<br>
>> - result = anv_graphics_pipeline_create(_device,<br>
>> - pipelineCache,<br>
>> - &pCreateInfos[i],<br>
>> - pAllocator, &pPipelines[i]);<br>
>> - if (result != VK_SUCCESS) {<br>
>> - for (unsigned j = 0; j < i; j++) {<br>
>> - anv_DestroyPipeline(_device, pPipelines[j], pAllocator);<br>
>> - }<br>
>> -<br>
>> - return result;<br>
>> - }<br>
>> - }<br>
>> -<br>
>> - return VK_SUCCESS;<br>
>> -}<br>
>> -<br>
>> -static VkResult anv_compute_pipeline_create(<br>
>> - VkDevice _device,<br>
>> - VkPipelineCache _cache,<br>
>> - const VkComputePipelineCreateInfo* pCreateInfo,<br>
>> - const VkAllocationCallbacks* pAllocator,<br>
>> - VkPipeline* pPipeline)<br>
>> -{<br>
>> - ANV_FROM_HANDLE(anv_device, device, _device);<br>
>> - ANV_FROM_HANDLE(anv_pipeline_cache, cache, _cache);<br>
>> -<br>
>> - switch (device->info.gen) {<br>
>> - case 7:<br>
>> - if (device->info.is_haswell)<br>
>> - return gen75_compute_pipeline_create(_device, cache, pCreateInfo, pAllocator, pPipeline);<br>
>> - else<br>
>> - return gen7_compute_pipeline_create(_device, cache, pCreateInfo, pAllocator, pPipeline);<br>
>> - case 8:<br>
>> - return gen8_compute_pipeline_create(_device, cache, pCreateInfo, pAllocator, pPipeline);<br>
>> - case 9:<br>
>> - return gen9_compute_pipeline_create(_device, cache, pCreateInfo, pAllocator, pPipeline);<br>
>> - default:<br>
>> - unreachable("unsupported gen\n");<br>
>> - }<br>
>> -}<br>
>> -<br>
>> -VkResult anv_CreateComputePipelines(<br>
>> - VkDevice _device,<br>
>> - VkPipelineCache pipelineCache,<br>
>> - uint32_t count,<br>
>> - const VkComputePipelineCreateInfo* pCreateInfos,<br>
>> - const VkAllocationCallbacks* pAllocator,<br>
>> - VkPipeline* pPipelines)<br>
>> -{<br>
>> - VkResult result = VK_SUCCESS;<br>
>> -<br>
>> - unsigned i = 0;<br>
>> - for (; i < count; i++) {<br>
>> - result = anv_compute_pipeline_create(_device, pipelineCache,<br>
>> - &pCreateInfos[i],<br>
>> - pAllocator, &pPipelines[i]);<br>
>> - if (result != VK_SUCCESS) {<br>
>> - for (unsigned j = 0; j < i; j++) {<br>
>> - anv_DestroyPipeline(_device, pPipelines[j], pAllocator);<br>
>> - }<br>
>> -<br>
>> - return result;<br>
>> - }<br>
>> - }<br>
>> -<br>
>> - return VK_SUCCESS;<br>
>> -}<br>
>> diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_private.h<br>
>> index 3545acd..761c7f3 100644<br>
>> --- a/src/intel/vulkan/anv_private.h<br>
>> +++ b/src/intel/vulkan/anv_private.h<br>
>> @@ -1524,13 +1524,6 @@ anv_pipeline_compile_cs(struct anv_pipeline *pipeline,<br>
>> const char *entrypoint,<br>
>> const VkSpecializationInfo *spec_info);<br>
>> -VkResult<br>
>> -anv_graphics_pipeline_create(VkDevice device,<br>
>> - VkPipelineCache cache,<br>
>> - const VkGraphicsPipelineCreateInfo *pCreateInfo,<br>
>> - const VkAllocationCallbacks *alloc,<br>
>> - VkPipeline *pPipeline);<br>
>> -<br>
>> struct anv_format {<br>
>> enum isl_format isl_format:16;<br>
>> struct isl_swizzle swizzle;<br>
>> diff --git a/src/intel/vulkan/genX_pipeline.c b/src/intel/vulkan/genX_pipeline.c<br>
>> index dce7c6a..2a4dd8e 100644<br>
>> --- a/src/intel/vulkan/genX_pipeline.c<br>
>> +++ b/src/intel/vulkan/genX_pipeline.c<br>
>> @@ -26,8 +26,8 @@<br>
>> #include "genxml/gen_macros.h"<br>
>> #include "genxml/genX_pack.h"<br>
>> -VkResult<br>
>> -genX(compute_pipeline_create)(<br>
>> +static VkResult<br>
>> +compute_pipeline_create(<br>
>> VkDevice _device,<br>
>> struct anv_pipeline_cache * cache,<br>
>> const VkComputePipelineCreateInfo* pCreateInfo,<br>
>> @@ -133,3 +133,62 @@ genX(compute_pipeline_create)(<br>
>> return VK_SUCCESS;<br>
>> }<br>
>> +<br>
>> +VkResult genX(CreateGraphicsPipelines)(<br>
>> + VkDevice _device,<br>
>> + VkPipelineCache pipelineCache,<br>
>> + uint32_t count,<br>
>> + const VkGraphicsPipelineCreateInfo* pCreateInfos,<br>
>> + const VkAllocationCallbacks* pAllocator,<br>
>> + VkPipeline* pPipelines)<br>
>> +{<br>
>> + ANV_FROM_HANDLE(anv_pipeline_cache, pipeline_cache, pipelineCache);<br>
>> +<br>
>> + VkResult result = VK_SUCCESS;<br>
>> +<br>
>> + unsigned i = 0;<br>
>> + for (; i < count; i++) {<br>
>> + result = genX(graphics_pipeline_create)(_device,<br>
>> + pipeline_cache,<br>
>> + &pCreateInfos[i],<br>
>> + pAllocator, &pPipelines[i]);<br>
>> + if (result != VK_SUCCESS) {<br>
>> + for (unsigned j = 0; j < i; j++) {<br>
>> + anv_DestroyPipeline(_device, pPipelines[j], pAllocator);<br>
>> + }<br>
>> +<br>
>> + return result;<br>
>> + }<br>
>> + }<br>
>> +<br>
>> + return VK_SUCCESS;<br>
>> +}<br>
>> +<br>
>> +VkResult genX(CreateComputePipelines)(<br>
>> + VkDevice _device,<br>
>> + VkPipelineCache pipelineCache,<br>
>> + uint32_t count,<br>
>> + const VkComputePipelineCreateInfo* pCreateInfos,<br>
>> + const VkAllocationCallbacks* pAllocator,<br>
>> + VkPipeline* pPipelines)<br>
>> +{<br>
>> + ANV_FROM_HANDLE(anv_pipeline_cache, pipeline_cache, pipelineCache);<br>
>> +<br>
>> + VkResult result = VK_SUCCESS;<br>
>> +<br>
>> + unsigned i = 0;<br>
>> + for (; i < count; i++) {<br>
>> + result = compute_pipeline_create(_device, pipeline_cache,<br>
>> + &pCreateInfos[i],<br>
>> + pAllocator, &pPipelines[i]);<br>
>> + if (result != VK_SUCCESS) {<br>
>> + for (unsigned j = 0; j < i; j++) {<br>
>> + anv_DestroyPipeline(_device, pPipelines[j], pAllocator);<br>
>> + }<br>
>> +<br>
>> + return result;<br>
>> + }<br>
>> + }<br>
>> +<br>
>> + return VK_SUCCESS;<br>
>> +}<br>
><br>
></p>