Module: Mesa Branch: master Commit: fe3e571870e00e954ba0738eaa7a276255a77e63 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=fe3e571870e00e954ba0738eaa7a276255a77e63
Author: Connor Abbott <[email protected]> Date: Wed Sep 23 13:36:58 2020 +0200 tu: Support rasterizerDiscardEnable and RasterizationStreamSelect Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6962> --- src/freedreno/vulkan/tu_clear_blit.c | 3 +++ src/freedreno/vulkan/tu_cmd_buffer.c | 4 ---- src/freedreno/vulkan/tu_device.c | 2 +- src/freedreno/vulkan/tu_pipeline.c | 12 +++++++++++- 4 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/freedreno/vulkan/tu_clear_blit.c b/src/freedreno/vulkan/tu_clear_blit.c index a0f692444f8..f003988e0a9 100644 --- a/src/freedreno/vulkan/tu_clear_blit.c +++ b/src/freedreno/vulkan/tu_clear_blit.c @@ -465,6 +465,9 @@ r3d_common(struct tu_cmd_buffer *cmd, struct tu_cs *cs, bool blit, uint32_t num_ .clip_disable = 1)); tu_cs_emit_regs(cs, A6XX_GRAS_SU_CNTL()); // XXX msaa enable? + tu_cs_emit_regs(cs, A6XX_PC_RASTER_CNTL()); + tu_cs_emit_regs(cs, A6XX_VPC_UNKNOWN_9107()); + tu_cs_emit_regs(cs, A6XX_GRAS_SC_VIEWPORT_SCISSOR_TL(0, .x = 0, .y = 0), A6XX_GRAS_SC_VIEWPORT_SCISSOR_BR(0, .x = 0x7fff, .y = 0x7fff)); diff --git a/src/freedreno/vulkan/tu_cmd_buffer.c b/src/freedreno/vulkan/tu_cmd_buffer.c index a152965274c..2b8394f9d3f 100644 --- a/src/freedreno/vulkan/tu_cmd_buffer.c +++ b/src/freedreno/vulkan/tu_cmd_buffer.c @@ -771,15 +771,11 @@ tu6_init_hw(struct tu_cmd_buffer *cmd, struct tu_cs *cs) tu_cs_emit_write_reg(cs, REG_A6XX_RB_UNKNOWN_881E, 0); tu_cs_emit_write_reg(cs, REG_A6XX_RB_UNKNOWN_88F0, 0); - tu_cs_emit_write_reg(cs, REG_A6XX_VPC_UNKNOWN_9107, 0); - tu_cs_emit_regs(cs, A6XX_VPC_POINT_COORD_INVERT(false)); tu_cs_emit_write_reg(cs, REG_A6XX_VPC_UNKNOWN_9300, 0); tu_cs_emit_regs(cs, A6XX_VPC_SO_DISABLE(true)); - tu_cs_emit_write_reg(cs, REG_A6XX_PC_RASTER_CNTL, 0); - tu_cs_emit_write_reg(cs, REG_A6XX_SP_UNKNOWN_A81B, 0); tu_cs_emit_write_reg(cs, REG_A6XX_SP_UNKNOWN_B183, 0); diff --git a/src/freedreno/vulkan/tu_device.c b/src/freedreno/vulkan/tu_device.c index c94cc5b8002..bb7f06f070f 100644 --- a/src/freedreno/vulkan/tu_device.c +++ b/src/freedreno/vulkan/tu_device.c @@ -811,7 +811,7 @@ tu_GetPhysicalDeviceProperties2(VkPhysicalDevice physicalDevice, properties->maxTransformFeedbackBufferDataStride = 512; properties->transformFeedbackQueries = true; properties->transformFeedbackStreamsLinesTriangles = true; - properties->transformFeedbackRasterizationStreamSelect = false; + properties->transformFeedbackRasterizationStreamSelect = true; properties->transformFeedbackDraw = true; break; } diff --git a/src/freedreno/vulkan/tu_pipeline.c b/src/freedreno/vulkan/tu_pipeline.c index 052b316b07f..19f22cdf0a7 100644 --- a/src/freedreno/vulkan/tu_pipeline.c +++ b/src/freedreno/vulkan/tu_pipeline.c @@ -2401,7 +2401,7 @@ tu_pipeline_builder_parse_rasterization(struct tu_pipeline_builder *builder, depth_clip_disable = !depth_clip_state->depthClipEnable; struct tu_cs cs; - pipeline->rast_state = tu_cs_draw_state(&pipeline->cs, &cs, 9); + pipeline->rast_state = tu_cs_draw_state(&pipeline->cs, &cs, 13); tu_cs_emit_regs(&cs, A6XX_GRAS_CL_CNTL( @@ -2423,6 +2423,16 @@ tu_pipeline_builder_parse_rasterization(struct tu_pipeline_builder *builder, A6XX_GRAS_SU_POINT_MINMAX(.min = 1.0f / 16.0f, .max = 4092.0f), A6XX_GRAS_SU_POINT_SIZE(1.0f)); + const VkPipelineRasterizationStateStreamCreateInfoEXT *stream_info = + vk_find_struct_const(rast_info->pNext, + PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT); + unsigned stream = stream_info ? stream_info->rasterizationStream : 0; + tu_cs_emit_regs(&cs, + A6XX_PC_RASTER_CNTL(.stream = stream, + .discard = rast_info->rasterizerDiscardEnable)); + tu_cs_emit_regs(&cs, + A6XX_VPC_UNKNOWN_9107(.raster_discard = rast_info->rasterizerDiscardEnable)); + pipeline->gras_su_cntl = tu6_gras_su_cntl(rast_info, builder->samples, builder->multiview_mask != 0); _______________________________________________ mesa-commit mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-commit
