Render Target Array bottle neck

Started by
1 comment, last by robydx 16 years, 7 months ago
I've a strange bottle neck and I need your opinion. I'm realising a .Net/DirectX10 graphics framework. I've implemented parallel split shadow mapping but I use geometry shader to send the triangle to different render target instead of repeat the rendering seperately for each split. But I've a really bad lost of frame rate (500 to 60). I've analised with pix and I've seen that the lost is when the render target is put into device. The render target is created in this way D3D10_TEXTURE2D_DESC desc; ZeroMemory( &desc, sizeof(desc) ); desc.Width = width; desc.Height = height; desc.MipLevels = 1; desc.ArraySize = count; desc.Format = format; desc.SampleDesc.Count = 1; desc.Usage = D3D10_USAGE_DEFAULT; desc.BindFlags = D3D10_BIND_RENDER_TARGET | D3D10_BIND_SHADER_RESOURCE; ID3D10Texture2D* targetTex; hr=device->CreateTexture2D(&desc,NULL,&targetTex); D3D10_RENDER_TARGET_VIEW_DESC DescRT; DescRT.Format = format; DescRT.ViewDimension = D3D10_RTV_DIMENSION_TEXTURE2DARRAY; DescRT.Texture2DArray.MipSlice = 0; DescRT.Texture2DArray.ArraySize = count; DescRT.Texture2DArray.FirstArraySlice = 0; hr=device->CreateRenderTargetView( targetTex, &DescRT, &view); and inserted in this way device->OMSetRenderTargets( 1, &this->view,this->renderTargetDepth); D3D10_VIEWPORT vp; vp.Width = width; vp.Height = height; vp.MinDepth = 0.0f; vp.MaxDepth = 1.0f; vp.TopLeftX = 0; vp.TopLeftY = 0; device->GetDevice()->RSSetViewports( 1, &vp); Have I committed an error? I don't have this problem with normal render target. The render target that I use is composed by an array of 4 texture R32F 1024 x 1024.

http://www.notjustcode.it

DirectX tutorial

Advertisement
Don’t trust PIX timing too much. If you run on a GF 8 you should try NVPerfHUD for a more accurate timing.

It it possible that the geometry shader cause your problem. They are known as a critical part of the first generation D3D10 hardware.

well, I'll try NVPerfHUD.

thank you

http://www.notjustcode.it

DirectX tutorial

This topic is closed to new replies.

Advertisement