Sign in to follow this  
champloo

help with creating a structured buffer

Recommended Posts

champloo    147

Hi,
 
here is what I am trying to do, which is just to create a structured buffer.


    D3D11_BUFFER_DESC sb_desc;
    sb_desc.ByteWidth = stride * numElements;
    sb_desc.Usage = D3D11_USAGE_DEFAULT;
    sb_desc.BindFlags = D3D11_BIND_SHADER_RESOURCE | D3D11_BIND_UNORDERED_ACCESS;
    sb_desc.CPUAccessFlags = 0;
    sb_desc.MiscFlags = D3D11_RESOURCE_MISC_BUFFER_STRUCTURED;
    sb_desc.MiscFlags |= drawIndirect ? D3D11_RESOURCE_MISC_DRAWINDIRECT_ARGS : 0;
    sb_desc.StructureByteStride = stride;
    DXCall( device->CreateBuffer( &sb_desc, NULL, &sb ) );

It fails every time, and if I remove the D3D11_RESOURCE_MISC_DRAWINDIRECT_ARGS flag, the error goes away.

 

I've tried different parameters but no luck at this point.

Any help is appreciated.

Share this post


Link to post
Share on other sites
MJP    19753

Create your device with the D3D11_CREATE_DEVICE_DEBUG flag and it will tell you why it's failing. If i recall correctly you can't use a structured buffer as an indirect args buffer, you have to make it a raw buffer instead (ByteAddressBuffer).

Share this post


Link to post
Share on other sites
champloo    147
Create your device with the D3D11_CREATE_DEVICE_DEBUG flag and it will tell you why it's failing. If i recall correctly you can't use a structured buffer as an indirect args buffer, you have to make it a raw buffer instead (ByteAddressBuffer).

 

Thank you so much. you are right, structured buffer cannot be used as an indirect args buffer.

didn't know I can create device with the debug flag, it's very helpful.

Share this post


Link to post
Share on other sites
Jason Z    6434
Create your device with the D3D11_CREATE_DEVICE_DEBUG flag and it will tell you why it's failing. If i recall correctly you can't use a structured buffer as an indirect args buffer, you have to make it a raw buffer instead (ByteAddressBuffer).

 

Thank you so much. you are right, structured buffer cannot be used as an indirect args buffer.

didn't know I can create device with the debug flag, it's very helpful.

 

It is usually a good idea to add the flag in debug builds, and to not add it in release builds, since the end user may or may not have the ability to create a device with the debug flag active.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this