2016-04-05 6 views
1

Ich habe ein Vulkan 1.0.5.0-Programm mit dem LunarG-Installer eingerichtet, und es funktioniert, ohne dass Ebenen aktiviert werden.VkLayer_param_checker.dll Zugriffsverletzung

Wenn ich versuche, und aktivieren Sie entweder von:

VK_LAYER_LUNARG_param_checker 
VK_LAYER_LUNARG_api_dump 
VK_LAYER_LUNARG_standard_validation 

ich eine Zugriffsverletzung in VkLayer_param_checker.dll oder VkLayer_api_dump.dll erhalten, wenn ich versuche vkCreateInstance zu nennen.

Sie scheitern auch, wenn ich versuche, einzeln als einzige Schicht zu laden.

Die JSON-Dateien sind in der Registrierung unter ExplicitLayers vorhanden, und die Dateien selbst sehen gut aus.

Ich bekomme auch die Nachricht in Visual Studio, dass die DLLs geladen sind.

gearbeitet Diese Schichten auf einem älteren 1.0.3.1 Testprogramm, die ungerade ist, und ich bin in der Lage alle folgenden aktivieren:

VK_LAYER_LUNARG_device_limits 
VK_LAYER_LUNARG_draw_state 
VK_LAYER_LUNARG_image 
VK_LAYER_LUNARG_mem_tracker 
VK_LAYER_LUNARG_object_tracker 
VK_LAYER_LUNARG_screenshot 
VK_LAYER_LUNARG_swapchain 
VK_LAYER_GOOGLE_threading 
VK_LAYER_GOOGLE_unique_objects 
VK_LAYER_VALVE_steam_overlay 

Gibt es eine bestimmte Reihenfolge geladen werden, die Schichten müssen in ? Ich bin mir sicher, dass ich das irgendwo gelesen habe, aber ich kann es nicht wieder finden. Jede Hilfe wird geschätzt.

+0

Theres ein paar Dinge, die ich vorschlagen kann, werde ich sie als verschiedene Kommentare hinzufügen: 1) Als ich ein Tutorial zu diesem Thema sah, hatte ich den Eindruck, dass es in einer bestimmten Reihenfolge sein muss, weil sie den Stapel aufarbeiten . Ich könnte mich allerdings irren. – Keithin8a

+0

2) Versuchen Sie, die Liste der Ebenen an eine Befehlszeile oder etwas auszugeben, stellen Sie sicher, dass sie sich in der gleichen Reihenfolge befinden, die diese Möglichkeit zumindest regelt. – Keithin8a

+0

3) Ich bin mir ziemlich sicher, dass die Standardvalidierung nur alles anschaltet, ist es möglich, dass Sie keine Standardvalidierung haben, genauso wie andere Dinge? oder vielleicht muss die Standardvalidierung zuerst gehen. Ich werde dies untersuchen, wenn ich nach Hause komme, wenn Sie nicht bis dahin :) – Keithin8a

Antwort

2

Ich habe das Problem gefunden. Und es ist mir etwas peinlich zuzugeben, dass es eine nicht initialisierte Variable ist.

Nachdem ich zu Vulkan 1.0.8 umgezogen bin und ich die korrekte VkLayer_parameter_validation.dll finden und laden konnte, die im debug gebaut worden war.

Das Problem ist, dass ich in meiner Anwendung Informationen pEngineName nicht zuweisen konnte. Selbst die Zuweisung "" hätte funktioniert. Allerdings habe ich nichts zugewiesen. Wenn es ein nicht zugewiesenes const char* ist, transportiert es uns sofort zu undefiniertem Verhaltensland. Vulkan darf es auch nicht nullptr zuweisen, sonst hätte die Schicht es als solches markiert und mir tatsächlich diese Ausgabe gegeben. (Aber ich gebe das nicht an)

Technisch hätte ich das vermeiden können. Es ist meine eigene Schuld für die Annahme, es wäre null oder nur "". Ich bin mir sicher, dass ich auch irgendwo gelesen habe, dass man sicherstellen musste, dass in allen Vulkan-Strukturen alles zugewiesen wurde.

Ich hoffe, dies kann Menschen davon abhalten, diesen Fehler zu machen, oder wenn Sie etwas Ähnliches haben und auf diese Frage stoßen, wird es Sie ermutigen, Ihre Variablen zu überprüfen!