diff --git a/src/nouveau/vulkan/nvk_cmd_dispatch.c b/src/nouveau/vulkan/nvk_cmd_dispatch.c index 0341c1e3bda..582443e0e16 100644 --- a/src/nouveau/vulkan/nvk_cmd_dispatch.c +++ b/src/nouveau/vulkan/nvk_cmd_dispatch.c @@ -278,6 +278,9 @@ mme_store_global_vec3(struct mme_builder *b, void nvk_mme_dispatch_indirect(struct nvk_device *dev, struct mme_builder *b) { + if (dev->ctx->eng3d.cls < TURING_A) + return; + struct mme_value local_size = mme_load(b); struct mme_value64 dispatch_addr = mme_load_addr64(b); struct mme_value64 root_desc_addr = mme_load_addr64(b); @@ -312,6 +315,9 @@ nvk_CmdDispatchIndirect(VkCommandBuffer commandBuffer, VK_FROM_HANDLE(nvk_buffer, buffer, _buffer); struct nvk_descriptor_state *desc = &cmd->state.cs.descriptors; + /* TODO: Indirect dispatch pre-Turing */ + assert(nvk_cmd_buffer_device(cmd)->ctx->eng3d.cls >= TURING_A); + desc->root.cs.base_group[0] = 0; desc->root.cs.base_group[1] = 0; desc->root.cs.base_group[2] = 0; diff --git a/src/nouveau/vulkan/nvk_cmd_draw.c b/src/nouveau/vulkan/nvk_cmd_draw.c index 6f13f140a6a..d6fd852144a 100644 --- a/src/nouveau/vulkan/nvk_cmd_draw.c +++ b/src/nouveau/vulkan/nvk_cmd_draw.c @@ -1674,6 +1674,9 @@ nvk_CmdDrawIndexed(VkCommandBuffer commandBuffer, void nvk_mme_draw_indirect(struct nvk_device *dev, struct mme_builder *b) { + if (dev->ctx->eng3d.cls < TURING_A) + return; + struct mme_value begin = mme_load(b); struct mme_value64 draw_addr = mme_load_addr64(b); struct mme_value draw_count = mme_load(b); @@ -1702,6 +1705,9 @@ nvk_CmdDrawIndirect(VkCommandBuffer commandBuffer, const struct vk_dynamic_graphics_state *dyn = &cmd->vk.dynamic_graphics_state; + /* TODO: Indirect draw pre-Turing */ + assert(nvk_cmd_buffer_3d_cls(cmd) >= TURING_A); + nvk_flush_gfx_state(cmd); uint32_t begin; @@ -1726,6 +1732,9 @@ nvk_CmdDrawIndirect(VkCommandBuffer commandBuffer, void nvk_mme_draw_indexed_indirect(struct nvk_device *dev, struct mme_builder *b) { + if (dev->ctx->eng3d.cls < TURING_A) + return; + struct mme_value begin = mme_load(b); struct mme_value64 draw_addr = mme_load_addr64(b); struct mme_value draw_count = mme_load(b); @@ -1754,6 +1763,9 @@ nvk_CmdDrawIndexedIndirect(VkCommandBuffer commandBuffer, const struct vk_dynamic_graphics_state *dyn = &cmd->vk.dynamic_graphics_state; + /* TODO: Indirect draw pre-Turing */ + assert(nvk_cmd_buffer_3d_cls(cmd) >= TURING_A); + nvk_flush_gfx_state(cmd); uint32_t begin; diff --git a/src/nouveau/vulkan/nvk_query_pool.c b/src/nouveau/vulkan/nvk_query_pool.c index 3bda1ad2f6d..f466f6db4cb 100644 --- a/src/nouveau/vulkan/nvk_query_pool.c +++ b/src/nouveau/vulkan/nvk_query_pool.c @@ -9,6 +9,7 @@ #include "util/os_time.h" #include "nouveau_bo.h" +#include "nouveau_context.h" #include "nvk_cl906f.h" #include "nvk_cl9097.h" @@ -535,6 +536,9 @@ nvk_GetQueryPoolResults(VkDevice device, void nvk_mme_copy_queries(struct nvk_device *dev, struct mme_builder *b) { + if (dev->ctx->eng3d.cls < TURING_A) + return; + struct mme_value64 dst_addr = mme_load_addr64(b); struct mme_value64 dst_stride = mme_load_addr64(b); struct mme_value64 avail_addr = mme_load_addr64(b); @@ -638,6 +642,9 @@ nvk_CmdCopyQueryPoolResults(VkCommandBuffer commandBuffer, VK_FROM_HANDLE(nvk_query_pool, pool, queryPool); VK_FROM_HANDLE(nvk_buffer, dst_buffer, dstBuffer); + /* TODO: vkCmdCopyQueryPoolResults() with a compute shader */ + assert(nvk_cmd_buffer_device(cmd)->ctx->eng3d.cls >= TURING_A); + nvk_cmd_buffer_ref_bo(cmd, pool->bo); if (flags & VK_QUERY_RESULT_WAIT_BIT) {