tqk2811 / TqkLibrary.Wpf.Interop.DirectX

MIT License
4 stars 2 forks source link

Don't support Nvdia Rtx A6000 card #2

Open KnewHow opened 1 month ago

KnewHow commented 1 month ago

I use follow way to bind wpf image

public TqkLibrary.Wpf.Interop.DirectX.D3D11Image image; // an image bind render result and return to font-end

public Image2D(Image2DViewGeometry viewGeometry)
{
    d2dFactory = new SharpDX.Direct2D1.Factory();
    image = new TqkLibrary.Wpf.Interop.DirectX.D3D11Image();
    image.WindowOwner = (new System.Windows.Interop.WindowInteropHelper(BaseViewModel.MainView)).Handle;
    image.OnRender -= OnRender;
    image.OnRender += OnRender;
    wpfImage.Souce = image; 
}

private void OnRender(IntPtr resourcePtr, bool isNewSurface)
{
    if (isNewSurface)
    {
        InitializeTextureAndBuffers(resourcePtr);
    }
}

public void InitializeTextureAndBuffers(IntPtr resourcePtr)
{
    SharpDX.DXGI.Resource resource = CppObject.FromPointer<SharpDX.DXGI.Resource>(resourcePtr).QueryInterface<SharpDX.DXGI.Resource>();
    renderTarget = engine.device.OpenSharedResource<D3D11.Texture2D>(resource.SharedHandle);
    Utilities.Dispose(ref renderTargetView);
    renderTargetView = new D3D11.RenderTargetView(engine.device, renderTarget);
    //Utilities.Dispose(ref d2dFactory);

    SharpDX.DXGI.Surface surface = renderTarget.QueryInterface<SharpDX.DXGI.Surface>();
    Utilities.Dispose(ref renderTarget_2d);
    renderTarget_2d = new SharpDX.Direct2D1.RenderTarget(d2dFactory, surface, new SharpDX.Direct2D1.RenderTargetProperties(new SharpDX.Direct2D1.PixelFormat(SharpDX.DXGI.Format.Unknown, SharpDX.Direct2D1.AlphaMode.Premultiplied)));
}

I find it can render in Nvaid Geforce RTX 4090, but when I run the program in Nvadia RTX A6000, it is not work! Why? Dose it not support Nvadia RTX A6000 card?

tqk2811 commented 1 month ago

Try turn on directx debug and look the error message at the output of visual studio.

KnewHow commented 1 month ago

OK,Thank you

KnewHow commented 1 month ago

I use the debug mode, it gives me some error tips:

[2024-07-25 15:01:16,236][TID:1][ERROR][apollo.AppBootstrapper:154]:??????:Exception has been thrown by the target of an invocation.,
??:   at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean wrapExceptions)
   at System.Activator.CreateInstance(Type type)
   at Caliburn.Micro.SimpleContainer.ActivateInstance(Type type, Object[] args)
   at Caliburn.Micro.SimpleContainer.BuildInstance(Type type)
   at Caliburn.Micro.SimpleContainer.<>c__DisplayClass14_0.<RegisterSingleton>b__0(SimpleContainer container)
   at Caliburn.Micro.SimpleContainer.GetInstance(Type service, String key)
   at RN.CustomControlLibrary.FrontCore.BaseBootstrapper.GetInstance(Type service, String key) in C:\dev\apollo\RN.CustomControlLibrary\FrontCore\BaseBootstrapper.cs:line 31
   at Caliburn.Micro.IoC.Get[T](String key)
   at apollo.ToolFuncViewModel.OnViewLoaded(Object view) in C:\dev\apollo\apollo\ToolFuncViewModel.cs:line 49
   at Caliburn.Micro.XamlPlatformProvider.<>c__DisplayClass13_0.<ExecuteOnFirstLoad>b__0(Object s, RoutedEventArgs e)
   at Caliburn.Micro.View.<>c__DisplayClass8_0.<ExecuteOnLoad>b__0(Object s, RoutedEventArgs e)
   at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
   at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
   at System.Windows.BroadcastEventHelper.BroadcastEvent(DependencyObject root, RoutedEvent routedEvent)
   at System.Windows.BroadcastEventHelper.BroadcastLoadedEvent(Object root)
   at System.Windows.Media.MediaContext.FireLoadedPendingCallbacks()
   at System.Windows.Media.MediaContext.FireInvokeOnRenderCallbacks()
   at System.Windows.Media.MediaContext.RenderMessageHandlerCore(Object resizedCompositionTarget)
   at System.Windows.Media.MediaContext.RenderMessageHandler(Object resizedCompositionTarget)
   at System.Windows.Media.MediaContext.Resize(ICompositionTarget resizedCompositionTarget)
   at System.Windows.Interop.HwndTarget.OnResize()
   at System.Windows.Interop.HwndTarget.HandleMessage(WindowMessage msg, IntPtr wparam, IntPtr lparam)
   at System.Windows.Interop.HwndSource.HwndTargetFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)

another error tips:

[2024-07-25 15:01:16,438][TID:1][ERROR][apollo.Models.WorkArea.WorkAreaView:215]:Bind visual frame(5) error: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.
 ---> SharpDX.SharpDXException: HRESULT: [0x887A002D], Module: [SharpDX.DXGI], ApiCode: [DXGI_ERROR_SDK_COMPONENT_MISSING/SdkComponentMissing], Message: The application requested an operation that depends on an SDK component that is missing or mismatched.

   at SharpDX.Result.CheckError()
   at SharpDX.Direct3D11.Device.CreateDevice(Adapter adapter, DriverType driverType, DeviceCreationFlags flags, FeatureLevel[] featureLevels)
   at SharpDX.Direct3D11.Device..ctor(Adapter adapter, DeviceCreationFlags flags, FeatureLevel[] featureLevels)
   at apollo.Models.GraphicsModule.image.GlobalEngine..ctor() in C:\dev\apollo\apollo\Models\GraphicsModule\image\GlobalEngine.cs:line 61
   at apollo.Models.GraphicsModule.image.GlobalEngine.getEngine() in C:\dev\apollo\apollo\Models\GraphicsModule\image\GlobalEngine.cs:line 140
   at apollo.Models.GraphicsModule.image.Image3DEngine.initDXResource() in C:\dev\apollo\apollo\Models\GraphicsModule\image\Image3DEngine.cs:line 85
   at apollo.Models.GraphicsModule.image.Image3DEngine..ctor() in C:\dev\apollo\apollo\Models\GraphicsModule\image\Image3DEngine.cs:line 59
   at apollo.Models.GraphicsModule.image.Image3DEngine.getEngine() in C:\dev\apollo\apollo\Models\GraphicsModule\image\Image3DEngine.cs:line 72
   at apollo.Models.GraphicsModule.image.Image3D..ctor() in C:\dev\apollo\apollo\Models\GraphicsModule\image\Image3D.cs:line 77
   at apollo.Models.GraphicsModule.image.view.Image3DView..ctor() in C:\dev\apollo\apollo\Models\GraphicsModule\image\view\Image3DView.xaml.cs:line 65
   at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean wrapExceptions)
   --- End of inner exception stack trace ---
   at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean wrapExceptions)
   at System.Activator.CreateInstance(Type type)
   at Caliburn.Micro.ViewLocator.<>c.<.cctor>b__10_0(Type viewType)
   at Caliburn.Micro.ViewLocator.<>c.<.cctor>b__10_4(Type modelType, DependencyObject displayLocation, Object context)
   at Caliburn.Micro.ViewLocator.<>c.<.cctor>b__10_5(Object model, DependencyObject displayLocation, Object context)
   at Caliburn.Micro.View.OnModelChanged(DependencyObject targetLocation, DependencyPropertyChangedEventArgs args)
   at System.Windows.DependencyObject.OnPropertyChanged(DependencyPropertyChangedEventArgs e)
   at System.Windows.FrameworkElement.OnPropertyChanged(DependencyPropertyChangedEventArgs e)
   at System.Windows.DependencyObject.NotifyPropertyChange(DependencyPropertyChangedEventArgs args)
   at System.Windows.DependencyObject.UpdateEffectiveValue(EntryIndex entryIndex, DependencyProperty dp, PropertyMetadata metadata, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType)
   at System.Windows.DependencyObject.SetValueCommon(DependencyProperty dp, Object value, PropertyMetadata metadata, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType, Boolean isInternal)
   at System.Windows.DependencyObject.SetValue(DependencyProperty dp, Object value)
   at System.Windows.Data.BindingOperations.SetBinding(DependencyObject target, DependencyProperty dp, BindingBase binding)
   at Caliburn.Micro.ConventionManager.<>c.<.cctor>b__15_6(Type viewModelType, String path, PropertyInfo property, FrameworkElement element, ElementConvention convention, DependencyProperty bindableProperty)
   at Caliburn.Micro.ConventionManager.SetBindingWithoutBindingOverwrite(Type viewModelType, String path, PropertyInfo property, FrameworkElement element, ElementConvention convention, DependencyProperty bindableProperty)
   at Caliburn.Micro.ElementConvention.<>c.<.ctor>b__5_0(Type viewModelType, String path, PropertyInfo property, FrameworkElement element, ElementConvention convention)
   at Caliburn.Micro.ViewModelBinder.<>c.<.cctor>b__10_0(IEnumerable`1 namedElements, Type viewModelType)
   at Caliburn.Micro.ViewModelBinder.<>c.<.cctor>b__10_3(Object viewModel, DependencyObject view, Object context)
   at Caliburn.Micro.View.OnModelChanged(DependencyObject targetLocation, DependencyPropertyChangedEventArgs args)
   at System.Windows.DependencyObject.OnPropertyChanged(DependencyPropertyChangedEventArgs e)
   at System.Windows.FrameworkElement.OnPropertyChanged(DependencyPropertyChangedEventArgs e)
   at System.Windows.DependencyObject.NotifyPropertyChange(DependencyPropertyChangedEventArgs args)
   at System.Windows.DependencyObject.UpdateEffectiveValue(EntryIndex entryIndex, DependencyProperty dp, PropertyMetadata metadata, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType)
   at System.Windows.DependencyObject.SetValueCommon(DependencyProperty dp, Object value, PropertyMetadata metadata, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType, Boolean isInternal)
   at System.Windows.DependencyObject.SetValue(DependencyProperty dp, Object value)
   at apollo.Models.WorkArea.WorkAreaView.setVisualLayoutView(VisualView setting) in C:\dev\apollo\apollo\Models\WorkArea\WorkAreaView.xaml.cs:line 215

Is it tell me I need update display card driver?

tqk2811 commented 1 month ago

There is no directx error message? (maybe should debug on c++ project? )


Is it tell me I need update display card driver?

Maybe


Or that card not support sone function / feature / ...... . Or check your linesize of texture... (need to be divisible by 16)

tqk2811 commented 1 month ago

try look https://github.com/sharpdx/SharpDX/issues/858 and https://github.com/sharpdx/SharpDX/issues/495