mirror of
https://github.com/KhronosGroup/SPIRV-Tools
synced 2024-11-21 19:20:07 +00:00
add support for vulkan-shader-profiler external passes (#5512)
This commit is contained in:
parent
f74f4e74c5
commit
f20663ca7f
@ -289,6 +289,7 @@ $(eval $(call gen_spvtools_vendor_tables,$(SPVTOOLS_OUT_PATH),spv-amd-shader-bal
|
||||
$(eval $(call gen_spvtools_vendor_tables,$(SPVTOOLS_OUT_PATH),spv-amd-shader-explicit-vertex-parameter,""))
|
||||
$(eval $(call gen_spvtools_vendor_tables,$(SPVTOOLS_OUT_PATH),spv-amd-shader-trinary-minmax,""))
|
||||
$(eval $(call gen_spvtools_vendor_tables,$(SPVTOOLS_OUT_PATH),nonsemantic.clspvreflection,""))
|
||||
$(eval $(call gen_spvtools_vendor_tables,$(SPVTOOLS_OUT_PATH),nonsemantic.vkspreflection,""))
|
||||
|
||||
define gen_spvtools_enum_string_mapping
|
||||
$(call generate-file-dir,$(1)/extension_enum.inc.inc)
|
||||
|
@ -58,6 +58,8 @@ generate_vendor_tables(extension = "debuginfo")
|
||||
|
||||
generate_vendor_tables(extension = "nonsemantic.clspvreflection")
|
||||
|
||||
generate_vendor_tables(extension = "nonsemantic.vkspreflection")
|
||||
|
||||
generate_vendor_tables(
|
||||
extension = "opencl.debuginfo.100",
|
||||
operand_kind_prefix = "CLDEBUG100_",
|
||||
@ -146,6 +148,7 @@ cc_library(
|
||||
":gen_opencl_tables_unified1",
|
||||
":gen_vendor_tables_debuginfo",
|
||||
":gen_vendor_tables_nonsemantic_clspvreflection",
|
||||
":gen_vendor_tables_nonsemantic_vkspreflection",
|
||||
":gen_vendor_tables_nonsemantic_shader_debuginfo_100",
|
||||
":gen_vendor_tables_opencl_debuginfo_100",
|
||||
":gen_vendor_tables_spv_amd_gcn_shader",
|
||||
|
4
BUILD.gn
4
BUILD.gn
@ -327,6 +327,10 @@ spvtools_vendor_tables = [
|
||||
"nonsemantic.clspvreflection",
|
||||
"...nil...",
|
||||
],
|
||||
[
|
||||
"nonsemantic.vkspreflection",
|
||||
"...nil...",
|
||||
],
|
||||
[
|
||||
"nonsemantic.shader.debuginfo.100",
|
||||
"SHDEBUG100_",
|
||||
|
@ -333,6 +333,7 @@ typedef enum spv_ext_inst_type_t {
|
||||
SPV_EXT_INST_TYPE_OPENCL_DEBUGINFO_100,
|
||||
SPV_EXT_INST_TYPE_NONSEMANTIC_CLSPVREFLECTION,
|
||||
SPV_EXT_INST_TYPE_NONSEMANTIC_SHADER_DEBUGINFO_100,
|
||||
SPV_EXT_INST_TYPE_NONSEMANTIC_VKSPREFLECTION,
|
||||
|
||||
// Multiple distinct extended instruction set types could return this
|
||||
// value, if they are prefixed with NonSemantic. and are otherwise
|
||||
|
@ -156,6 +156,7 @@ spvtools_vendor_tables("debuginfo" "debuginfo" "")
|
||||
spvtools_vendor_tables("opencl.debuginfo.100" "cldi100" "CLDEBUG100_")
|
||||
spvtools_vendor_tables("nonsemantic.shader.debuginfo.100" "shdi100" "SHDEBUG100_")
|
||||
spvtools_vendor_tables("nonsemantic.clspvreflection" "clspvreflection" "")
|
||||
spvtools_vendor_tables("nonsemantic.vkspreflection" "vkspreflection" "")
|
||||
spvtools_extinst_lang_headers("DebugInfo" ${DEBUGINFO_GRAMMAR_JSON_FILE})
|
||||
spvtools_extinst_lang_headers("OpenCLDebugInfo100" ${CLDEBUGINFO100_GRAMMAR_JSON_FILE})
|
||||
spvtools_extinst_lang_headers("NonSemanticShaderDebugInfo100" ${VKDEBUGINFO100_GRAMMAR_JSON_FILE})
|
||||
|
@ -30,6 +30,7 @@
|
||||
#include "glsl.std.450.insts.inc"
|
||||
#include "nonsemantic.clspvreflection.insts.inc"
|
||||
#include "nonsemantic.shader.debuginfo.100.insts.inc"
|
||||
#include "nonsemantic.vkspreflection.insts.inc"
|
||||
#include "opencl.debuginfo.100.insts.inc"
|
||||
#include "opencl.std.insts.inc"
|
||||
|
||||
@ -62,6 +63,9 @@ static const spv_ext_inst_group_t kGroups_1_0[] = {
|
||||
{SPV_EXT_INST_TYPE_NONSEMANTIC_CLSPVREFLECTION,
|
||||
ARRAY_SIZE(nonsemantic_clspvreflection_entries),
|
||||
nonsemantic_clspvreflection_entries},
|
||||
{SPV_EXT_INST_TYPE_NONSEMANTIC_VKSPREFLECTION,
|
||||
ARRAY_SIZE(nonsemantic_vkspreflection_entries),
|
||||
nonsemantic_vkspreflection_entries},
|
||||
};
|
||||
|
||||
static const spv_ext_inst_table_t kTable_1_0 = {ARRAY_SIZE(kGroups_1_0),
|
||||
@ -138,6 +142,9 @@ spv_ext_inst_type_t spvExtInstImportTypeGet(const char* name) {
|
||||
if (!strncmp("NonSemantic.ClspvReflection.", name, 28)) {
|
||||
return SPV_EXT_INST_TYPE_NONSEMANTIC_CLSPVREFLECTION;
|
||||
}
|
||||
if (!strncmp("NonSemantic.VkspReflection.", name, 27)) {
|
||||
return SPV_EXT_INST_TYPE_NONSEMANTIC_VKSPREFLECTION;
|
||||
}
|
||||
// ensure to add any known non-semantic extended instruction sets
|
||||
// above this point, and update spvExtInstIsNonSemantic()
|
||||
if (!strncmp("NonSemantic.", name, 12)) {
|
||||
@ -149,7 +156,8 @@ spv_ext_inst_type_t spvExtInstImportTypeGet(const char* name) {
|
||||
bool spvExtInstIsNonSemantic(const spv_ext_inst_type_t type) {
|
||||
if (type == SPV_EXT_INST_TYPE_NONSEMANTIC_UNKNOWN ||
|
||||
type == SPV_EXT_INST_TYPE_NONSEMANTIC_SHADER_DEBUGINFO_100 ||
|
||||
type == SPV_EXT_INST_TYPE_NONSEMANTIC_CLSPVREFLECTION) {
|
||||
type == SPV_EXT_INST_TYPE_NONSEMANTIC_CLSPVREFLECTION ||
|
||||
type == SPV_EXT_INST_TYPE_NONSEMANTIC_VKSPREFLECTION) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
@ -498,7 +498,7 @@ const Constant* ConstantManager::GetIntConst(uint64_t val, int32_t bitWidth,
|
||||
int32_t num_of_bit_to_ignore = 64 - bitWidth;
|
||||
val = static_cast<int64_t>(val << num_of_bit_to_ignore) >>
|
||||
num_of_bit_to_ignore;
|
||||
} else {
|
||||
} else if (bitWidth < 64) {
|
||||
// Clear the upper bit that are not used.
|
||||
uint64_t mask = ((1ull << bitWidth) - 1);
|
||||
val &= mask;
|
||||
@ -511,7 +511,7 @@ const Constant* ConstantManager::GetIntConst(uint64_t val, int32_t bitWidth,
|
||||
// If the value is more than 32-bit, we need to split the operands into two
|
||||
// 32-bit integers.
|
||||
return GetConstant(
|
||||
int_type, {static_cast<uint32_t>(val >> 32), static_cast<uint32_t>(val)});
|
||||
int_type, {static_cast<uint32_t>(val), static_cast<uint32_t>(val >> 32)});
|
||||
}
|
||||
|
||||
uint32_t ConstantManager::GetUIntConstId(uint32_t val) {
|
||||
|
@ -74,7 +74,7 @@ typedef struct spv_ext_inst_desc_t {
|
||||
const uint32_t ext_inst;
|
||||
const uint32_t numCapabilities;
|
||||
const spv::Capability* capabilities;
|
||||
const spv_operand_type_t operandTypes[16]; // TODO: Smaller/larger?
|
||||
const spv_operand_type_t operandTypes[40]; // vksp needs at least 40
|
||||
} spv_ext_inst_desc_t;
|
||||
|
||||
typedef struct spv_ext_inst_group_t {
|
||||
|
Loading…
Reference in New Issue
Block a user