Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
glslang
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Chen Yisong
glslang
Commits
71892a5e
Unverified
Commit
71892a5e
authored
Jul 11, 2019
by
John Kessenich
Committed by
GitHub
Jul 11, 2019
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #1833 from AaronHaganAMD/master
Add support for SPV_KHR_shader_clock
parents
c538b5d7
91fb0091
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
55 additions
and
0 deletions
+55
-0
GLSL.ext.KHR.h
SPIRV/GLSL.ext.KHR.h
+1
-0
GlslangToSpv.cpp
SPIRV/GlslangToSpv.cpp
+16
-0
doc.cpp
SPIRV/doc.cpp
+5
-0
spirv.hpp
SPIRV/spirv.hpp
+2
-0
intermediate.h
glslang/Include/intermediate.h
+4
-0
Initialize.cpp
glslang/MachineIndependent/Initialize.cpp
+22
-0
Versions.cpp
glslang/MachineIndependent/Versions.cpp
+3
-0
Versions.h
glslang/MachineIndependent/Versions.h
+2
-0
No files found.
SPIRV/GLSL.ext.KHR.h
View file @
71892a5e
...
@@ -42,5 +42,6 @@ static const char* const E_SPV_KHR_post_depth_coverage = "SPV_KHR_post_
...
@@ -42,5 +42,6 @@ static const char* const E_SPV_KHR_post_depth_coverage = "SPV_KHR_post_
static
const
char
*
const
E_SPV_KHR_vulkan_memory_model
=
"SPV_KHR_vulkan_memory_model"
;
static
const
char
*
const
E_SPV_KHR_vulkan_memory_model
=
"SPV_KHR_vulkan_memory_model"
;
static
const
char
*
const
E_SPV_EXT_physical_storage_buffer
=
"SPV_EXT_physical_storage_buffer"
;
static
const
char
*
const
E_SPV_EXT_physical_storage_buffer
=
"SPV_EXT_physical_storage_buffer"
;
static
const
char
*
const
E_SPV_EXT_fragment_shader_interlock
=
"SPV_EXT_fragment_shader_interlock"
;
static
const
char
*
const
E_SPV_EXT_fragment_shader_interlock
=
"SPV_EXT_fragment_shader_interlock"
;
static
const
char
*
const
E_SPV_KHR_shader_clock
=
"SPV_KHR_shader_clock"
;
#endif // #ifndef GLSLextKHR_H
#endif // #ifndef GLSLextKHR_H
SPIRV/GlslangToSpv.cpp
View file @
71892a5e
...
@@ -7623,6 +7623,22 @@ spv::Id TGlslangToSpvTraverser::createNoArgOperation(glslang::TOperator op, spv:
...
@@ -7623,6 +7623,22 @@ spv::Id TGlslangToSpvTraverser::createNoArgOperation(glslang::TOperator op, spv:
return
id
;
return
id
;
}
}
case
glslang
:
:
EOpReadClockSubgroupKHR
:
{
std
::
vector
<
spv
::
Id
>
args
;
args
.
push_back
(
builder
.
makeUintConstant
(
spv
::
ScopeSubgroup
));
builder
.
addExtension
(
spv
::
E_SPV_KHR_shader_clock
);
builder
.
addCapability
(
spv
::
CapabilityShaderClockKHR
);
return
builder
.
createOp
(
spv
::
OpReadClockKHR
,
typeId
,
args
);
}
case
glslang
:
:
EOpReadClockDeviceKHR
:
{
std
::
vector
<
spv
::
Id
>
args
;
args
.
push_back
(
builder
.
makeUintConstant
(
spv
::
ScopeDevice
));
builder
.
addExtension
(
spv
::
E_SPV_KHR_shader_clock
);
builder
.
addCapability
(
spv
::
CapabilityShaderClockKHR
);
return
builder
.
createOp
(
spv
::
OpReadClockKHR
,
typeId
,
args
);
}
default
:
default
:
logger
->
missingFunctionality
(
"unknown operation with no arguments"
);
logger
->
missingFunctionality
(
"unknown operation with no arguments"
);
return
0
;
return
0
;
...
...
SPIRV/doc.cpp
View file @
71892a5e
...
@@ -959,6 +959,7 @@ const char* CapabilityString(int info)
...
@@ -959,6 +959,7 @@ const char* CapabilityString(int info)
case
CapabilityFragmentShaderShadingRateInterlockEXT
:
return
"CapabilityFragmentShaderShadingRateInterlockEXT"
;
case
CapabilityFragmentShaderShadingRateInterlockEXT
:
return
"CapabilityFragmentShaderShadingRateInterlockEXT"
;
case
CapabilityDemoteToHelperInvocationEXT
:
return
"DemoteToHelperInvocationEXT"
;
case
CapabilityDemoteToHelperInvocationEXT
:
return
"DemoteToHelperInvocationEXT"
;
case
CapabilityShaderClockKHR
:
return
"ShaderClockKHR"
;
default:
return
"Bad"
;
default:
return
"Bad"
;
}
}
...
@@ -1349,6 +1350,8 @@ const char* OpcodeString(int op)
...
@@ -1349,6 +1350,8 @@ const char* OpcodeString(int op)
case
5012
:
return
"OpFragmentFetchAMD"
;
case
5012
:
return
"OpFragmentFetchAMD"
;
#endif
#endif
case
OpReadClockKHR
:
return
"OpReadClockKHR"
;
case
OpDecorateStringGOOGLE
:
return
"OpDecorateStringGOOGLE"
;
case
OpDecorateStringGOOGLE
:
return
"OpDecorateStringGOOGLE"
;
case
OpMemberDecorateStringGOOGLE
:
return
"OpMemberDecorateStringGOOGLE"
;
case
OpMemberDecorateStringGOOGLE
:
return
"OpMemberDecorateStringGOOGLE"
;
...
@@ -2790,6 +2793,8 @@ void Parameterize()
...
@@ -2790,6 +2793,8 @@ void Parameterize()
InstructionDesc
[
OpCooperativeMatrixLengthNV
].
operands
.
push
(
OperandId
,
"'Type'"
);
InstructionDesc
[
OpCooperativeMatrixLengthNV
].
operands
.
push
(
OperandId
,
"'Type'"
);
InstructionDesc
[
OpDemoteToHelperInvocationEXT
].
setResultAndType
(
false
,
false
);
InstructionDesc
[
OpDemoteToHelperInvocationEXT
].
setResultAndType
(
false
,
false
);
InstructionDesc
[
OpReadClockKHR
].
operands
.
push
(
OperandScope
,
"'Scope'"
);
}
}
};
// end spv namespace
};
// end spv namespace
SPIRV/spirv.hpp
View file @
71892a5e
...
@@ -809,6 +809,7 @@ enum Capability {
...
@@ -809,6 +809,7 @@ enum Capability {
CapabilityFragmentMaskAMD
=
5010
,
CapabilityFragmentMaskAMD
=
5010
,
CapabilityStencilExportEXT
=
5013
,
CapabilityStencilExportEXT
=
5013
,
CapabilityImageReadWriteLodAMD
=
5015
,
CapabilityImageReadWriteLodAMD
=
5015
,
CapabilityShaderClockKHR
=
5055
,
CapabilitySampleMaskOverrideCoverageNV
=
5249
,
CapabilitySampleMaskOverrideCoverageNV
=
5249
,
CapabilityGeometryShaderPassthroughNV
=
5251
,
CapabilityGeometryShaderPassthroughNV
=
5251
,
CapabilityShaderViewportIndexLayerEXT
=
5254
,
CapabilityShaderViewportIndexLayerEXT
=
5254
,
...
@@ -1219,6 +1220,7 @@ enum Op {
...
@@ -1219,6 +1220,7 @@ enum Op {
OpGroupSMaxNonUniformAMD
=
5007
,
OpGroupSMaxNonUniformAMD
=
5007
,
OpFragmentMaskFetchAMD
=
5011
,
OpFragmentMaskFetchAMD
=
5011
,
OpFragmentFetchAMD
=
5012
,
OpFragmentFetchAMD
=
5012
,
OpReadClockKHR
=
5056
,
OpImageSampleFootprintNV
=
5283
,
OpImageSampleFootprintNV
=
5283
,
OpGroupNonUniformPartitionNV
=
5296
,
OpGroupNonUniformPartitionNV
=
5296
,
OpWritePackedPrimitiveIndices4x8NV
=
5299
,
OpWritePackedPrimitiveIndices4x8NV
=
5299
,
...
...
glslang/Include/intermediate.h
View file @
71892a5e
...
@@ -1005,6 +1005,10 @@ enum TOperator {
...
@@ -1005,6 +1005,10 @@ enum TOperator {
EOpWaveGetLaneIndex
,
// Will decompose to gl_SubgroupInvocationID.
EOpWaveGetLaneIndex
,
// Will decompose to gl_SubgroupInvocationID.
EOpWaveActiveCountBits
,
// Will decompose to subgroupBallotBitCount(subgroupBallot()).
EOpWaveActiveCountBits
,
// Will decompose to subgroupBallotBitCount(subgroupBallot()).
EOpWavePrefixCountBits
,
// Will decompose to subgroupBallotInclusiveBitCount(subgroupBallot()).
EOpWavePrefixCountBits
,
// Will decompose to subgroupBallotInclusiveBitCount(subgroupBallot()).
// Shader Clock Ops
EOpReadClockSubgroupKHR
,
EOpReadClockDeviceKHR
,
};
};
class
TIntermTraverser
;
class
TIntermTraverser
;
...
...
glslang/MachineIndependent/Initialize.cpp
View file @
71892a5e
...
@@ -5090,6 +5090,16 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
...
@@ -5090,6 +5090,16 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"
\n
"
);
"
\n
"
);
}
}
// GL_ARB_shader_clock & GL_EXT_shader_realtime_clock
if
(
profile
!=
EEsProfile
&&
version
>=
450
)
{
commonBuiltins
.
append
(
"uvec2 clock2x32ARB();"
"uint64_t clockARB();"
"uvec2 clockRealtime2x32EXT();"
"uint64_t clockRealtimeEXT();"
"
\n
"
);
}
// GL_AMD_shader_fragment_mask
// GL_AMD_shader_fragment_mask
if
(
profile
!=
EEsProfile
&&
version
>=
450
&&
spvVersion
.
vulkan
>
0
)
{
if
(
profile
!=
EEsProfile
&&
version
>=
450
&&
spvVersion
.
vulkan
>
0
)
{
stageBuiltins
[
EShLangFragment
].
append
(
stageBuiltins
[
EShLangFragment
].
append
(
...
@@ -8458,6 +8468,12 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
...
@@ -8458,6 +8468,12 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
symbolTable
.
setVariableExtensions
(
"gl_FragDepthEXT"
,
1
,
&
E_GL_EXT_frag_depth
);
symbolTable
.
setVariableExtensions
(
"gl_FragDepthEXT"
,
1
,
&
E_GL_EXT_frag_depth
);
symbolTable
.
setFunctionExtensions
(
"clockARB"
,
1
,
&
E_GL_ARB_shader_clock
);
symbolTable
.
setFunctionExtensions
(
"clock2x32ARB"
,
1
,
&
E_GL_ARB_shader_clock
);
symbolTable
.
setFunctionExtensions
(
"clockRealtimeEXT"
,
1
,
&
E_GL_EXT_shader_realtime_clock
);
symbolTable
.
setFunctionExtensions
(
"clockRealtime2x32EXT"
,
1
,
&
E_GL_EXT_shader_realtime_clock
);
if
(
profile
==
EEsProfile
&&
version
<
320
)
{
if
(
profile
==
EEsProfile
&&
version
<
320
)
{
symbolTable
.
setVariableExtensions
(
"gl_PrimitiveID"
,
Num_AEP_geometry_shader
,
AEP_geometry_shader
);
symbolTable
.
setVariableExtensions
(
"gl_PrimitiveID"
,
Num_AEP_geometry_shader
,
AEP_geometry_shader
);
symbolTable
.
setVariableExtensions
(
"gl_Layer"
,
Num_AEP_geometry_shader
,
AEP_geometry_shader
);
symbolTable
.
setVariableExtensions
(
"gl_Layer"
,
Num_AEP_geometry_shader
,
AEP_geometry_shader
);
...
@@ -9272,6 +9288,12 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
...
@@ -9272,6 +9288,12 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
symbolTable
.
relateToOperator
(
"atomicCounterDecrement"
,
EOpAtomicCounterDecrement
);
symbolTable
.
relateToOperator
(
"atomicCounterDecrement"
,
EOpAtomicCounterDecrement
);
symbolTable
.
relateToOperator
(
"atomicCounter"
,
EOpAtomicCounter
);
symbolTable
.
relateToOperator
(
"atomicCounter"
,
EOpAtomicCounter
);
symbolTable
.
relateToOperator
(
"clockARB"
,
EOpReadClockSubgroupKHR
);
symbolTable
.
relateToOperator
(
"clock2x32ARB"
,
EOpReadClockSubgroupKHR
);
symbolTable
.
relateToOperator
(
"clockRealtimeEXT"
,
EOpReadClockDeviceKHR
);
symbolTable
.
relateToOperator
(
"clockRealtime2x32EXT"
,
EOpReadClockDeviceKHR
);
if
(
profile
!=
EEsProfile
&&
version
>=
460
)
{
if
(
profile
!=
EEsProfile
&&
version
>=
460
)
{
symbolTable
.
relateToOperator
(
"atomicCounterAdd"
,
EOpAtomicCounterAdd
);
symbolTable
.
relateToOperator
(
"atomicCounterAdd"
,
EOpAtomicCounterAdd
);
symbolTable
.
relateToOperator
(
"atomicCounterSubtract"
,
EOpAtomicCounterSubtract
);
symbolTable
.
relateToOperator
(
"atomicCounterSubtract"
,
EOpAtomicCounterSubtract
);
...
...
glslang/MachineIndependent/Versions.cpp
View file @
71892a5e
...
@@ -188,6 +188,7 @@ void TParseVersions::initializeExtensionBehavior()
...
@@ -188,6 +188,7 @@ void TParseVersions::initializeExtensionBehavior()
extensionBehavior
[
E_GL_ARB_post_depth_coverage
]
=
EBhDisable
;
extensionBehavior
[
E_GL_ARB_post_depth_coverage
]
=
EBhDisable
;
extensionBehavior
[
E_GL_ARB_shader_viewport_layer_array
]
=
EBhDisable
;
extensionBehavior
[
E_GL_ARB_shader_viewport_layer_array
]
=
EBhDisable
;
extensionBehavior
[
E_GL_ARB_fragment_shader_interlock
]
=
EBhDisable
;
extensionBehavior
[
E_GL_ARB_fragment_shader_interlock
]
=
EBhDisable
;
extensionBehavior
[
E_GL_ARB_shader_clock
]
=
EBhDisable
;
extensionBehavior
[
E_GL_KHR_shader_subgroup_basic
]
=
EBhDisable
;
extensionBehavior
[
E_GL_KHR_shader_subgroup_basic
]
=
EBhDisable
;
extensionBehavior
[
E_GL_KHR_shader_subgroup_vote
]
=
EBhDisable
;
extensionBehavior
[
E_GL_KHR_shader_subgroup_vote
]
=
EBhDisable
;
...
@@ -285,6 +286,7 @@ void TParseVersions::initializeExtensionBehavior()
...
@@ -285,6 +286,7 @@ void TParseVersions::initializeExtensionBehavior()
// EXT extensions
// EXT extensions
extensionBehavior
[
E_GL_EXT_device_group
]
=
EBhDisable
;
extensionBehavior
[
E_GL_EXT_device_group
]
=
EBhDisable
;
extensionBehavior
[
E_GL_EXT_multiview
]
=
EBhDisable
;
extensionBehavior
[
E_GL_EXT_multiview
]
=
EBhDisable
;
extensionBehavior
[
E_GL_EXT_shader_realtime_clock
]
=
EBhDisable
;
// OVR extensions
// OVR extensions
extensionBehavior
[
E_GL_OVR_multiview
]
=
EBhDisable
;
extensionBehavior
[
E_GL_OVR_multiview
]
=
EBhDisable
;
...
@@ -408,6 +410,7 @@ void TParseVersions::getPreamble(std::string& preamble)
...
@@ -408,6 +410,7 @@ void TParseVersions::getPreamble(std::string& preamble)
"#define GL_KHR_shader_subgroup_quad 1
\n
"
"#define GL_KHR_shader_subgroup_quad 1
\n
"
"#define E_GL_EXT_shader_atomic_int64 1
\n
"
"#define E_GL_EXT_shader_atomic_int64 1
\n
"
"#define E_GL_EXT_shader_realtime_clock 1
\n
"
#ifdef AMD_EXTENSIONS
#ifdef AMD_EXTENSIONS
"#define GL_AMD_shader_ballot 1
\n
"
"#define GL_AMD_shader_ballot 1
\n
"
...
...
glslang/MachineIndependent/Versions.h
View file @
71892a5e
...
@@ -142,6 +142,7 @@ const char* const E_GL_ARB_shader_stencil_export = "GL_ARB_shader_stencil
...
@@ -142,6 +142,7 @@ const char* const E_GL_ARB_shader_stencil_export = "GL_ARB_shader_stencil
const
char
*
const
E_GL_ARB_post_depth_coverage
=
"GL_ARB_post_depth_coverage"
;
const
char
*
const
E_GL_ARB_post_depth_coverage
=
"GL_ARB_post_depth_coverage"
;
const
char
*
const
E_GL_ARB_shader_viewport_layer_array
=
"GL_ARB_shader_viewport_layer_array"
;
const
char
*
const
E_GL_ARB_shader_viewport_layer_array
=
"GL_ARB_shader_viewport_layer_array"
;
const
char
*
const
E_GL_ARB_fragment_shader_interlock
=
"GL_ARB_fragment_shader_interlock"
;
const
char
*
const
E_GL_ARB_fragment_shader_interlock
=
"GL_ARB_fragment_shader_interlock"
;
const
char
*
const
E_GL_ARB_shader_clock
=
"GL_ARB_shader_clock"
;
const
char
*
const
E_GL_KHR_shader_subgroup_basic
=
"GL_KHR_shader_subgroup_basic"
;
const
char
*
const
E_GL_KHR_shader_subgroup_basic
=
"GL_KHR_shader_subgroup_basic"
;
const
char
*
const
E_GL_KHR_shader_subgroup_vote
=
"GL_KHR_shader_subgroup_vote"
;
const
char
*
const
E_GL_KHR_shader_subgroup_vote
=
"GL_KHR_shader_subgroup_vote"
;
...
@@ -174,6 +175,7 @@ const char* const E_GL_EXT_fragment_invocation_density = "GL_EXT_fragment_i
...
@@ -174,6 +175,7 @@ const char* const E_GL_EXT_fragment_invocation_density = "GL_EXT_fragment_i
const
char
*
const
E_GL_EXT_buffer_reference
=
"GL_EXT_buffer_reference"
;
const
char
*
const
E_GL_EXT_buffer_reference
=
"GL_EXT_buffer_reference"
;
const
char
*
const
E_GL_EXT_buffer_reference2
=
"GL_EXT_buffer_reference2"
;
const
char
*
const
E_GL_EXT_buffer_reference2
=
"GL_EXT_buffer_reference2"
;
const
char
*
const
E_GL_EXT_demote_to_helper_invocation
=
"GL_EXT_demote_to_helper_invocation"
;
const
char
*
const
E_GL_EXT_demote_to_helper_invocation
=
"GL_EXT_demote_to_helper_invocation"
;
const
char
*
const
E_GL_EXT_shader_realtime_clock
=
"GL_EXT_shader_realtime_clock"
;
// Arrays of extensions for the above viewportEXTs duplications
// Arrays of extensions for the above viewportEXTs duplications
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment