mirror of
https://github.com/doitsujin/dxvk.git
synced 2025-03-15 07:29:17 +01:00
[dxvk] Add binding flag for multisampled images
This commit is contained in:
parent
6edcb70994
commit
4bd97f44c8
@ -1333,7 +1333,7 @@ namespace dxvk {
|
|||||||
SpirvCodeBuffer fsCode(d3d11_video_blit_frag);
|
SpirvCodeBuffer fsCode(d3d11_video_blit_frag);
|
||||||
|
|
||||||
const std::array<DxvkBindingInfo, 3> fsBindings = {{
|
const std::array<DxvkBindingInfo, 3> fsBindings = {{
|
||||||
{ VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, 0, VK_IMAGE_VIEW_TYPE_MAX_ENUM, VK_SHADER_STAGE_FRAGMENT_BIT, VK_ACCESS_UNIFORM_READ_BIT, VK_TRUE },
|
{ VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, 0, VK_IMAGE_VIEW_TYPE_MAX_ENUM, VK_SHADER_STAGE_FRAGMENT_BIT, VK_ACCESS_UNIFORM_READ_BIT, DxvkAccessOp::None, true },
|
||||||
{ VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, 1, VK_IMAGE_VIEW_TYPE_2D, VK_SHADER_STAGE_FRAGMENT_BIT, VK_ACCESS_SHADER_READ_BIT },
|
{ VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, 1, VK_IMAGE_VIEW_TYPE_2D, VK_SHADER_STAGE_FRAGMENT_BIT, VK_ACCESS_SHADER_READ_BIT },
|
||||||
{ VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, 2, VK_IMAGE_VIEW_TYPE_2D, VK_SHADER_STAGE_FRAGMENT_BIT, VK_ACCESS_SHADER_READ_BIT },
|
{ VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, 2, VK_IMAGE_VIEW_TYPE_2D, VK_SHADER_STAGE_FRAGMENT_BIT, VK_ACCESS_SHADER_READ_BIT },
|
||||||
}};
|
}};
|
||||||
|
@ -871,7 +871,7 @@ namespace dxvk {
|
|||||||
binding.viewType = VK_IMAGE_VIEW_TYPE_MAX_ENUM;
|
binding.viewType = VK_IMAGE_VIEW_TYPE_MAX_ENUM;
|
||||||
binding.access = VK_ACCESS_UNIFORM_READ_BIT;
|
binding.access = VK_ACCESS_UNIFORM_READ_BIT;
|
||||||
binding.resourceBinding = bindingId;
|
binding.resourceBinding = bindingId;
|
||||||
binding.uboSet = VK_TRUE;
|
binding.uboSet = true;
|
||||||
m_bindings.push_back(binding);
|
m_bindings.push_back(binding);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1080,6 +1080,7 @@ namespace dxvk {
|
|||||||
DxvkBindingInfo binding = { };
|
DxvkBindingInfo binding = { };
|
||||||
binding.viewType = typeInfo.vtype;
|
binding.viewType = typeInfo.vtype;
|
||||||
binding.resourceBinding = bindingId;
|
binding.resourceBinding = bindingId;
|
||||||
|
binding.isMultisampled = typeInfo.ms;
|
||||||
|
|
||||||
if (isUav) {
|
if (isUav) {
|
||||||
binding.descriptorType = resourceType == DxbcResourceDim::Buffer
|
binding.descriptorType = resourceType == DxbcResourceDim::Buffer
|
||||||
|
@ -37,7 +37,9 @@ namespace dxvk {
|
|||||||
&& viewType == other.viewType
|
&& viewType == other.viewType
|
||||||
&& stage == other.stage
|
&& stage == other.stage
|
||||||
&& access == other.access
|
&& access == other.access
|
||||||
&& uboSet == other.uboSet;
|
&& accessOp == other.accessOp
|
||||||
|
&& uboSet == other.uboSet
|
||||||
|
&& isMultisampled == other.isMultisampled;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -48,7 +50,9 @@ namespace dxvk {
|
|||||||
hash.add(uint32_t(viewType));
|
hash.add(uint32_t(viewType));
|
||||||
hash.add(uint32_t(stage));
|
hash.add(uint32_t(stage));
|
||||||
hash.add(access);
|
hash.add(access);
|
||||||
|
hash.add(uint32_t(accessOp));
|
||||||
hash.add(uint32_t(uboSet));
|
hash.add(uint32_t(uboSet));
|
||||||
|
hash.add(uint32_t(isMultisampled));
|
||||||
return hash;
|
return hash;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -73,13 +73,14 @@ namespace dxvk {
|
|||||||
* a given shader, or for the whole pipeline.
|
* a given shader, or for the whole pipeline.
|
||||||
*/
|
*/
|
||||||
struct DxvkBindingInfo {
|
struct DxvkBindingInfo {
|
||||||
VkDescriptorType descriptorType; ///< Vulkan descriptor type
|
VkDescriptorType descriptorType = VK_DESCRIPTOR_TYPE_MAX_ENUM; ///< Vulkan descriptor type
|
||||||
uint32_t resourceBinding; ///< API binding slot for the resource
|
uint32_t resourceBinding = 0u; ///< API binding slot for the resource
|
||||||
VkImageViewType viewType; ///< Image view type
|
VkImageViewType viewType = VK_IMAGE_VIEW_TYPE_MAX_ENUM; ///< Image view type
|
||||||
VkShaderStageFlagBits stage; ///< Shader stage
|
VkShaderStageFlagBits stage = VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM; ///< Shader stage
|
||||||
VkAccessFlags access; ///< Access mask for the resource
|
VkAccessFlags access = 0u; ///< Access mask for the resource
|
||||||
VkBool32 uboSet; ///< Whether to include this in the UBO set
|
DxvkAccessOp accessOp = DxvkAccessOp::None; ///< Order-invariant store type, if any
|
||||||
DxvkAccessOp accessOp; ///< Order-invariant store type, if any
|
bool uboSet = false; ///< Whether to include this in the UBO set
|
||||||
|
bool isMultisampled = false; ///< Multisampled binding
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief Computes descriptor set index for the given binding
|
* \brief Computes descriptor set index for the given binding
|
||||||
|
Loading…
x
Reference in New Issue
Block a user