On Saturday, August 6, 2016 10:31:20 AM PDT Jason Ekstrand wrote: > --- > src/intel/vulkan/gen7_pipeline.c | 43 +------------------------ > src/intel/vulkan/gen8_pipeline.c | 48 ---------------------------- > src/intel/vulkan/genX_pipeline_util.h | 60 > +++++++++++++++++++++++++++++++++++ > 3 files changed, 61 insertions(+), 90 deletions(-) > > diff --git a/src/intel/vulkan/gen7_pipeline.c > b/src/intel/vulkan/gen7_pipeline.c > index 5a6158e..01b2793 100644 > --- a/src/intel/vulkan/gen7_pipeline.c > +++ b/src/intel/vulkan/gen7_pipeline.c > @@ -34,47 +34,6 @@ > > #include "genX_pipeline_util.h" > > -static void > -gen7_emit_rs_state(struct anv_pipeline *pipeline, > - const VkPipelineRasterizationStateCreateInfo *info, > - const struct anv_graphics_pipeline_create_info *extra) > -{ > - struct GENX(3DSTATE_SF) sf = { > - GENX(3DSTATE_SF_header), > - > - /* LegacyGlobalDepthBiasEnable */ > - > - .StatisticsEnable = true,
You've dropped StatisticsEnable - anv was setting it on Gen7 but not Gen8+. Now it's not setting it at all. Apparently brw sets it on Gen6+. This controls CL_PRIMITIVES_COUNT, which is necessary for the VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT pipeline statistics query. Whichever way you decide to set it, it's probably worth changing in a separate patch prior to this. > - .FrontFaceFillMode = > vk_to_gen_fillmode[info->polygonMode], > - .BackFaceFillMode = > vk_to_gen_fillmode[info->polygonMode], > - .ViewportTransformEnable = !(extra && > extra->use_rectlist), > - .FrontWinding = > vk_to_gen_front_face[info->frontFace], > - /* bool AntiAliasingEnable; */ > - > - .CullMode = > vk_to_gen_cullmode[info->cullMode], > - > - /* uint32_t > LineEndCapAntialiasingRegionWidth; */ > - .ScissorRectangleEnable = !(extra && > extra->use_rectlist), > - > - /* uint32_t > MultisampleRasterizationMode; */ > - /* bool LastPixelEnable; */ > - > - .TriangleStripListProvokingVertexSelect = 0, > - .LineStripListProvokingVertexSelect = 0, > - .TriangleFanProvokingVertexSelect = 1, > - > - /* uint32_t AALineDistanceMode; */ > - /* uint32_t > VertexSubPixelPrecisionSelect; */ > - .PointWidthSource = Vertex, > - .PointWidth = 1.0, > - .GlobalDepthOffsetEnableSolid = info->depthBiasEnable, > - .GlobalDepthOffsetEnableWireframe = info->depthBiasEnable, > - .GlobalDepthOffsetEnablePoint = info->depthBiasEnable, > - }; > - > - GENX(3DSTATE_SF_pack)(NULL, &pipeline->gen7.sf, &sf); > -} > - > VkResult > genX(graphics_pipeline_create)( > VkDevice _device, > @@ -108,7 +67,7 @@ genX(graphics_pipeline_create)( > emit_vertex_input(pipeline, pCreateInfo->pVertexInputState, extra); > > assert(pCreateInfo->pRasterizationState); > - gen7_emit_rs_state(pipeline, pCreateInfo->pRasterizationState, extra); > + emit_rs_state(pipeline, pCreateInfo->pRasterizationState, extra); > > emit_ds_state(pipeline, pCreateInfo->pDepthStencilState, pass, subpass); > > diff --git a/src/intel/vulkan/gen8_pipeline.c > b/src/intel/vulkan/gen8_pipeline.c > index ad8a643..94b0c48 100644 > --- a/src/intel/vulkan/gen8_pipeline.c > +++ b/src/intel/vulkan/gen8_pipeline.c > @@ -45,54 +45,6 @@ emit_ia_state(struct anv_pipeline *pipeline, > } > > static void > -emit_rs_state(struct anv_pipeline *pipeline, > - const VkPipelineRasterizationStateCreateInfo *info, > - const struct anv_graphics_pipeline_create_info *extra) > -{ > - struct GENX(3DSTATE_SF) sf = { > - GENX(3DSTATE_SF_header), > - }; > - > - sf.ViewportTransformEnable = !(extra && extra->use_rectlist); > - sf.TriangleStripListProvokingVertexSelect = 0; > - sf.LineStripListProvokingVertexSelect = 0; > - sf.TriangleFanProvokingVertexSelect = 1; > - sf.PointWidthSource = Vertex; > - sf.PointWidth = 1.0; > - > - GENX(3DSTATE_SF_pack)(NULL, pipeline->gen8.sf, &sf); > - > - struct GENX(3DSTATE_RASTER) raster = { > - GENX(3DSTATE_RASTER_header), > - }; > - > - /* For details on 3DSTATE_RASTER multisample state, see the BSpec table > - * "Multisample Modes State". > - */ > - raster.DXMultisampleRasterizationEnable = true; > - raster.ForcedSampleCount = FSC_NUMRASTSAMPLES_0; > - raster.ForceMultisampling = false; > - > - raster.FrontWinding = vk_to_gen_front_face[info->frontFace]; > - raster.CullMode = vk_to_gen_cullmode[info->cullMode]; > - raster.FrontFaceFillMode = vk_to_gen_fillmode[info->polygonMode]; > - raster.BackFaceFillMode = vk_to_gen_fillmode[info->polygonMode]; > - raster.ScissorRectangleEnable = !(extra && extra->use_rectlist); > -#if GEN_GEN == 8 > - raster.ViewportZClipTestEnable = !pipeline->depth_clamp_enable; > -#else > - /* GEN9+ splits ViewportZClipTestEnable into near and far enable bits */ > - raster.ViewportZFarClipTestEnable = !pipeline->depth_clamp_enable; > - raster.ViewportZNearClipTestEnable = !pipeline->depth_clamp_enable; > -#endif > - raster.GlobalDepthOffsetEnableSolid = info->depthBiasEnable; > - raster.GlobalDepthOffsetEnableWireframe = info->depthBiasEnable; > - raster.GlobalDepthOffsetEnablePoint = info->depthBiasEnable; > - > - GENX(3DSTATE_RASTER_pack)(NULL, pipeline->gen8.raster, &raster); > -} > - > -static void > emit_ms_state(struct anv_pipeline *pipeline, > const VkPipelineMultisampleStateCreateInfo *info) > { > diff --git a/src/intel/vulkan/genX_pipeline_util.h > b/src/intel/vulkan/genX_pipeline_util.h > index 516fc49..ab1d0d9 100644 > --- a/src/intel/vulkan/genX_pipeline_util.h > +++ b/src/intel/vulkan/genX_pipeline_util.h > @@ -362,6 +362,66 @@ static const uint32_t vk_to_gen_front_face[] = { > [VK_FRONT_FACE_CLOCKWISE] = 0 > }; > > +static void > +emit_rs_state(struct anv_pipeline *pipeline, > + const VkPipelineRasterizationStateCreateInfo *info, > + const struct anv_graphics_pipeline_create_info *extra) > +{ > + struct GENX(3DSTATE_SF) sf = { > + GENX(3DSTATE_SF_header), > + }; > + > + sf.ViewportTransformEnable = !(extra && extra->use_rectlist); > + sf.TriangleStripListProvokingVertexSelect = 0; > + sf.LineStripListProvokingVertexSelect = 0; > + sf.TriangleFanProvokingVertexSelect = 1; > + sf.PointWidthSource = Vertex; > + sf.PointWidth = 1.0; > + > +#if GEN_GEN >= 8 > + struct GENX(3DSTATE_RASTER) raster = { > + GENX(3DSTATE_RASTER_header), > + }; > +#else > +# define raster sf > +#endif > + > + /* For details on 3DSTATE_RASTER multisample state, see the BSpec table > + * "Multisample Modes State". > + */ > +#if GEN_GEN >= 8 > + raster.DXMultisampleRasterizationEnable = true; > + raster.ForcedSampleCount = FSC_NUMRASTSAMPLES_0; > + raster.ForceMultisampling = false; > +#endif > + > + raster.FrontWinding = vk_to_gen_front_face[info->frontFace]; > + raster.CullMode = vk_to_gen_cullmode[info->cullMode]; > + raster.FrontFaceFillMode = vk_to_gen_fillmode[info->polygonMode]; > + raster.BackFaceFillMode = vk_to_gen_fillmode[info->polygonMode]; > + raster.ScissorRectangleEnable = !(extra && extra->use_rectlist); > + > +#if GEN_GEN >= 9 > + /* GEN9+ splits ViewportZClipTestEnable into near and far enable bits */ > + raster.ViewportZFarClipTestEnable = !pipeline->depth_clamp_enable; > + raster.ViewportZNearClipTestEnable = !pipeline->depth_clamp_enable; > +#elif GEN_GEN >= 8 > + raster.ViewportZClipTestEnable = !pipeline->depth_clamp_enable; > +#endif > + > + raster.GlobalDepthOffsetEnableSolid = info->depthBiasEnable; > + raster.GlobalDepthOffsetEnableWireframe = info->depthBiasEnable; > + raster.GlobalDepthOffsetEnablePoint = info->depthBiasEnable; > + > +#if GEN_GEN >= 8 > + GENX(3DSTATE_SF_pack)(NULL, pipeline->gen8.sf, &sf); > + GENX(3DSTATE_RASTER_pack)(NULL, pipeline->gen8.raster, &raster); > +#else > +# undef raster > + GENX(3DSTATE_SF_pack)(NULL, &pipeline->gen7.sf, &sf); > +#endif > +} > + > static const uint32_t vk_to_gen_logic_op[] = { > [VK_LOGIC_OP_COPY] = LOGICOP_COPY, > [VK_LOGIC_OP_CLEAR] = LOGICOP_CLEAR, >
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev