anv/pipeline/gen7: Set multisample modes
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 Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com> Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:
parent
a3c472a2ec
commit
8cde4ddbce
|
@ -68,7 +68,7 @@ genX(graphics_pipeline_create)(
|
|||
|
||||
assert(pCreateInfo->pRasterizationState);
|
||||
emit_rs_state(pipeline, pCreateInfo->pRasterizationState,
|
||||
pass, subpass, extra);
|
||||
pCreateInfo->pMultisampleState, pass, subpass, extra);
|
||||
|
||||
emit_ds_state(pipeline, pCreateInfo->pDepthStencilState, pass, subpass);
|
||||
|
||||
|
@ -85,7 +85,8 @@ genX(graphics_pipeline_create)(
|
|||
pCreateInfo->pMultisampleState->rasterizationSamples > 1)
|
||||
anv_finishme("VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO");
|
||||
|
||||
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) {
|
||||
|
@ -273,6 +274,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;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -120,7 +120,7 @@ genX(graphics_pipeline_create)(
|
|||
emit_ia_state(pipeline, pCreateInfo->pInputAssemblyState, extra);
|
||||
assert(pCreateInfo->pRasterizationState);
|
||||
emit_rs_state(pipeline, pCreateInfo->pRasterizationState,
|
||||
pass, subpass, extra);
|
||||
pCreateInfo->pMultisampleState, pass, subpass, extra);
|
||||
emit_ms_state(pipeline, pCreateInfo->pMultisampleState);
|
||||
emit_ds_state(pipeline, pCreateInfo->pDepthStencilState, pass, subpass);
|
||||
emit_cb_state(pipeline, pCreateInfo->pColorBlendState,
|
||||
|
|
|
@ -365,6 +365,7 @@ static const uint32_t vk_to_gen_front_face[] = {
|
|||
static void
|
||||
emit_rs_state(struct anv_pipeline *pipeline,
|
||||
const VkPipelineRasterizationStateCreateInfo *rs_info,
|
||||
const VkPipelineMultisampleStateCreateInfo *ms_info,
|
||||
const struct anv_render_pass *pass,
|
||||
const struct anv_subpass *subpass,
|
||||
const struct anv_graphics_pipeline_create_info *extra)
|
||||
|
@ -396,6 +397,10 @@ emit_rs_state(struct anv_pipeline *pipeline,
|
|||
raster.DXMultisampleRasterizationEnable = true;
|
||||
raster.ForcedSampleCount = FSC_NUMRASTSAMPLES_0;
|
||||
raster.ForceMultisampling = false;
|
||||
#else
|
||||
raster.MultisampleRasterizationMode =
|
||||
(ms_info && ms_info->rasterizationSamples > 1) ?
|
||||
MSRASTMODE_ON_PATTERN : MSRASTMODE_OFF_PIXEL;
|
||||
#endif
|
||||
|
||||
raster.FrontWinding = vk_to_gen_front_face[rs_info->frontFace];
|
||||
|
|
Loading…
Reference in New Issue