Strang animation on XP NVIDIA 720

I ran my example on Win 7 Radeon HD 7950 and get correct animation.
On XP NVIDIA 720 i get correct text but troubles with animation.

Please add some more information. It’s pretty much impossible to find out what’s causing the differences without detailled information on how you render, your shaders, if validation is clean, etc. You’d make life a lot easier if you’d be providing some background on the problems you’re posting.

DS(ERROR): object: 0x70 type: 23 location: 865 msgCode: 27: vkUpdateDescriptorsSets() failed write update validation for Descriptor Set 0x70 with error: Write update to descriptor in set 112 binding #2 failed with error message: Attempted write update to buffer descriptor failed due to: Buffer (63) with usage mask 0x130 being used for a descriptor update of type VK_DESCRIPTOR_TYPE_STORAGE_BUFFER does not have VK_BUFFER_USAGE_STORAGE_BUFFER_BIT set.

Simple mesh render fine on XP NVIDIA 720
But for animation i using buffer(animation poses matrices) in shaders. And i mul vertex on animation poses matrices.

Did you fix the validation error? It clearly states that you are trying to write a descriptor set using a buffer that does not have the VK_DESCRIPTOR_TYPE_STORAGE_BUFFER set, so try to fix that and test again. If it’s working on AMD then that may be because their implementation is not that strict in a few areas.

As a rule of thumb (if you do cross vendor and platform) make sure you have no validation errors.

But animation still broken on NVIDIA 720

Well, we know literally nothing about your application, so how are we supposed to help you? At least post some of the relevant source code parts and shaders.

My vertex shader.
#version 450

#extension GL_ARB_separate_shader_objects : enable
#extension GL_ARB_shading_language_420pack : enable
//#extension GL_ARB_draw_instanced : enable

layout (location = 0) in vec3 inPos;
layout (location = 1) in vec2 inColor;
layout (location = 2) in vec3 inNor;
layout (location = 3) in ivec4 inBon;
layout (location = 4) in vec4 inWes;

//for animkeys
layout (binding = 2) buffer somes {
		mat4 so[];
			} some;

//for vertexbuf anim model
layout (binding = 3) buffer vrtxs {
			    mat4 Pos[];
			} vrtx;

layout (binding = 0) uniform UBO 
	mat4 projectionMatrix;
	mat4 viewMatrix;
	mat4 modelMatrix;
	float  Cadr;
	float  Bones;
} ubo;
// push_constant tolko vulkan fitcha !!! v opengl net
// gl_InstanceIndex tolko vulkan fitcha !!! v opengl net
layout (push_constant) uniform PushConsts
       vec4 lightPos[5];
} pushConsts;
//in int gl_InstanceID;
layout (location = 0) out vec3 outColor;
layout (location = 1) out vec3 outNor;

void main()
outColor = vec3(inColor,0.0) ;
outNor = vec3(inNor) ;

    int gg =  int(ubo.Cadr);    

    int Bone1 = (inBon[0]-1); 
    int Bone2 = (inBon[1]-1);
    int Bone3 = (inBon[2]-1);
    int Bone4 = (inBon[3]-1);

    int BonNum = int(ubo.Bones);

    int zi1 = int(BonNum*gg+Bone1);
    int zi2 = int(BonNum*gg+Bone2);
    int zi3 = int(BonNum*gg+Bone3);
    int zi4 = int(BonNum*gg+Bone4);
    mat4 nw1 = mat4([zi1]);
    mat4 nw2 = mat4([zi2]);
    mat4 nw3 = mat4([zi3]);
    mat4 nw4 = mat4([zi4]);

    vec4 nPos = vec4(inPos,1.0);  
    vec4 nPos2 ;	  
    nPos2 = vec4(nw1 * inWes[0] * nPos);
    nPos2 += (nw2 * inWes[1] * nPos);
    nPos2 += (nw3 * inWes[2] * nPos);
    nPos2 += (nw4 * inWes[3] * nPos);	    
    gl_Position =  ubo.projectionMatrix * ubo.viewMatrix * vec4( + pushConsts.lightPos[3].xyz ,1.0 );


I do in vertex shader
gl_Position = ubo.projectionMatrix * ubo.viewMatrix * vec4( + pushConsts.lightPos[3].xyz ,1.0 );
I render model without animationkeys.
And model render correct on XP NVIDIA 720 !

I find bug(its not shader) !
Its very interesting bug on AMD driver.
AMD ignore many rules of Vulkan :slight_smile:
Its good feature from AMD :slight_smile:
Poor NVIDIA :slight_smile:
Now work fine on XP NVIDIA 720 !

It’s great that you posted that you found the bug. We were really wondering if you corrected it. It’s just unfortunate that you never said what you were doing wrong, so that it would be helpful to other people in your predicament.