def shader_from_txt(self, txt, verbose=True, clean_up=True): path_shader = write_to_temp_file(txt, suffix=".comp") shader_path_spirv = lv.compile_glsl(path_shader, verbose) shader = lv.Shader(self.session, shader_path_spirv) if clean_up: os.remove(path_shader) os.remove(shader_path_spirv) return shader
def shader_from_txt(cls, txt, verbose=True, clean_up=True): path_shader = write_to_temp_file(txt, suffix=".comp") shader_path_spirv = lv.compile_glsl(path_shader, verbose) shader = Shader(cls.SESSION.device, shader_path_spirv) if clean_up: os.remove(path_shader) os.remove(shader_path_spirv) return shader
def test_bytecode_parsing_without_gpu(self): with self.env_backup(): del os.environ["VULKAN_SDK"] import lava as lv from lava.api.bytecode.logical import ByteCode from lava.api.bytecode.physical import ByteCodeData from lava.api.bytes import Vector, Scalar, Struct from lava.api.constants.spirv import Layout self.assertTrue(not lv.initialized()) glsl = """ #version 450 #extension GL_ARB_separate_shader_objects : enable layout(local_size_x=1, local_size_y=1, local_size_z=1) in; layout(std430, binding = 0) readonly buffer bufIn { vec3 var1; }; layout(std430, binding = 1) writeonly buffer bufOut { float var2; }; void main() { var2 = var1.x + var1.y + var1.z; } """ path_shader = write_to_temp_file(glsl, suffix=".comp") path_shader_spirv = lv.compile_glsl(path_shader, verbose=True) with self.env_backup(): del os.environ["VULKAN_SDK"] self.assertTrue(not lv.initialized()) byte_code_data = ByteCodeData.from_file(path_shader_spirv) byte_code = ByteCode(byte_code_data, None) quiet = True container0 = Struct([Vector.vec3()], Layout.STD430) container1 = Struct([Scalar.float()], Layout.STD430) self.assertTrue( container0.compare(byte_code.get_block_definition(0), quiet=quiet)) self.assertTrue( container1.compare(byte_code.get_block_definition(1), quiet=quiet)) os.remove(path_shader) os.remove(path_shader_spirv)