Jump to content

  • Log In with Google      Sign In   
  • Create Account

Awesome job so far everyone! Please give us your feedback on how our article efforts are going. We still need more finished articles for our May contest theme: Remake the Classics

mrheisenberg

Member Since 13 Aug 2012
Offline Last Active May 16 2013 12:10 PM
-----

Topics I've Started

DirectX "Blue" speculations

15 May 2013 - 08:47 PM

New DirectX version coming in 2014(atleast rumors say so): http://www.fudzilla.com/home/item/30666-next-directx-codenamed-blue
 

What new features do you think will be implemented?Will it run on Windows 7 like they allowed for 11.1 or will they completely move on?It's weird, cause if it really does come out in 2014 and requires a new breed of chips, then the new consoles(which should support shader model 5) would be in for a really bad deal.I mean if they had waited just 1 more year, they would have been supplied with a new DirectX12-supporting GPU and drastically prolong their lifespan.Eh, I think I over-speculated, what are your thoughts?What would you like to see?I'd really like it if they remove all the numbers, so it'll be just ID3D##### instead of ID3D11##### or ID3D12#####.


GPU PerfStudio 2 - how to view HLSL code?

15 April 2013 - 11:32 PM

I'm debugging my shader on a HD 5650 with AMD's GPU PerfStudio 2 and while it shows up the Assembly, for the HLSL code it tells me: 


To view HLSL here add the D3DCOMPILE_DEBUG flag to your shader compilation.
For best HLSL debugging experience, also add the D3DCOMPILE_PREFER_FLOW_CONTROL and D3DCOMPILE_SKIP_OPTIMIZATION flags.

 

Even tho I have these flags for shader compilation: 


 

D3DCOMPILE_DEBUG | D3DCOMPILE_SKIP_OPTIMIZATION
 

And compiling in debug mode?


CheckFeatureSupport returns E_INVALIDARG on several arguments, is this a cause for conc...

14 April 2013 - 10:03 AM

when calling ID3D11Device::CheckFeatureSupport for all the possible features, most return E_INVALIDARG.Does this simply mean "feature not supported" or is it an actual error?For instance:


 

D3D11_FEATURE_DATA_D3D10_X_HARDWARE_OPTIONS hardwareOptions;


device->CheckFeatureSupport(D3D11_FEATURE_D3D10_X_HARDWARE_OPTIONS, &hardwareOptions, sizeof(hardwareOptions));
 

does just fine, however

 

D3D11_FEATURE_DATA_FORMAT_SUPPORT format;
D3D11_FEATURE_DATA_FORMAT_SUPPORT2 format2;


device->CheckFeatureSupport(D3D11_FEATURE_FORMAT_SUPPORT, &format, sizeof(format));
device->CheckFeatureSupport(D3D11_FEATURE_FORMAT_SUPPORT2, &format2, sizeof(format2));

 

 

both return E_INVALIDARG, which is weird, am I not passing the correct arguments?
I also get E_INVALIDARG on D3D11_FEATURE_D3D11_OPTIONS, D3D11_FEATURE_ARCHITECTURE_INFO, D3D11_FEATURE_D3D9_OPTIONS, D3D11_FEATURE_D3D9_SHADOW_SUPPORT and D3D11_FEATURE_SHADER_MIN_PRECISION_SUPPORT.

The device is created with feature level 11 and model 5 shaders run fine otherwise.

 


Is it safe to use IUnknown* for every class that has a DirectX object in it?

02 April 2013 - 04:29 PM

For instance, instead of using ID3D11Buffer* in your mesh class, to use IUnknown or isntead of ID3D11PixelShader* to use IUnknown again.Since they inherit from it, casting and passing to functions that require those types shouldn't be a problem, right?


Strange DirectX error(debugger is unreliable in this case)

27 March 2013 - 08:01 PM

I'm calling

 

IDXGIOutput* output;
adapter->EnumOutputs(0, &output);
DXGIOutput outputInterface = DXGIOutput(output);
 

 

 

 

adapter is a DXGIAdapter* that I create with EnumAdapters1 from the factory object, it gives me no problems, I get the description and it properly gives me the GPU name when I take its DXGI_ADAPTER_DESC1.
DXGIOutput is just a thin wrapper that contains an IDXGIOutput* and has a SafeRelease(obj) macro used in it's destructor to release the contained IDXGIOutput*.This is the macro:
#define SafeRelease(obj) {if(obj){(obj)->Release();(obj)=nullptr;}}It's just the standart SafeRelease used across most tutorials, but It kept telling me this when SafeRelease was called:

Unhandled exception at 0x00150138 in Rendering.exe: 0xC0000005: Access violation executing location 0x00150138. 

 

since I was only using DXGIOutput outputInterface temporarily, once it got killed at the end of the function and it's destructor got called.

So I change it to:
#define SafeRelease(obj) {if(obj){(obj)->Release();}}
And now it stopped giving me the error.However, on the call stack it says:

  <Unknown function> Unknown

  [Frames below may be incorrect and/or missing]
 
I linked to Microsoft symbol server just in case, but that didn't fix it the [Frames below may be incorrect and/or missing] issue.
So after I fixed the problem with the destructor, the line above it(adapter->EnumOutputs(0, &output);) started to give me an

Unhandled exception at 0x7728A4DE (ntdll.dll) in Rendering.exe: 0xC0000005: Access violation reading location 0xFEEEFEF6.


And on the top of the call stack there's:
 

ntdll.dll!<Unknown function> Unknown
  [Frames below may be incorrect and/or missing, no symbols loaded for ntdll.dll]
  dxgi.dll!<Unknown function> Unknown
  dxgi.dll!<Unknown function> Unknown
  dxgi.dll!<Unknown function> Unknown
  dxgi.dll!<Unknown function> Unknown
 
All if this is really confusing, changing the destructor of an object can't interfere with something that happens before it's called o_O unless the frames really are not in that order, but in that case I have no idea what can be done.Has anyone ever had this problem?It says in MSDN, that the symbol files are included in Windows 7 by default, and even so I tried with the Microsoft symbol server.

 

 


PARTNERS