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);
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;
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);
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;
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);
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;
#include "util/os_time.h"
#include "nouveau_bo.h"
+#include "nouveau_context.h"
#include "nvk_cl906f.h"
#include "nvk_cl9097.h"
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);
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) {