CUDA 3.1: cudaGraphicsResourceGetMappedPointer fails for DirectX 9 texture

Hi all,

I’m really stuck here and can’t find any solution / hint in the docs or when asking google. I just updated from CUDA 2.3 to 3.1 and get errors when calling cudaGraphicsResourceGetMappedPointer on DirectX 9 texture resources. Specifically, the function returns cudaErrorInvalidValue.

Here’s a snippet of what I’m doing (note that the corresponding CUDA 2.3 code worked fine). Part (3) is where the error occurs:

void Filter::Run(IDirect3DTexture9* source)

{

	if(!m_cudaInit)

	{

		// (1) make sure the D3D device is set

		IDirect3DDevice9* device;

		source->GetDevice(&device);

		CUresult res = cuDriverGetVersion(&version);

		if ((res == CUDA_SUCCESS) && (version >= CUDA_VERSION))

		{

			CUdevice cuDevice = 0;

			res = cuCtxGetDevice(&cuDevice);

			if((res != CUDA_SUCCESS)/* || (cuDevice == 0)*/)

			{

				// register d3d device and source frame as resource

				cudaD3D9SetDirect3DDevice(d3dDevice);

			}

		}

		else

		{

			exit(-5);

		}

		device->Release();

		

		// (2) Register texture

		

		cudaError error = cudaGraphicsD3D9RegisterResource(&m_cudaResource, source, cudaGraphicsRegisterFlagsNone);

		error = cudaGraphicsResourceSetMapFlags(m_cudaResource, cudaGraphicsMapFlagsReadOnly);

		m_cudaInit = true;

	}

	// (3) Map resource and get device pointer

	

	error = cudaGraphicsMapResources(1, &m_cudaResource);

	void* pSrc;

	size_t b;

	error = cudaGraphicsResourceGetMappedPointer(&pSrc, &b, m_cudaResource);	// !!!! HERE IS WHERE THE ERROR OCCURS !!!!

	// (4) Execute kernel

	

	// ...<<< .. >>>

	// (5) Unmap texture

	error = cudaGraphicsUnmapResources(1, &m_cudaResource);

}

Any help is highly appreciated!