diff options
author | Hans-Kristian Arntzen <hans-kristian.arntzen@arm.com> | 2018-04-10 18:16:41 +0300 |
---|---|---|
committer | Hans-Kristian Arntzen <hans-kristian.arntzen@arm.com> | 2018-04-10 18:16:41 +0300 |
commit | e1ccfd5dbb036a8893d517cc0b050adc57cdadde (patch) | |
tree | 517e8685bd6f8983be620f5e665857dae47200b1 /shaders | |
parent | f6c0e53f58302be8ef696007efd0f4cb043ab6b1 (diff) |
Implement all of subgroup.
Diffstat (limited to 'shaders')
-rw-r--r-- | shaders/vulkan/comp/subgroups.nocompat.vk.comp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/shaders/vulkan/comp/subgroups.nocompat.vk.comp b/shaders/vulkan/comp/subgroups.nocompat.vk.comp index a5593f3f..68fc74f9 100644 --- a/shaders/vulkan/comp/subgroups.nocompat.vk.comp +++ b/shaders/vulkan/comp/subgroups.nocompat.vk.comp @@ -60,17 +60,29 @@ void main() // arithmetic vec4 added = subgroupAdd(vec4(20.0)); + ivec4 iadded = subgroupAdd(ivec4(20)); vec4 multiplied = subgroupMul(vec4(20.0)); + ivec4 imultiplied = subgroupMul(ivec4(20)); vec4 lo = subgroupMin(vec4(20.0)); vec4 hi = subgroupMax(vec4(20.0)); + ivec4 slo = subgroupMin(ivec4(20)); + ivec4 shi = subgroupMax(ivec4(20)); + uvec4 ulo = subgroupMin(uvec4(20)); + uvec4 uhi = subgroupMax(uvec4(20)); uvec4 anded = subgroupAnd(ballot_value); uvec4 ored = subgroupOr(ballot_value); uvec4 xored = subgroupXor(ballot_value); added = subgroupInclusiveAdd(added); + iadded = subgroupInclusiveAdd(iadded); multiplied = subgroupInclusiveMul(multiplied); + imultiplied = subgroupInclusiveMul(imultiplied); lo = subgroupInclusiveMin(lo); hi = subgroupInclusiveMax(hi); + slo = subgroupInclusiveMin(slo); + shi = subgroupInclusiveMax(shi); + ulo = subgroupInclusiveMin(ulo); + uhi = subgroupInclusiveMax(uhi); anded = subgroupInclusiveAnd(anded); ored = subgroupInclusiveOr(ored); xored = subgroupInclusiveXor(ored); @@ -78,8 +90,14 @@ void main() added = subgroupExclusiveAdd(multiplied); multiplied = subgroupExclusiveMul(multiplied); + iadded = subgroupExclusiveAdd(imultiplied); + imultiplied = subgroupExclusiveMul(imultiplied); lo = subgroupExclusiveMin(lo); hi = subgroupExclusiveMax(hi); + ulo = subgroupExclusiveMin(ulo); + uhi = subgroupExclusiveMax(uhi); + slo = subgroupExclusiveMin(slo); + shi = subgroupExclusiveMax(shi); anded = subgroupExclusiveAnd(anded); ored = subgroupExclusiveOr(ored); xored = subgroupExclusiveXor(ored); @@ -87,8 +105,14 @@ void main() // clustered added = subgroupClusteredAdd(added, 4u); multiplied = subgroupClusteredMul(multiplied, 4u); + iadded = subgroupClusteredAdd(iadded, 4u); + imultiplied = subgroupClusteredMul(imultiplied, 4u); lo = subgroupClusteredMin(lo, 4u); hi = subgroupClusteredMax(hi, 4u); + ulo = subgroupClusteredMin(ulo, 4u); + uhi = subgroupClusteredMax(uhi, 4u); + slo = subgroupClusteredMin(slo, 4u); + shi = subgroupClusteredMax(shi, 4u); anded = subgroupClusteredAnd(anded, 4u); ored = subgroupClusteredOr(ored, 4u); xored = subgroupClusteredXor(xored, 4u); |