nvk: Support transform feedback geometry streams

We just need to set the correct limits and features.  The meaningful
change here is the selected stream for rasterization which is configured
through the graphics pipeline.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326>
This commit is contained in:
George Ouzounoudis 2022-11-26 18:32:22 +02:00 committed by Marge Bot
parent bdd4a65718
commit 2b3730d271
3 changed files with 5 additions and 4 deletions

View file

@ -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);
}

View file

@ -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,

View file

@ -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,