[Mesa-dev] [PATCH] anv: gen7/75: enable multisampling (v3)
Jason Ekstrand
jason at jlekstrand.net
Sat Aug 6 06:48:25 UTC 2016
On Aug 5, 2016 11:37 PM, "Jason Ekstrand" <jason at jlekstrand.net> wrote:
>
> I am going to try and give this a proper look on Monday. Given how
sketchy the multisampling support is on gen7 at the moment, I am a but
concerned that it doesn't fix more tests. What's left to fix for MSAA?
Also, I think I've mentioned this somewhere before, but I think it is time
to unify emit_rs_state between gen7 and gen8 and move it to
genX_pipeline_until.h. This shouldn't be too bad but requires a bit of
creativity since it's one packet on gen7 but two on gen8+. Unifying it
based on the gen8 version should also help us make sure we haven't missed
anything.
> On Aug 5, 2016 4:55 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
>>
>> Tested on IVB/HSW
>>
>> v2: Check pMultisampleState is not NULL
>>
>> v3: Drop rasterization state rename (Anuj)
>> Fix value of MultisampleRasterizationMode in 3DSTATE_SF
>>
>> 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 6acdd85..5ddb922 100644
>> --- a/src/intel/vulkan/gen7_pipeline.c
>> +++ b/src/intel/vulkan/gen7_pipeline.c
>> @@ -37,6 +37,7 @@
>> static void
>> gen7_emit_rs_state(struct anv_pipeline *pipeline,
>> const VkPipelineRasterizationStateCreateInfo *info,
>> + uint32_t samples,
>> const struct anv_graphics_pipeline_create_info
*extra)
>> {
>> struct GENX(3DSTATE_SF) sf = {
>> @@ -56,7 +57,8 @@ gen7_emit_rs_state(struct anv_pipeline *pipeline,
>> /* uint32_t
LineEndCapAntialiasingRegionWidth; */
>> .ScissorRectangleEnable = !(extra &&
extra->use_rectlist),
>>
>> - /* uint32_t
MultisampleRasterizationMode; */
>> + .MultisampleRasterizationMode = samples > 1 ?
>> + MSRASTMODE_ON_PATTERN
: MSRASTMODE_OFF_PIXEL,
>> /* bool LastPixelEnable;
*/
>>
>> .TriangleStripListProvokingVertexSelect = 0,
>> @@ -107,8 +109,16 @@ genX(graphics_pipeline_create)(
>> assert(pCreateInfo->pVertexInputState);
>> emit_vertex_input(pipeline, pCreateInfo->pVertexInputState, extra);
>>
>> + if (pCreateInfo->pMultisampleState &&
>> + pCreateInfo->pMultisampleState->rasterizationSamples > 1)
>> +
anv_finishme("VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO");
>> +
>> + uint32_t samples = pCreateInfo->pMultisampleState ?
>> +
pCreateInfo->pMultisampleState->rasterizationSamples : 1;
>> +
>> assert(pCreateInfo->pRasterizationState);
>> - gen7_emit_rs_state(pipeline, pCreateInfo->pRasterizationState,
extra);
>> + gen7_emit_rs_state(pipeline, pCreateInfo->pRasterizationState,
>> + samples, extra);
>>
>> emit_ds_state(pipeline, pCreateInfo->pDepthStencilState, pass,
subpass);
>>
>> @@ -121,11 +131,6 @@ 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_CREATE_INFO");
>> -
>> - uint32_t samples = 1;
>> uint32_t log2_samples = __builtin_ffs(samples) - 1;
>>
>> anv_batch_emit(&pipeline->batch, GENX(3DSTATE_MULTISAMPLE), ms) {
>> @@ -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/a6d9d22b/attachment-0001.html>
More information about the mesa-dev
mailing list