anv: Add a single anv_genX switch macro
This should make future platform enabling a good bit easier and more reliable than having 3 of them. Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8676>
This commit is contained in:

committed by
Marge Bot

parent
9be7aa3fc8
commit
4e190bc2ae
@@ -384,41 +384,11 @@ VkResult anv_ResetCommandBuffer(
|
|||||||
return anv_cmd_buffer_reset(cmd_buffer);
|
return anv_cmd_buffer_reset(cmd_buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
#define anv_genX_call(devinfo, func, ...) \
|
|
||||||
switch ((devinfo)->gen) { \
|
|
||||||
case 7: \
|
|
||||||
if ((devinfo)->is_haswell) { \
|
|
||||||
gen75_##func(__VA_ARGS__); \
|
|
||||||
} else { \
|
|
||||||
gen7_##func(__VA_ARGS__); \
|
|
||||||
} \
|
|
||||||
break; \
|
|
||||||
case 8: \
|
|
||||||
gen8_##func(__VA_ARGS__); \
|
|
||||||
break; \
|
|
||||||
case 9: \
|
|
||||||
gen9_##func(__VA_ARGS__); \
|
|
||||||
break; \
|
|
||||||
case 11: \
|
|
||||||
gen11_##func(__VA_ARGS__); \
|
|
||||||
break; \
|
|
||||||
case 12: \
|
|
||||||
if (gen_device_info_is_12hp(devinfo)) { \
|
|
||||||
gen125_##func(__VA_ARGS__); \
|
|
||||||
} else { \
|
|
||||||
gen12_##func(__VA_ARGS__); \
|
|
||||||
} \
|
|
||||||
break; \
|
|
||||||
default: \
|
|
||||||
assert(!"Unknown hardware generation"); \
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
anv_cmd_buffer_emit_state_base_address(struct anv_cmd_buffer *cmd_buffer)
|
anv_cmd_buffer_emit_state_base_address(struct anv_cmd_buffer *cmd_buffer)
|
||||||
{
|
{
|
||||||
anv_genX_call(&cmd_buffer->device->info,
|
const struct gen_device_info *devinfo = &cmd_buffer->device->info;
|
||||||
cmd_buffer_emit_state_base_address,
|
anv_genX(devinfo, cmd_buffer_emit_state_base_address)(cmd_buffer);
|
||||||
cmd_buffer);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -430,18 +400,18 @@ anv_cmd_buffer_mark_image_written(struct anv_cmd_buffer *cmd_buffer,
|
|||||||
uint32_t base_layer,
|
uint32_t base_layer,
|
||||||
uint32_t layer_count)
|
uint32_t layer_count)
|
||||||
{
|
{
|
||||||
anv_genX_call(&cmd_buffer->device->info,
|
const struct gen_device_info *devinfo = &cmd_buffer->device->info;
|
||||||
cmd_buffer_mark_image_written,
|
anv_genX(devinfo, cmd_buffer_mark_image_written)(cmd_buffer, image,
|
||||||
cmd_buffer, image, aspect, aux_usage,
|
aspect, aux_usage,
|
||||||
level, base_layer, layer_count);
|
level, base_layer,
|
||||||
|
layer_count);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
anv_cmd_emit_conditional_render_predicate(struct anv_cmd_buffer *cmd_buffer)
|
anv_cmd_emit_conditional_render_predicate(struct anv_cmd_buffer *cmd_buffer)
|
||||||
{
|
{
|
||||||
anv_genX_call(&cmd_buffer->device->info,
|
const struct gen_device_info *devinfo = &cmd_buffer->device->info;
|
||||||
cmd_emit_conditional_render_predicate,
|
anv_genX(devinfo, cmd_emit_conditional_render_predicate)(cmd_buffer);
|
||||||
cmd_buffer);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
|
@@ -3151,33 +3151,7 @@ VkResult anv_CreateDevice(
|
|||||||
|
|
||||||
anv_scratch_pool_init(device, &device->scratch_pool);
|
anv_scratch_pool_init(device, &device->scratch_pool);
|
||||||
|
|
||||||
switch (device->info.gen) {
|
result = anv_genX(&device->info, init_device_state)(device);
|
||||||
case 7:
|
|
||||||
if (!device->info.is_haswell)
|
|
||||||
result = gen7_init_device_state(device);
|
|
||||||
else
|
|
||||||
result = gen75_init_device_state(device);
|
|
||||||
break;
|
|
||||||
case 8:
|
|
||||||
result = gen8_init_device_state(device);
|
|
||||||
break;
|
|
||||||
case 9:
|
|
||||||
result = gen9_init_device_state(device);
|
|
||||||
break;
|
|
||||||
case 11:
|
|
||||||
result = gen11_init_device_state(device);
|
|
||||||
break;
|
|
||||||
case 12:
|
|
||||||
if (gen_device_info_is_12hp(&device->info))
|
|
||||||
result = gen125_init_device_state(device);
|
|
||||||
else
|
|
||||||
result = gen12_init_device_state(device);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
/* Shouldn't get here as we don't create physical devices for any other
|
|
||||||
* gens. */
|
|
||||||
unreachable("unhandled gen");
|
|
||||||
}
|
|
||||||
if (result != VK_SUCCESS)
|
if (result != VK_SUCCESS)
|
||||||
goto fail_clear_value_bo;
|
goto fail_clear_value_bo;
|
||||||
|
|
||||||
|
@@ -4609,6 +4609,38 @@ VK_DEFINE_NONDISP_HANDLE_CASTS(anv_performance_configuration_intel, base,
|
|||||||
VkPerformanceConfigurationINTEL,
|
VkPerformanceConfigurationINTEL,
|
||||||
VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL)
|
VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL)
|
||||||
|
|
||||||
|
#define anv_genX(devinfo, thing) ({ \
|
||||||
|
__typeof(&gen9_##thing) genX_thing; \
|
||||||
|
switch ((devinfo)->gen) { \
|
||||||
|
case 7: \
|
||||||
|
if ((devinfo)->is_haswell) { \
|
||||||
|
genX_thing = &gen75_##thing; \
|
||||||
|
} else { \
|
||||||
|
genX_thing = &gen7_##thing; \
|
||||||
|
} \
|
||||||
|
break; \
|
||||||
|
case 8: \
|
||||||
|
genX_thing = &gen8_##thing; \
|
||||||
|
break; \
|
||||||
|
case 9: \
|
||||||
|
genX_thing = &gen9_##thing; \
|
||||||
|
break; \
|
||||||
|
case 11: \
|
||||||
|
genX_thing = &gen11_##thing; \
|
||||||
|
break; \
|
||||||
|
case 12: \
|
||||||
|
if (gen_device_info_is_12hp(devinfo)) { \
|
||||||
|
genX_thing = &gen125_##thing; \
|
||||||
|
} else { \
|
||||||
|
genX_thing = &gen12_##thing; \
|
||||||
|
} \
|
||||||
|
break; \
|
||||||
|
default: \
|
||||||
|
assert(!"Unknown hardware generation"); \
|
||||||
|
} \
|
||||||
|
genX_thing; \
|
||||||
|
})
|
||||||
|
|
||||||
/* Gen-specific function declarations */
|
/* Gen-specific function declarations */
|
||||||
#ifdef genX
|
#ifdef genX
|
||||||
# include "anv_genX.h"
|
# include "anv_genX.h"
|
||||||
|
Reference in New Issue
Block a user