achirkin / vulkan

Low-level low-overhead haskell bindings to vulkan API
BSD 3-Clause "New" or "Revised" License
63 stars 12 forks source link

Old resolvers causing issue #16

Open anchpop opened 6 years ago

anchpop commented 6 years ago

The resolver in vulkan-examples can be updated to lts-12.11, in my testing on Windows all the examples work fine except 5, which fails with this error:

VUID-VkPipelineVertexInputStateCreateInfo-pVertexAttributeDescriptions-parameter(ERROR / SPEC): msgNum: 279077889 - vkCreateGraphicsPipelines: required parameter pCreateInfos[0].pVertexInputState->pVertexAttributeDescriptions specified as NULL. The spec valid usage text states 'If vertexAttributeDescriptionCount is not 0, pVertexAttributeDescriptions must be a valid pointer to an array of vertexAttributeDescriptionCount valid VkVertexInputAttributeDescription structures' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-VkPipelineVertexInputStateCreateInfo-pVertexAttributeDescriptions-parameter)
    Objects: 1
       [0] 0x0, type: 0, name: (null)
Validation(ERROR): msg_code: 279077889:  [ VUID-VkPipelineVertexInputStateCreateInfo-pVertexAttributeDescriptions-parameter ]  [ VUID-VkPipelineVertexInputStateCreateInfo-pVertexAttributeDescriptions-parameter ] Object: VK_NULL_HANDLE (Type = 0) | vkCreateGraphicsPipelines: required parameter pCreateInfos[0].pVertexInputState->pVertexAttributeDescriptions specified as NULL. The spec valid usage text states 'If vertexAttributeDescriptionCount is not 0, pVertexAttributeDescriptions must be a valid pointer to an array of vertexAttributeDescriptionCount valid VkVertexInputAttributeDescription structures' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-VkPipelineVertexInputStateCreateInfo-pVertexAttributeDescriptions-parameter)
VUID-VkPipelineVertexInputStateCreateInfo-vertexAttributeDescriptionCount-00614(ERROR / SPEC): msgNum: 278922444 - vkCreateGraphicsPipelines: pararameter pCreateInfo[0].pVertexInputState->vertexAttributeDescriptionCount (0) is greater than VkPhysicalDeviceLimits::maxVertexInputAttributes (16). The spec valid usage text states 'vertexAttributeDescriptionCount must be less than or equal to VkPhysicalDeviceLimits::maxVertexInputAttributes' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-VkPipelineVertexInputStateCreateInfo-vertexAttributeDescriptionCount-00614)
    Objects: 1
       [0] 0x0, type: 0, name: (null)
Validation(ERROR): msg_code: 278922444:  [ VUID-VkPipelineVertexInputStateCreateInfo-vertexAttributeDescriptionCount-00614 ]  [ VUID-VkPipelineVertexInputStateCreateInfo-vertexAttributeDescriptionCount-00614 ] Object: VK_NULL_HANDLE (Type = 0) | vkCreateGraphicsPipelines: pararameter pCreateInfo[0].pVertexInputState->vertexAttributeDescriptionCount (0) is greater than VkPhysicalDeviceLimits::maxVertexInputAttributes (16). The spec valid usage text states 'vertexAttributeDescriptionCount must be less than or equal to VkPhysicalDeviceLimits::maxVertexInputAttributes' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-VkPipelineVertexInputStateCreateInfo-vertexAttributeDescriptionCount-00614)

With the old resolver, I could not get vulkan-examples to compile.

I can't get vulkan-triangles to work with the resolver it had (nightly-2018-04-12) or with lts-12.11. In both cases I get the following error:

vulkan-api-1.1.3.0: configure (lib)
Progress 1/3

--  While building custom Setup.hs for package vulkan-api-1.1.3.0 using:
      C:\sr\setup-exe-cache\x86_64-windows\Cabal-simple_Z6RU0evB_2.2.0.1_ghc-8.4.3.exe --builddir=.stack-work\dist\7d103d30 configure --with-ghc=C:\Users\hyper\AppData\Local\Programs\stack\x86_64-windows\ghc-8.4.3\bin\ghc.EXE --with-ghc-pkg=C:\Users\hyper\AppData\Local\Programs\stack\x86_64-windows\ghc-8.4.3\bin\ghc-pkg.EXE --user --package-db=clear --package-db=global --package-db=C:\sr\snapshots\bbeb756e\pkgdb --package-db=C:\Users\hyper\Desktop\vulkan-master\vulkan-triangles\.stack-work\install\96fd7a97\pkgdb --libdir=C:\Users\hyper\Desktop\vulkan-master\vulkan-triangles\.stack-work\install\96fd7a97\lib --bindir=C:\Users\hyper\Desktop\vulkan-master\vulkan-triangles\.stack-work\install\96fd7a97\bin --datadir=C:\Users\hyper\Desktop\vulkan-master\vulkan-triangles\.stack-work\install\96fd7a97\share --libexecdir=C:\Users\hyper\Desktop\vulkan-master\vulkan-triangles\.stack-work\install\96fd7a97\libexec --sysconfdir=C:\Users\hyper\Desktop\vulkan-master\vulkan-triangles\.stack-work\install\96fd7a97\etc --docdir=C:\Users\hyper\Desktop\vulkan-master\vulkan-triangles\.stack-work\install\96fd7a97\doc\vulkan-api-1.1.3.0 --htmldir=C:\Users\hyper\Desktop\vulkan-master\vulkan-triangles\.stack-work\install\96fd7a97\doc\vulkan-api-1.1.3.0 --haddockdir=C:\Users\hyper\Desktop\vulkan-master\vulkan-triangles\.stack-work\install\96fd7a97\doc\vulkan-api-1.1.3.0 --dependency=base=base-4.11.1.0 -fuseNativeFFI-1-0 -f-useNativeFFI-1-1 -fuseUnsafeFFIDefault --ghc-options -O2 --extra-include-dirs=C:\Users\hyper\AppData\Local\Programs\stack\x86_64-windows\msys2-20180531\mingw64\include --extra-lib-dirs=C:\Users\hyper\AppData\Local\Programs\stack\x86_64-windows\msys2-20180531\mingw64\bin --extra-lib-dirs=C:\Users\hyper\AppData\Local\Programs\stack\x86_64-windows\msys2-20180531\mingw64\lib --enable-tests --enable-benchmarks
    Process exited with code: ExitFailure 1
    Logs have been written to: C:\Users\hyper\Desktop\vulkan-master\vulkan-triangles\.stack-work\logs\vulkan-api-1.1.3.0.log

    Configuring vulkan-api-1.1.3.0...
    Cabal-simple_Z6RU0evB_2.2.0.1_ghc-8.4.3.exe: Missing dependency on a foreign
    library:
    * Missing (or bad) C library: vulkan-1
    This problem can usually be solved by installing the system package that
    provides this library (you may need the "-dev" version). If the library is
    already installed but in a non-standard location then you can use the flags
    --extra-include-dirs= and --extra-lib-dirs= to specify where it is.If the
    library file does exist, it may contain errors that are caught by the C
    compiler at the preprocessing stage. In this case you can re-run configure
    with the verbosity flag -v3 to see the error messages.
achirkin commented 6 years ago

The latter problem is due to missing header files or vulkan loader static files. You may try either to specify --extra-lib-dirs= to match the folder containing vulkan-1.lib on your machine or disable useNativeFFI flags in the stack file.

The former looks interesting. It surprises me, because the haskell dependencies should have nothing todo with it. Gladly, the validation layer shows a hint where to look for an error, so you may try to fix it :) Look at function vkCreateGraphicsPipelines and around in the example code. Unfortunately, I am overloaded and I cannot work on this right now. A pull request is very welcome!