anv: Move Create*Pipelines into genX_cmd_buffer.c
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@jlekstrand.net>
This commit is contained in:
@@ -73,12 +73,5 @@ genX(graphics_pipeline_create)(VkDevice _device,
|
|||||||
const VkAllocationCallbacks *alloc,
|
const VkAllocationCallbacks *alloc,
|
||||||
VkPipeline *pPipeline);
|
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,
|
void genX(blorp_exec)(struct blorp_batch *batch,
|
||||||
const struct blorp_params *params);
|
const struct blorp_params *params);
|
||||||
|
@@ -1118,109 +1118,3 @@ compile_fail:
|
|||||||
|
|
||||||
return result;
|
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;
|
|
||||||
}
|
|
||||||
|
@@ -1525,13 +1525,6 @@ anv_pipeline_compile_cs(struct anv_pipeline *pipeline,
|
|||||||
const char *entrypoint,
|
const char *entrypoint,
|
||||||
const VkSpecializationInfo *spec_info);
|
const VkSpecializationInfo *spec_info);
|
||||||
|
|
||||||
VkResult
|
|
||||||
anv_graphics_pipeline_create(VkDevice device,
|
|
||||||
VkPipelineCache cache,
|
|
||||||
const VkGraphicsPipelineCreateInfo *pCreateInfo,
|
|
||||||
const VkAllocationCallbacks *alloc,
|
|
||||||
VkPipeline *pPipeline);
|
|
||||||
|
|
||||||
struct anv_format {
|
struct anv_format {
|
||||||
enum isl_format isl_format:16;
|
enum isl_format isl_format:16;
|
||||||
struct isl_swizzle swizzle;
|
struct isl_swizzle swizzle;
|
||||||
|
@@ -26,8 +26,8 @@
|
|||||||
#include "genxml/gen_macros.h"
|
#include "genxml/gen_macros.h"
|
||||||
#include "genxml/genX_pack.h"
|
#include "genxml/genX_pack.h"
|
||||||
|
|
||||||
VkResult
|
static VkResult
|
||||||
genX(compute_pipeline_create)(
|
compute_pipeline_create(
|
||||||
VkDevice _device,
|
VkDevice _device,
|
||||||
struct anv_pipeline_cache * cache,
|
struct anv_pipeline_cache * cache,
|
||||||
const VkComputePipelineCreateInfo* pCreateInfo,
|
const VkComputePipelineCreateInfo* pCreateInfo,
|
||||||
@@ -133,3 +133,62 @@ genX(compute_pipeline_create)(
|
|||||||
|
|
||||||
return VK_SUCCESS;
|
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;
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user