anv/gen9: expose VK_EXT_post_depth_coverage
Note that the use of ICMS_INNER_CONSERVATIVE disagrees with the GL driver. Perhaps it's more performant than ICMS_NORMAL and is otherwise permitted? Not sure, so I left it as-is. Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu> Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:

committed by
Jason Ekstrand

parent
768f143667
commit
257128079c
@@ -124,6 +124,7 @@ EXTENSIONS = [
|
|||||||
Extension('VK_EXT_shader_viewport_index_layer', 1, True),
|
Extension('VK_EXT_shader_viewport_index_layer', 1, True),
|
||||||
Extension('VK_EXT_shader_stencil_export', 1, 'device->info.gen >= 9'),
|
Extension('VK_EXT_shader_stencil_export', 1, 'device->info.gen >= 9'),
|
||||||
Extension('VK_EXT_vertex_attribute_divisor', 2, True),
|
Extension('VK_EXT_vertex_attribute_divisor', 2, True),
|
||||||
|
Extension('VK_EXT_post_depth_coverage', 1, 'device->info.gen >= 9'),
|
||||||
]
|
]
|
||||||
|
|
||||||
class VkVersion:
|
class VkVersion:
|
||||||
|
@@ -155,6 +155,7 @@ anv_shader_compile_to_nir(struct anv_pipeline *pipeline,
|
|||||||
.subgroup_vote = true,
|
.subgroup_vote = true,
|
||||||
.stencil_export = device->instance->physicalDevice.info.gen >= 9,
|
.stencil_export = device->instance->physicalDevice.info.gen >= 9,
|
||||||
.storage_8bit = device->instance->physicalDevice.info.gen >= 8,
|
.storage_8bit = device->instance->physicalDevice.info.gen >= 8,
|
||||||
|
.post_depth_coverage = device->instance->physicalDevice.info.gen >= 9,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -1617,8 +1617,14 @@ emit_3dstate_ps_extra(struct anv_pipeline *pipeline,
|
|||||||
#if GEN_GEN >= 9
|
#if GEN_GEN >= 9
|
||||||
ps.PixelShaderComputesStencil = wm_prog_data->computed_stencil;
|
ps.PixelShaderComputesStencil = wm_prog_data->computed_stencil;
|
||||||
ps.PixelShaderPullsBary = wm_prog_data->pulls_bary;
|
ps.PixelShaderPullsBary = wm_prog_data->pulls_bary;
|
||||||
ps.InputCoverageMaskState = wm_prog_data->uses_sample_mask ?
|
|
||||||
ICMS_INNER_CONSERVATIVE : ICMS_NONE;
|
ps.InputCoverageMaskState = ICMS_NONE;
|
||||||
|
if (wm_prog_data->uses_sample_mask) {
|
||||||
|
if (wm_prog_data->post_depth_coverage)
|
||||||
|
ps.InputCoverageMaskState = ICMS_DEPTH_COVERAGE;
|
||||||
|
else
|
||||||
|
ps.InputCoverageMaskState = ICMS_INNER_CONSERVATIVE;
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
ps.PixelShaderUsesInputCoverageMask = wm_prog_data->uses_sample_mask;
|
ps.PixelShaderUsesInputCoverageMask = wm_prog_data->uses_sample_mask;
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user