spirv: add support for SPV_KHR_post_depth_coverage
Allow the capability to be exposed, and convert the new execution mode into fs state. 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
6cbbd5b4f8
commit
768f143667
@@ -59,6 +59,7 @@ struct spirv_supported_capabilities {
|
||||
bool stencil_export;
|
||||
bool atomic_storage;
|
||||
bool storage_8bit;
|
||||
bool post_depth_coverage;
|
||||
};
|
||||
|
||||
typedef struct shader_info {
|
||||
|
@@ -3542,6 +3542,10 @@ vtn_handle_preamble_instruction(struct vtn_builder *b, SpvOp opcode,
|
||||
spv_check_supported(stencil_export, cap);
|
||||
break;
|
||||
|
||||
case SpvCapabilitySampleMaskPostDepthCoverage:
|
||||
spv_check_supported(post_depth_coverage, cap);
|
||||
break;
|
||||
|
||||
default:
|
||||
vtn_fail("Unhandled capability");
|
||||
}
|
||||
@@ -3609,6 +3613,11 @@ vtn_handle_execution_mode(struct vtn_builder *b, struct vtn_value *entry_point,
|
||||
b->shader->info.fs.early_fragment_tests = true;
|
||||
break;
|
||||
|
||||
case SpvExecutionModePostDepthCoverage:
|
||||
vtn_assert(b->shader->info.stage == MESA_SHADER_FRAGMENT);
|
||||
b->shader->info.fs.post_depth_coverage = true;
|
||||
break;
|
||||
|
||||
case SpvExecutionModeInvocations:
|
||||
vtn_assert(b->shader->info.stage == MESA_SHADER_GEOMETRY);
|
||||
b->shader->info.gs.invocations = MAX2(1, mode->literals[0]);
|
||||
|
Reference in New Issue
Block a user