Fix access to texel buffers

This commit is contained in:
baldurk
2020-04-16 16:55:55 +01:00
parent 7082f4eb44
commit 143f2bf054
3 changed files with 16 additions and 6 deletions
@@ -585,12 +585,17 @@ ShaderDebugTrace *Debugger::BeginDebug(DebugAPIWrapper *apiWrapper, const Shader
// sampler, so accessing the original type might be non-trivial at point of access
uint32_t texType = DebugAPIWrapper::Float_Texture;
if(imageTypes[type.InnerType()].dim == Dim::Buffer)
Id imgid = type.InnerType();
if(innertype.type == DataType::SampledImageType)
imgid = sampledImageTypes[imgid].baseId;
if(imageTypes[imgid].dim == Dim::Buffer)
texType |= DebugAPIWrapper::Buffer_Texture;
if(imageTypes[type.InnerType()].retType.type == Op::TypeInt)
if(imageTypes[imgid].retType.type == Op::TypeInt)
{
if(imageTypes[type.InnerType()].retType.signedness)
if(imageTypes[imgid].retType.signedness)
texType |= DebugAPIWrapper::SInt_Texture;
else
texType |= DebugAPIWrapper::UInt_Texture;
+2 -2
View File
@@ -485,7 +485,7 @@ public:
// create our own view (if we haven't already for this view) so we can promote to array
VkImageView sampleView = m_SampleViews[GetResID(view)];
if(sampleView == VK_NULL_HANDLE)
if(sampleView == VK_NULL_HANDLE && view != VK_NULL_HANDLE)
{
VkImageViewCreateInfo viewInfo = {VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO};
viewInfo.image = m_pDriver->GetResourceManager()->GetCurrentHandle<VkImage>(viewProps.image);
@@ -708,7 +708,7 @@ public:
if(buffer)
{
writeSets[0].pTexelBufferView = &bufferView;
writeSets[0].pTexelBufferView = UnwrapPtr(bufferView);
writeSets[0].descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER;
}
+6 -1
View File
@@ -131,7 +131,7 @@ layout(set = 0, binding = 5, std430) buffer storebuftype
//layout(set = 0, binding = 6, rgba32f) uniform coherent image2D storeImage;
//layout(set = 0, binding = 7, rgba32f) uniform coherent samplerBuffer texBuffer;
layout(set = 0, binding = 7) uniform samplerBuffer texBuffer;
//layout(set = 0, binding = 8, rgba32f) uniform coherent imageBuffer storeTexBuffer;
layout(set = 0, binding = 20) uniform sampler2DArray queryTest;
@@ -909,6 +909,11 @@ void main()
Color = vec4(vec3(textureSize(queryTestMS)), 1.0f);
break;
}
case 111:
{
Color = texelFetch(texBuffer, int(zeroi+2));
break;
}
default: break;
}
}