anv/gen7: DispatchIndirect requires cmd parser 5
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
This commit is contained in:
@@ -638,6 +638,24 @@ void genX(CmdDrawIndexedIndirect)(
|
|||||||
.PrimitiveTopologyType = pipeline->topology);
|
.PrimitiveTopologyType = pipeline->topology);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if GEN_GEN == 7
|
||||||
|
|
||||||
|
static bool
|
||||||
|
verify_cmd_parser(const struct anv_device *device,
|
||||||
|
int required_version,
|
||||||
|
const char *function)
|
||||||
|
{
|
||||||
|
if (device->instance->physicalDevice.cmd_parser_version < required_version) {
|
||||||
|
vk_errorf(VK_ERROR_FEATURE_NOT_PRESENT,
|
||||||
|
"cmd parser version %d is required for %s",
|
||||||
|
required_version, function);
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
void genX(CmdDispatch)(
|
void genX(CmdDispatch)(
|
||||||
VkCommandBuffer commandBuffer,
|
VkCommandBuffer commandBuffer,
|
||||||
@@ -699,6 +717,14 @@ void genX(CmdDispatchIndirect)(
|
|||||||
uint32_t bo_offset = buffer->offset + offset;
|
uint32_t bo_offset = buffer->offset + offset;
|
||||||
struct anv_batch *batch = &cmd_buffer->batch;
|
struct anv_batch *batch = &cmd_buffer->batch;
|
||||||
|
|
||||||
|
#if GEN_GEN == 7
|
||||||
|
/* Linux 4.4 added command parser version 5 which allows the GPGPU
|
||||||
|
* indirect dispatch registers to be written.
|
||||||
|
*/
|
||||||
|
if (verify_cmd_parser(cmd_buffer->device, 5, "vkCmdDispatchIndirect"))
|
||||||
|
return;
|
||||||
|
#endif
|
||||||
|
|
||||||
if (prog_data->uses_num_work_groups) {
|
if (prog_data->uses_num_work_groups) {
|
||||||
cmd_buffer->state.num_workgroups_offset = bo_offset;
|
cmd_buffer->state.num_workgroups_offset = bo_offset;
|
||||||
cmd_buffer->state.num_workgroups_bo = bo;
|
cmd_buffer->state.num_workgroups_bo = bo;
|
||||||
|
Reference in New Issue
Block a user