lavapipe: add basic vulkan device group support.

This just add the basic for vulkan device group support, base
dispatch, and dummy funcs

Reviewed-by: Adam Jackson <ajax@redhat.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Reviweed-by: Eric Anholt <eric@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8154>
This commit is contained in:
Dave Airlie 2020-12-18 12:29:59 +10:00
parent 7de0d93fcd
commit 6af87193c4
5 changed files with 45 additions and 2 deletions

View file

@ -793,6 +793,9 @@ void lvp_CmdDispatch(
cmd->u.dispatch.x = x;
cmd->u.dispatch.y = y;
cmd->u.dispatch.z = z;
cmd->u.dispatch.base_x = 0;
cmd->u.dispatch.base_y = 0;
cmd->u.dispatch.base_z = 0;
cmd_buf_queue(cmd_buffer, cmd);
}
@ -1764,3 +1767,36 @@ void lvp_CmdDrawIndirectByteCountEXT(
cmd_buf_queue(cmd_buffer, cmd);
}
void lvp_CmdSetDeviceMask(
VkCommandBuffer commandBuffer,
uint32_t deviceMask)
{
/* No-op */
}
void lvp_CmdDispatchBase(
VkCommandBuffer commandBuffer,
uint32_t base_x,
uint32_t base_y,
uint32_t base_z,
uint32_t x,
uint32_t y,
uint32_t z)
{
LVP_FROM_HANDLE(lvp_cmd_buffer, cmd_buffer, commandBuffer);
struct lvp_cmd_buffer_entry *cmd;
cmd = cmd_buf_entry_alloc(cmd_buffer, LVP_CMD_DISPATCH);
if (!cmd)
return;
cmd->u.dispatch.x = x;
cmd->u.dispatch.y = y;
cmd->u.dispatch.z = z;
cmd->u.dispatch.base_x = base_x;
cmd->u.dispatch.base_y = base_y;
cmd->u.dispatch.base_z = base_z;
cmd_buf_queue(cmd_buffer, cmd);
}

View file

@ -1948,6 +1948,9 @@ static void handle_dispatch(struct lvp_cmd_buffer_entry *cmd,
state->dispatch_info.grid[0] = cmd->u.dispatch.x;
state->dispatch_info.grid[1] = cmd->u.dispatch.y;
state->dispatch_info.grid[2] = cmd->u.dispatch.z;
state->dispatch_info.grid_base[0] = cmd->u.dispatch.base_x;
state->dispatch_info.grid_base[1] = cmd->u.dispatch.base_y;
state->dispatch_info.grid_base[2] = cmd->u.dispatch.base_z;
state->dispatch_info.indirect = NULL;
state->pctx->launch_grid(state->pctx, &state->dispatch_info);
}

View file

@ -63,8 +63,8 @@ EXTENSIONS = [
Extension('VK_KHR_dedicated_allocation', 1, True),
Extension('VK_KHR_depth_stencil_resolve', 1, False),
Extension('VK_KHR_descriptor_update_template', 1, True),
Extension('VK_KHR_device_group', 1, False),
Extension('VK_KHR_device_group_creation', 1, False),
Extension('VK_KHR_device_group', 1, True),
Extension('VK_KHR_device_group_creation', 1, True),
Extension('VK_KHR_draw_indirect_count', 1, True),
Extension('VK_KHR_driver_properties', 1, True),
Extension('VK_KHR_external_fence', 1, False),

View file

@ -510,6 +510,7 @@ lvp_shader_compile_to_ir(struct lvp_pipeline *pipeline,
.post_depth_coverage = true,
.transform_feedback = true,
.geometry_streams = true,
.device_group = true,
},
.ubo_addr_format = nir_address_format_32bit_index_offset,
.ssbo_addr_format = nir_address_format_32bit_index_offset,

View file

@ -756,6 +756,9 @@ struct lvp_cmd_dispatch {
uint32_t x;
uint32_t y;
uint32_t z;
uint32_t base_x;
uint32_t base_y;
uint32_t base_z;
};
struct lvp_cmd_dispatch_indirect {