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 stencil_export;
|
||||||
bool atomic_storage;
|
bool atomic_storage;
|
||||||
bool storage_8bit;
|
bool storage_8bit;
|
||||||
|
bool post_depth_coverage;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct shader_info {
|
typedef struct shader_info {
|
||||||
|
@@ -3542,6 +3542,10 @@ vtn_handle_preamble_instruction(struct vtn_builder *b, SpvOp opcode,
|
|||||||
spv_check_supported(stencil_export, cap);
|
spv_check_supported(stencil_export, cap);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case SpvCapabilitySampleMaskPostDepthCoverage:
|
||||||
|
spv_check_supported(post_depth_coverage, cap);
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
vtn_fail("Unhandled capability");
|
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;
|
b->shader->info.fs.early_fragment_tests = true;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case SpvExecutionModePostDepthCoverage:
|
||||||
|
vtn_assert(b->shader->info.stage == MESA_SHADER_FRAGMENT);
|
||||||
|
b->shader->info.fs.post_depth_coverage = true;
|
||||||
|
break;
|
||||||
|
|
||||||
case SpvExecutionModeInvocations:
|
case SpvExecutionModeInvocations:
|
||||||
vtn_assert(b->shader->info.stage == MESA_SHADER_GEOMETRY);
|
vtn_assert(b->shader->info.stage == MESA_SHADER_GEOMETRY);
|
||||||
b->shader->info.gs.invocations = MAX2(1, mode->literals[0]);
|
b->shader->info.gs.invocations = MAX2(1, mode->literals[0]);
|
||||||
|
Reference in New Issue
Block a user