mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 11:00:11 +01:00
nvk: Disable indirect draw/dispatch and query copy MMEs for now
These all rely on mme_tu104_read_fifoed() which isn't available before Turing. They're also really register-expensive and we can't compile them without paring things down a bit. Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326>
This commit is contained in:
parent
731cfb86e7
commit
dabc4f6bcc
3 changed files with 25 additions and 0 deletions
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue