Jump to content

  • Log In with Google      Sign In   
  • Create Account


Yelmond

Member Since 10 Jul 2010
Offline Last Active Aug 27 2012 02:01 AM

Topics I've Started

Frame rate slow after device reset if vertex shader input struct exceeds 52 bytes

26 August 2012 - 05:24 PM

Hello,

I have a trivial shader that simply draws quads. If the combined size of the vertex shader input struct (input layout) exceeds 52 bytes my application becomes signifcantly slower after a device reset (ie. resizing the window). When the application starts, I get close to ~600 fps, regardless of input layout size (within reason). As soon as I reset the device the frame rate goes down to ~50 fps.

I know I've seen input layouts much larger than mine in use so I know it's not a limitation of DX9. What could I be doing wrong?

Some of my code:

The vertex shader input struct looks like this:

struct VS_IN
{
	 float3 posL  : POSITION0;
	 float3 tangentL : TANGENT0;
	 float3 normalL  : NORMAL0;
	 float2 texC  : TEXCOORD0;
	 float4 colour  : TEXCOORD1;
};

and my input layout for it:

D3DVERTEXELEMENT9 genericVertexDesc_DX9[] = {
	 { 0, 0,  D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITION, 0 },
	 { 0, 12, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TANGENT, 0 },
	 { 0, 24, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_NORMAL,  0 },
	 { 0, 36, D3DDECLTYPE_FLOAT2, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD, 0 },
	 { 0, 44, D3DDECLTYPE_FLOAT4, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD, 1 },
	 D3DDECL_END()
};
HR( AC3DX9Device->CreateVertexDeclaration( genericVertexDesc_DX9, &generic_DX9 ) );

If I change the size of "colour" to float2 frame rate no longer drops after a device reset.

Thanks in advance.

DirectX10 Texture Resource Memory Usage Explosion

10 July 2010 - 09:26 AM

Hello,

I need to cover a large area with several D3D10_USAGE_DYNAMIC type textures. The problem I encounter is after a certain amount of texture data being initialized my application's Private Working Set explodes from a stable 40MB to over 1GB. This issue has the following behavior:

1. The number of textures is irrelevant, all that matters is the amount of memory they require so many combinations of texture size and number of textures reproduce this problem.

2. It seems stable under a certain graphic memory load and does not grow at all while using the application, however, above 40MB or so of memory load, the usage explodes and continues to grow while using the application.

3. The most curious of all, assuming I have the application in the stable state, is if I now start a new graphic intensive application alongside mine (both being windowed), MY application's memory usage explodes, without me touching my application.

I can only guess that once graphic memory grows beyond a certain cacheable limit, virtual system memory goes insane but this only seems to affect my application. Is there anything I can do to alleviate this problem?

---

I am running Windows 7 64-bit and my app is 32-bit. I am using VC++ 2010 Express and it detects no memory leaks; memory usage explodes well after everything has been initialized. For the memory readings I used Process Explorer. I know its not the most accurate measure but I'm not really comfortable for such high usage numbers regardless of accuracy.

Thank you in advance for any help.

PARTNERS