[Mesa-dev] [PATCH] anv: gen7/75: enable multisampling (v2)

Anuj Phogat anuj.phogat at gmail.com
Fri Aug 5 23:40:23 UTC 2016


On Fri, Aug 5, 2016 at 4:38 PM, Jason Ekstrand <jason at jlekstrand.net> wrote:

>
>
> On Fri, Aug 5, 2016 at 4:29 PM, Anuj Phogat <anuj.phogat at gmail.com> wrote:
>
>>
>>
>> On Fri, Aug 5, 2016 at 3:57 PM, Lionel Landwerlin <llandwerlin at gmail.com>
>> wrote:
>>
>>> Fixes the following failures :
>>>
>>> dEQP-VK.api.copy_and_blit.resolve_image.whole_4_bit
>>> dEQP-VK.api.copy_and_blit.resolve_image.whole_8_bit
>>> dEQP-VK.api.copy_and_blit.resolve_image.partial_4_bit
>>> dEQP-VK.api.copy_and_blit.resolve_image.partial_8_bit
>>> dEQP-VK.api.copy_and_blit.resolve_image.with_regions_4_bit
>>> dEQP-VK.api.copy_and_blit.resolve_image.with_regions_8_bit
>>>
>>
>> ​I couldn't find these test in ​
>> vulkan-cts-1.0
>> ​ at ​https://github.com/KhronosGroup/Vulkan-CTS.git
>> ​I'm using commit ​
>> ​f13b15d
>> ​.​ You should remove them from commit message if they are no longer
>> part of CTS.
>>
>
> You need the vulkan-cts-1.0-dev branch
>
​That explains. Thanks.​


>
>
>>
>>
>>> Tested on IVB/HSW
>>>
>>> v2: Check pMultisampleState is not NULL
>>>
>>> Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
>>> Cc: Anuj Phogat <anuj.phogat at gmail.com>
>>> ---
>>>  src/intel/vulkan/gen7_pipeline.c | 24 +++++++++++++++++-------
>>>  1 file changed, 17 insertions(+), 7 deletions(-)
>>>
>>> diff --git a/src/intel/vulkan/gen7_pipeline.c
>>> b/src/intel/vulkan/gen7_pipeline.c
>>> index c2a38ac..f4ad1bc 100644
>>> --- a/src/intel/vulkan/gen7_pipeline.c
>>> +++ b/src/intel/vulkan/gen7_pipeline.c
>>> @@ -37,8 +37,14 @@
>>>  static void
>>>  gen7_emit_rs_state(struct anv_pipeline *pipeline,
>>>                     const VkPipelineRasterizationStateCreateInfo
>>> *rs_info,
>>> +                   const VkPipelineMultisampleStateCreateInfo *ms_info,
>>>
>> ​We just need samples in this function, so just pass samples as parameter.
>> You can drop your first patch in that case.
>>>>
>>
>>>                     const struct anv_graphics_pipeline_create_info
>>> *extra)
>>>  {
>>> +   uint32_t samples = 1;
>>> +
>>> +   if (ms_info)
>>> +      samples = ms_info->rasterizationSamples;
>>> +
>>>     struct GENX(3DSTATE_SF) sf = {
>>>        GENX(3DSTATE_SF_header),
>>>
>>> @@ -56,7 +62,7 @@ gen7_emit_rs_state(struct anv_pipeline *pipeline,
>>>        /* uint32_t
>>>  LineEndCapAntialiasingRegionWidth; */
>>>        .ScissorRectangleEnable                   =  !(extra &&
>>> extra->use_rectlist),
>>>
>>> -      /* uint32_t
>>>  MultisampleRasterizationMode; */
>>> +      .MultisampleRasterizationMode             = samples > 1 ?
>>> MSDISPMODE_PERPIXEL : MSDISPMODE_PERSAMPLE,
>>>
>> ​This should match​
>>  MultisampleRasterizationMode
>> ​ not MultisampleDispatchMode in WM_STATE.
>>>>
>>>        /* bool                                         LastPixelEnable;
>>> */
>>>
>>>        .TriangleStripListProvokingVertexSelect   = 0,
>>> @@ -108,7 +114,8 @@ genX(graphics_pipeline_create)(
>>>     emit_vertex_input(pipeline, pCreateInfo->pVertexInputState, extra);
>>>
>>>     assert(pCreateInfo->pRasterizationState);
>>> -   gen7_emit_rs_state(pipeline, pCreateInfo->pRasterizationState,
>>> extra);
>>> +   gen7_emit_rs_state(pipeline, pCreateInfo->pRasterizationState,
>>> +                      pCreateInfo->pMultisampleState, extra);
>>>
>>>     emit_ds_state(pipeline, pCreateInfo->pDepthStencilState, pass,
>>> subpass);
>>>
>>> @@ -121,11 +128,8 @@ genX(graphics_pipeline_create)(
>>>                       pCreateInfo->pRasterizationState, extra);
>>>     emit_3dstate_streamout(pipeline, pCreateInfo->pRasterizationState);
>>>
>>> -   if (pCreateInfo->pMultisampleState &&
>>> -       pCreateInfo->pMultisampleState->rasterizationSamples > 1)
>>> -      anv_finishme("VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_C
>>> REATE_INFO");
>>>
>> ​We should keep this finishme until we fix all the multisample cts tests.​
>>
>>
>>> -
>>> -   uint32_t samples = 1;
>>> +   uint32_t samples = pCreateInfo->pMultisampleState ?
>>> +                      pCreateInfo->pMultisampleState->rasterizationSamples
>>> : 1;
>>>     uint32_t log2_samples = __builtin_ffs(samples) - 1;
>>>
>>>     anv_batch_emit(&pipeline->batch, GENX(3DSTATE_MULTISAMPLE), ms) {
>>> @@ -233,6 +237,7 @@ genX(graphics_pipeline_create)(
>>>           wm.LineAntialiasingRegionWidth         = 1; /* 1.0 pixels */
>>>           wm.EarlyDepthStencilControl            = EDSC_NORMAL;
>>>           wm.PointRasterizationRule              = RASTRULE_UPPER_RIGHT;
>>> +         wm.MultisampleDispatchMode             = MSDISPMODE_PERSAMPLE;
>>>
>> ​Dispatch mode doesn't matter when there is no fragment shader. Drop this
>> change.​
>>
>>
>>>        }
>>>
>>>        /* Even if no fragments are ever dispatched, the hardware hangs
>>> if we
>>> @@ -312,6 +317,11 @@ genX(graphics_pipeline_create)(
>>>           }
>>>
>>>           wm.BarycentricInterpolationMode        =
>>> wm_prog_data->barycentric_interp_modes;
>>> +
>>> +         wm.MultisampleRasterizationMode        = samples > 1 ?
>>> +                                                  MSRASTMODE_ON_PATTERN
>>> : MSRASTMODE_OFF_PIXEL;
>>> +         wm.MultisampleDispatchMode             =
>>> wm_prog_data->persample_dispatch ?
>>> +                                                  MSDISPMODE_PERSAMPLE
>>> : MSDISPMODE_PERPIXEL;
>>>        }
>>>     }
>>>
>>> --
>>> 2.8.1
>>>
>>>
>>
>> _______________________________________________
>> mesa-dev mailing list
>> mesa-dev at lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20160805/de80b123/attachment-0001.html>


More information about the mesa-dev mailing list