diff --git a/src/nouveau/vulkan/nvk_graphics_pipeline.c b/src/nouveau/vulkan/nvk_graphics_pipeline.c index 04f0ce2c91b..f7e9662acc7 100644 --- a/src/nouveau/vulkan/nvk_graphics_pipeline.c +++ b/src/nouveau/vulkan/nvk_graphics_pipeline.c @@ -42,7 +42,7 @@ emit_pipeline_rs_state(struct nv_push *p, .geometry_guardband_z = GEOMETRY_GUARDBAND_Z_SAME_AS_XY_GUARDBAND, }); - assert(rs->rasterization_stream == 0); + P_IMMD(p, NV9097, SET_RASTER_INPUT, rs->rasterization_stream); assert(rs->line.mode == VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT); } diff --git a/src/nouveau/vulkan/nvk_physical_device.c b/src/nouveau/vulkan/nvk_physical_device.c index 92aff5e83b8..6c4035d3af6 100644 --- a/src/nouveau/vulkan/nvk_physical_device.c +++ b/src/nouveau/vulkan/nvk_physical_device.c @@ -230,7 +230,7 @@ nvk_GetPhysicalDeviceProperties2(VkPhysicalDevice physicalDevice, } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT: { VkPhysicalDeviceTransformFeedbackPropertiesEXT *p = (void *)ext; - p->maxTransformFeedbackStreams = 0; + p->maxTransformFeedbackStreams = 4; p->maxTransformFeedbackBuffers = 4; p->maxTransformFeedbackBufferSize = UINT32_MAX; p->maxTransformFeedbackStreamDataSize = 2048; @@ -238,7 +238,7 @@ nvk_GetPhysicalDeviceProperties2(VkPhysicalDevice physicalDevice, p->maxTransformFeedbackBufferDataStride = 2048; p->transformFeedbackQueries = false; p->transformFeedbackStreamsLinesTriangles = false; - p->transformFeedbackRasterizationStreamSelect = false; + p->transformFeedbackRasterizationStreamSelect = true; p->transformFeedbackDraw = true; break; } @@ -483,7 +483,7 @@ nvk_get_device_features(const struct nv_device_info *dev, /* VK_EXT_transform_feedback */ .transformFeedback = dev->cls_eng3d >= TURING_A, - .geometryStreams = false, + .geometryStreams = dev->cls_eng3d >= TURING_A, /* VK_EXT_vertex_attribute_divisor */ .vertexAttributeInstanceRateDivisor = true, diff --git a/src/nouveau/vulkan/nvk_shader.c b/src/nouveau/vulkan/nvk_shader.c index 1c682bda1f0..6cb77c3e8c9 100644 --- a/src/nouveau/vulkan/nvk_shader.c +++ b/src/nouveau/vulkan/nvk_shader.c @@ -69,6 +69,7 @@ nvk_physical_device_spirv_options(const struct nvk_physical_device *pdevice, .image_write_without_format = true, .physical_storage_buffer_address = true, .transform_feedback = true, + .geometry_streams = true, }, .ssbo_addr_format = nvk_buffer_addr_format(rs->storage_buffers), .phys_ssbo_addr_format = nir_address_format_64bit_global,