[Mesa-dev] [PATCH 2/5] anv: Move Create*Pipelines into genX_cmd_buffer.c

Jason Ekstrand jason at jlekstrand.net
Sat Oct 8 17:52:25 UTC 2016


On Oct 8, 2016 10:36 AM, "Michael Schellenberger Costa" <
mschellenbergercosta at googlemail.com> wrote:
>
> Hi Jason,
>
>
> is there a reason that the first counter "i" is declared outside of the
loop?

Not really. I just moved the code that was there before.  I have no idea
why it was written that way.

>
> --Michael
>
>
>
> On 08.10.2016 18:18, Jason Ekstrand wrote:
>>
>> Now that we don't have meta, we have no need for a gen-agnostic pipeline
>> create path.  We can, instead, just generate one Create*Pipelines
function
>> per gen and be done with it.
>>
>> Signed-off-by: Jason Ekstrand <jason at jlekstrand.net>
>> ---
>>   src/intel/vulkan/anv_genX.h      |   7 ---
>>   src/intel/vulkan/anv_pipeline.c  | 106
---------------------------------------
>>   src/intel/vulkan/anv_private.h   |   7 ---
>>   src/intel/vulkan/genX_pipeline.c |  63 ++++++++++++++++++++++-
>>   4 files changed, 61 insertions(+), 122 deletions(-)
>>
>> diff --git a/src/intel/vulkan/anv_genX.h b/src/intel/vulkan/anv_genX.h
>> index b862c06..e6cef53 100644
>> --- a/src/intel/vulkan/anv_genX.h
>> +++ b/src/intel/vulkan/anv_genX.h
>> @@ -65,12 +65,5 @@ genX(graphics_pipeline_create)(VkDevice _device,
>>                                  const VkAllocationCallbacks *alloc,
>>                                  VkPipeline *pPipeline);
>>   -VkResult
>> -genX(compute_pipeline_create)(VkDevice _device,
>> -                              struct anv_pipeline_cache *cache,
>> -                              const VkComputePipelineCreateInfo
*pCreateInfo,
>> -                              const VkAllocationCallbacks *alloc,
>> -                              VkPipeline *pPipeline);
>> -
>>   void genX(blorp_exec)(struct blorp_batch *batch,
>>                         const struct blorp_params *params);
>> diff --git a/src/intel/vulkan/anv_pipeline.c
b/src/intel/vulkan/anv_pipeline.c
>> index 6a364ff..bd1bf38 100644
>> --- a/src/intel/vulkan/anv_pipeline.c
>> +++ b/src/intel/vulkan/anv_pipeline.c
>> @@ -1116,109 +1116,3 @@ compile_fail:
>>        return result;
>>   }
>> -
>> -VkResult
>> -anv_graphics_pipeline_create(
>> -   VkDevice _device,
>> -   VkPipelineCache _cache,
>> -   const VkGraphicsPipelineCreateInfo *pCreateInfo,
>> -   const VkAllocationCallbacks *pAllocator,
>> -   VkPipeline *pPipeline)
>> -{
>> -   ANV_FROM_HANDLE(anv_device, device, _device);
>> -   ANV_FROM_HANDLE(anv_pipeline_cache, cache, _cache);
>> -
>> -   switch (device->info.gen) {
>> -   case 7:
>> -      if (device->info.is_haswell)
>> -         return gen75_graphics_pipeline_create(_device, cache,
pCreateInfo, pAllocator, pPipeline);
>> -      else
>> -         return gen7_graphics_pipeline_create(_device, cache,
pCreateInfo, pAllocator, pPipeline);
>> -   case 8:
>> -      return gen8_graphics_pipeline_create(_device, cache, pCreateInfo,
pAllocator, pPipeline);
>> -   case 9:
>> -      return gen9_graphics_pipeline_create(_device, cache, pCreateInfo,
pAllocator, pPipeline);
>> -   default:
>> -      unreachable("unsupported gen\n");
>> -   }
>> -}
>> -
>> -VkResult anv_CreateGraphicsPipelines(
>> -    VkDevice                                    _device,
>> -    VkPipelineCache                             pipelineCache,
>> -    uint32_t                                    count,
>> -    const VkGraphicsPipelineCreateInfo*         pCreateInfos,
>> -    const VkAllocationCallbacks*                pAllocator,
>> -    VkPipeline*                                 pPipelines)
>> -{
>> -   VkResult result = VK_SUCCESS;
>> -
>> -   unsigned i = 0;
>> -   for (; i < count; i++) {
>> -      result = anv_graphics_pipeline_create(_device,
>> -                                            pipelineCache,
>> -                                            &pCreateInfos[i],
>> -                                            pAllocator, &pPipelines[i]);
>> -      if (result != VK_SUCCESS) {
>> -         for (unsigned j = 0; j < i; j++) {
>> -            anv_DestroyPipeline(_device, pPipelines[j], pAllocator);
>> -         }
>> -
>> -         return result;
>> -      }
>> -   }
>> -
>> -   return VK_SUCCESS;
>> -}
>> -
>> -static VkResult anv_compute_pipeline_create(
>> -    VkDevice                                    _device,
>> -    VkPipelineCache                             _cache,
>> -    const VkComputePipelineCreateInfo*          pCreateInfo,
>> -    const VkAllocationCallbacks*                pAllocator,
>> -    VkPipeline*                                 pPipeline)
>> -{
>> -   ANV_FROM_HANDLE(anv_device, device, _device);
>> -   ANV_FROM_HANDLE(anv_pipeline_cache, cache, _cache);
>> -
>> -   switch (device->info.gen) {
>> -   case 7:
>> -      if (device->info.is_haswell)
>> -         return gen75_compute_pipeline_create(_device, cache,
pCreateInfo, pAllocator, pPipeline);
>> -      else
>> -         return gen7_compute_pipeline_create(_device, cache,
pCreateInfo, pAllocator, pPipeline);
>> -   case 8:
>> -      return gen8_compute_pipeline_create(_device, cache, pCreateInfo,
pAllocator, pPipeline);
>> -   case 9:
>> -      return gen9_compute_pipeline_create(_device, cache, pCreateInfo,
pAllocator, pPipeline);
>> -   default:
>> -      unreachable("unsupported gen\n");
>> -   }
>> -}
>> -
>> -VkResult anv_CreateComputePipelines(
>> -    VkDevice                                    _device,
>> -    VkPipelineCache                             pipelineCache,
>> -    uint32_t                                    count,
>> -    const VkComputePipelineCreateInfo*          pCreateInfos,
>> -    const VkAllocationCallbacks*                pAllocator,
>> -    VkPipeline*                                 pPipelines)
>> -{
>> -   VkResult result = VK_SUCCESS;
>> -
>> -   unsigned i = 0;
>> -   for (; i < count; i++) {
>> -      result = anv_compute_pipeline_create(_device, pipelineCache,
>> -                                           &pCreateInfos[i],
>> -                                           pAllocator, &pPipelines[i]);
>> -      if (result != VK_SUCCESS) {
>> -         for (unsigned j = 0; j < i; j++) {
>> -            anv_DestroyPipeline(_device, pPipelines[j], pAllocator);
>> -         }
>> -
>> -         return result;
>> -      }
>> -   }
>> -
>> -   return VK_SUCCESS;
>> -}
>> diff --git a/src/intel/vulkan/anv_private.h
b/src/intel/vulkan/anv_private.h
>> index 3545acd..761c7f3 100644
>> --- a/src/intel/vulkan/anv_private.h
>> +++ b/src/intel/vulkan/anv_private.h
>> @@ -1524,13 +1524,6 @@ anv_pipeline_compile_cs(struct anv_pipeline
*pipeline,
>>                           const char *entrypoint,
>>                           const VkSpecializationInfo *spec_info);
>>   -VkResult
>> -anv_graphics_pipeline_create(VkDevice device,
>> -                             VkPipelineCache cache,
>> -                             const VkGraphicsPipelineCreateInfo
*pCreateInfo,
>> -                             const VkAllocationCallbacks *alloc,
>> -                             VkPipeline *pPipeline);
>> -
>>   struct anv_format {
>>      enum isl_format isl_format:16;
>>      struct isl_swizzle swizzle;
>> diff --git a/src/intel/vulkan/genX_pipeline.c
b/src/intel/vulkan/genX_pipeline.c
>> index dce7c6a..2a4dd8e 100644
>> --- a/src/intel/vulkan/genX_pipeline.c
>> +++ b/src/intel/vulkan/genX_pipeline.c
>> @@ -26,8 +26,8 @@
>>   #include "genxml/gen_macros.h"
>>   #include "genxml/genX_pack.h"
>>   -VkResult
>> -genX(compute_pipeline_create)(
>> +static VkResult
>> +compute_pipeline_create(
>>       VkDevice                                    _device,
>>       struct anv_pipeline_cache *                 cache,
>>       const VkComputePipelineCreateInfo*          pCreateInfo,
>> @@ -133,3 +133,62 @@ genX(compute_pipeline_create)(
>>        return VK_SUCCESS;
>>   }
>> +
>> +VkResult genX(CreateGraphicsPipelines)(
>> +    VkDevice                                    _device,
>> +    VkPipelineCache                             pipelineCache,
>> +    uint32_t                                    count,
>> +    const VkGraphicsPipelineCreateInfo*         pCreateInfos,
>> +    const VkAllocationCallbacks*                pAllocator,
>> +    VkPipeline*                                 pPipelines)
>> +{
>> +   ANV_FROM_HANDLE(anv_pipeline_cache, pipeline_cache, pipelineCache);
>> +
>> +   VkResult result = VK_SUCCESS;
>> +
>> +   unsigned i = 0;
>> +   for (; i < count; i++) {
>> +      result = genX(graphics_pipeline_create)(_device,
>> +                                              pipeline_cache,
>> +                                              &pCreateInfos[i],
>> +                                              pAllocator,
&pPipelines[i]);
>> +      if (result != VK_SUCCESS) {
>> +         for (unsigned j = 0; j < i; j++) {
>> +            anv_DestroyPipeline(_device, pPipelines[j], pAllocator);
>> +         }
>> +
>> +         return result;
>> +      }
>> +   }
>> +
>> +   return VK_SUCCESS;
>> +}
>> +
>> +VkResult genX(CreateComputePipelines)(
>> +    VkDevice                                    _device,
>> +    VkPipelineCache                             pipelineCache,
>> +    uint32_t                                    count,
>> +    const VkComputePipelineCreateInfo*          pCreateInfos,
>> +    const VkAllocationCallbacks*                pAllocator,
>> +    VkPipeline*                                 pPipelines)
>> +{
>> +   ANV_FROM_HANDLE(anv_pipeline_cache, pipeline_cache, pipelineCache);
>> +
>> +   VkResult result = VK_SUCCESS;
>> +
>> +   unsigned i = 0;
>> +   for (; i < count; i++) {
>> +      result = compute_pipeline_create(_device, pipeline_cache,
>> +                                       &pCreateInfos[i],
>> +                                       pAllocator, &pPipelines[i]);
>> +      if (result != VK_SUCCESS) {
>> +         for (unsigned j = 0; j < i; j++) {
>> +            anv_DestroyPipeline(_device, pPipelines[j], pAllocator);
>> +         }
>> +
>> +         return result;
>> +      }
>> +   }
>> +
>> +   return VK_SUCCESS;
>> +}
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20161008/5f9c85d9/attachment-0001.html>


More information about the mesa-dev mailing list