language-spir-v (empty) → 0.1.0.0
raw patch · 11 files changed
+278/−0 lines, 11 filesdep +basedep +bytestringdep +c-enumsetup-changed
Dependencies added: base, bytestring, c-enum, language-spir-v, nowdoc, template-haskell
Files
- CHANGELOG.md +11/−0
- LICENSE +30/−0
- README.md +1/−0
- Setup.hs +2/−0
- data/ShaderKind.txt +44/−0
- language-spir-v.cabal +65/−0
- src/Language/SpirV.hs +7/−0
- src/Language/SpirV/Internal.hs +16/−0
- src/Language/SpirV/ShaderKind.hs +28/−0
- src/Language/SpirV/ShaderKind/Core.hsc +72/−0
- test/Spec.hs +2/−0
+ CHANGELOG.md view
@@ -0,0 +1,11 @@+# Changelog for `try-language-spir-v`++All notable changes to this project will be documented in this file.++The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),+and this project adheres to the+[Haskell Package Versioning Policy](https://pvp.haskell.org/).++## Unreleased++## 0.1.0.0 - YYYY-MM-DD
+ LICENSE view
@@ -0,0 +1,30 @@+Copyright Yoshikuni Jujo (c) 2023++All rights reserved.++Redistribution and use in source and binary forms, with or without+modification, are permitted provided that the following conditions are met:++ * Redistributions of source code must retain the above copyright+ notice, this list of conditions and the following disclaimer.++ * Redistributions in binary form must reproduce the above+ copyright notice, this list of conditions and the following+ disclaimer in the documentation and/or other materials provided+ with the distribution.++ * Neither the name of Yoshikuni Jujo nor the names of other+ contributors may be used to endorse or promote products derived+ from this software without specific prior written permission.++THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ README.md view
@@ -0,0 +1,1 @@+# try-language-spir-v
+ Setup.hs view
@@ -0,0 +1,2 @@+import Distribution.Simple+main = defaultMain
+ data/ShaderKind.txt view
@@ -0,0 +1,44 @@+VertexShader+FragmentShader+ComputeShader+GeometryShader+TessControlShader+TessEvaluationShader+GlslVertexShader+GlslFragmentShader+GlslComputeShader+GlslGeometryShader+GlslTessControlShader+GlslTessEvaluationShader+GlslInferFromSource+GlslDefaultVertexShader+GlslDefaultFragmentShader+GlslDefaultComputeShader+GlslDefaultGeometryShader+GlslDefaultTessControlShader+GlslDefaultTessEvaluationShader+SpirvAssembly+RaygenShader+AnyhitShader+ClosesthitShader+MissShader+IntersectionShader+CallableShader+GlslRaygenShader+GlslAnyhitShader+GlslClosesthitShader+GlslMissShader+GlslIntersectionShader+GlslCallableShader+GlslDefaultRaygenShader+GlslDefaultAnyhitShader+GlslDefaultClosesthitShader+GlslDefaultMissShader+GlslDefaultIntersectionShader+GlslDefaultCallableShader+TaskShader+MeshShader+GlslTaskShader+GlslMeshShader+GlslDefaultTaskShader+GlslDefaultMeshShader
+ language-spir-v.cabal view
@@ -0,0 +1,65 @@+cabal-version: 1.12++-- This file has been generated from package.yaml by hpack version 0.37.0.+--+-- see: https://github.com/sol/hpack++name: language-spir-v+version: 0.1.0.0+description: Please see the README on GitHub at <https://github.com/githubuser/language-spir-v#readme>+category: Language+homepage: https://github.com/githubuser/language-spir-v#readme+bug-reports: https://github.com/githubuser/language-spir-v/issues+author: Yoshikuni Jujo+maintainer: yoshikuni.jujo@gmail.com+copyright: 2023 Yoshikuni Jujo+license: BSD3+license-file: LICENSE+build-type: Simple+extra-source-files:+ README.md+ CHANGELOG.md+data-files:+ data/ShaderKind.txt++source-repository head+ type: git+ location: https://github.com/githubuser/language-spir-v++library+ exposed-modules:+ Language.SpirV+ Language.SpirV.Internal+ Language.SpirV.ShaderKind+ Language.SpirV.ShaderKind.Core+ other-modules:+ Paths_language_spir_v+ hs-source-dirs:+ src+ ghc-options: -Wall -Wcompat -Widentities -Wincomplete-record-updates -Wincomplete-uni-patterns -Wmissing-export-lists -Wmissing-home-modules -Wpartial-fields -Wredundant-constraints+ pkgconfig-depends:+ shaderc+ build-depends:+ base >=4.7 && <5+ , bytestring <1+ , c-enum <1+ , nowdoc <1+ , template-haskell <3+ default-language: Haskell2010++test-suite language-spir-v-test+ type: exitcode-stdio-1.0+ main-is: Spec.hs+ other-modules:+ Paths_language_spir_v+ hs-source-dirs:+ test+ ghc-options: -Wall -Wcompat -Widentities -Wincomplete-record-updates -Wincomplete-uni-patterns -Wmissing-export-lists -Wmissing-home-modules -Wpartial-fields -Wredundant-constraints -threaded -rtsopts -with-rtsopts=-N+ build-depends:+ base >=4.7 && <5+ , bytestring <1+ , c-enum <1+ , language-spir-v+ , nowdoc <1+ , template-haskell <3+ default-language: Haskell2010
+ src/Language/SpirV.hs view
@@ -0,0 +1,7 @@+{-# OPTIONS_GHC -Wall -fno-warn-tabs #-}++module Language.SpirV (S, writeFile) where++import Prelude hiding (writeFile)++import Language.SpirV.Internal
+ src/Language/SpirV/Internal.hs view
@@ -0,0 +1,16 @@+{-# LANGUAGE ImportQualifiedPost #-}+{-# LANGUAGE KindSignatures #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# OPTIONS_GHC -Wall -fno-warn-tabs #-}++module Language.SpirV.Internal where++import Data.String+import Data.ByteString qualified as BS++import Language.SpirV.ShaderKind++newtype S (sknd :: ShaderKind) = S BS.ByteString deriving (Show, IsString)++writeFile :: FilePath -> S sknd -> IO ()+writeFile fp (S bs) = BS.writeFile fp bs
+ src/Language/SpirV/ShaderKind.hs view
@@ -0,0 +1,28 @@+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE BlockArguments #-}+{-# LANGUAGE DataKinds, KindSignatures #-}+{-# LANGUAGE AllowAmbiguousTypes #-}+{-# OPTIONS_GHC -Wall -fno-warn-tabs #-}++module Language.SpirV.ShaderKind where++import Language.Haskell.TH+import Data.Traversable++import qualified Language.SpirV.ShaderKind.Core as C++(: []) <$> do+ enms <- runIO $ lines <$> readFile "data/ShaderKind.txt"+ dataD (cxt []) (mkName "ShaderKind") [] Nothing+ ((\enm -> normalC (mkName enm) []) <$> enms)+ [derivClause Nothing [conT ''Show]]++class IsShaderKind (sknd :: ShaderKind) where shaderKind :: C.ShaderKind++do enms <- runIO $ lines <$> readFile "data/ShaderKind.txt"+ pairs <- for enms \nm -> do+ Just foo <- lookupValueName nm+ Just bar <- lookupValueName $ "C." ++ nm+ pure (foo, bar)+ (\(knd, cknd) -> instanceD (cxt []) (conT ''IsShaderKind `appT` promotedT knd)+ [valD (varP 'shaderKind) (normalB $ conE cknd) []]) `mapM` pairs
+ src/Language/SpirV/ShaderKind/Core.hsc view
@@ -0,0 +1,72 @@+-- This file is automatically generated by the tools/makeShadercShaderKind.hs+-- % stack runghc --cwd tools/ makeShadercShaderKind++{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE PatternSynonyms #-}+{-# OPTIONS_GHC -Wall -fno-warn-tabs #-}++module Language.SpirV.ShaderKind.Core where++import Foreign.Storable+import Foreign.C.Enum+import Data.Word++#include <shaderc/shaderc.h>++enum "ShaderKind" ''#{type shaderc_shader_kind} [''Show, ''Eq, ''Storable] [+ ("VertexShader", #{const shaderc_vertex_shader}),+ ("FragmentShader", #{const shaderc_fragment_shader}),+ ("ComputeShader", #{const shaderc_compute_shader}),+ ("GeometryShader", #{const shaderc_geometry_shader}),+ ("TessControlShader", #{const shaderc_tess_control_shader}),+ ("TessEvaluationShader", #{const shaderc_tess_evaluation_shader}),+ ("GlslVertexShader", #{const shaderc_glsl_vertex_shader}),+ ("GlslFragmentShader", #{const shaderc_glsl_fragment_shader}),+ ("GlslComputeShader", #{const shaderc_glsl_compute_shader}),+ ("GlslGeometryShader", #{const shaderc_glsl_geometry_shader}),+ ("GlslTessControlShader", #{const shaderc_glsl_tess_control_shader}),+ ("GlslTessEvaluationShader",+ #{const shaderc_glsl_tess_evaluation_shader}),+ ("GlslInferFromSource", #{const shaderc_glsl_infer_from_source}),+ ("GlslDefaultVertexShader",+ #{const shaderc_glsl_default_vertex_shader}),+ ("GlslDefaultFragmentShader",+ #{const shaderc_glsl_default_fragment_shader}),+ ("GlslDefaultComputeShader",+ #{const shaderc_glsl_default_compute_shader}),+ ("GlslDefaultGeometryShader",+ #{const shaderc_glsl_default_geometry_shader}),+ ("GlslDefaultTessControlShader",+ #{const shaderc_glsl_default_tess_control_shader}),+ ("GlslDefaultTessEvaluationShader",+ #{const shaderc_glsl_default_tess_evaluation_shader}),+ ("SpirvAssembly", #{const shaderc_spirv_assembly}),+ ("RaygenShader", #{const shaderc_raygen_shader}),+ ("AnyhitShader", #{const shaderc_anyhit_shader}),+ ("ClosesthitShader", #{const shaderc_closesthit_shader}),+ ("MissShader", #{const shaderc_miss_shader}),+ ("IntersectionShader", #{const shaderc_intersection_shader}),+ ("CallableShader", #{const shaderc_callable_shader}),+ ("GlslRaygenShader", #{const shaderc_glsl_raygen_shader}),+ ("GlslAnyhitShader", #{const shaderc_glsl_anyhit_shader}),+ ("GlslClosesthitShader", #{const shaderc_glsl_closesthit_shader}),+ ("GlslMissShader", #{const shaderc_glsl_miss_shader}),+ ("GlslIntersectionShader", #{const shaderc_glsl_intersection_shader}),+ ("GlslCallableShader", #{const shaderc_glsl_callable_shader}),+ ("GlslDefaultRaygenShader",+ #{const shaderc_glsl_default_raygen_shader}),+ ("GlslDefaultAnyhitShader",+ #{const shaderc_glsl_default_anyhit_shader}),+ ("GlslDefaultClosesthitShader",+ #{const shaderc_glsl_default_closesthit_shader}),+ ("GlslDefaultMissShader", #{const shaderc_glsl_default_miss_shader}),+ ("GlslDefaultIntersectionShader",+ #{const shaderc_glsl_default_intersection_shader}),+ ("GlslDefaultCallableShader",+ #{const shaderc_glsl_default_callable_shader}),+ ("TaskShader", #{const shaderc_task_shader}),+ ("MeshShader", #{const shaderc_mesh_shader}),+ ("GlslTaskShader", #{const shaderc_glsl_task_shader}),+ ("GlslMeshShader", #{const shaderc_glsl_mesh_shader}),+ ("GlslDefaultTaskShader", #{const shaderc_glsl_default_task_shader}),+ ("GlslDefaultMeshShader", #{const shaderc_glsl_default_mesh_shader}) ]
+ test/Spec.hs view
@@ -0,0 +1,2 @@+main :: IO ()+main = putStrLn "Test suite not yet implemented"