• Advertisement
Sign in to follow this  

context->Map() with flag D3D11_MAP_FLAG_DO_NOT_WAIT returns error code E_INVALIDARG = 0x80070057

This topic is 1553 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

I've programmed a streaming texture with the Map method. It works ok with mapFlags set to 0.


Now i'm trying to optimize it with D3D11_MAP_FLAG_DO_NOT_WAIT


But cannot make it work, the map() method returns error code E_INVALIDARG = 0x80070057


Here is how i call map function:

        // update texture
	HRESULT hr = pImmediateContext->Map(s_pTexture, 0, D3D11_MAP_WRITE_DISCARD, /*D3D11_MAP_FLAG_DO_NOT_WAIT*/ 0 , &sub);
	if ( SUCCEEDED( hr ) ) {
	} else {
		char c[256];
		wsprintf(c,"error 0x%x ", hr);

And the texture creation :

	// Create the texture
	desc.Width = 512;
	desc.Height = 512;
	desc.MipLevels = 1;
	desc.ArraySize = 1;
	desc.Format = DXGI_FORMAT_B8G8R8X8_UNORM;
	desc.SampleDesc.Count = 1;
	desc.Usage = D3D11_USAGE_DYNAMIC;
	desc.BindFlags = D3D11_BIND_SHADER_RESOURCE;
	desc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE;
	desc.MiscFlags = 0;
	pd3dDevice->CreateTexture2D( &desc, NULL, &s_pTexture );
Edited by punkcoders

Share this post

Link to post
Share on other sites

The documentation for D3D11_MAP_FLAG states that D3D11_MAP_FLAG_DO_NOT_WAIT cannot be used with D3D11_MAP_WRITE_DISCARD. It sounds like you really just want to use D3D11_MAP_WRITE_DISCARD. This will cause a new block of memory to be allocated when you map the buffer, and you can copy your texture data into that directly without worrying about whether the GPU is accessing the texture.

Share this post

Link to post
Share on other sites

That's true, thanks for the doc...


But i've tried with D3D11_MAP_WRITE flag, i still returns an error 0x80070057 ...

Edited by punkcoders

Share this post

Link to post
Share on other sites
Sign in to follow this  

  • Advertisement