| | import sys |
| | import os |
| |
|
| | sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '../../src'))) |
| |
|
| | from driver_api import VirtualGPUDriver |
| |
|
| | def run_simple_graphics_example(): |
| | driver = VirtualGPUDriver() |
| | |
| | try: |
| | |
| | driver.initialize(num_chips=1, vram_size_gb=0.001, num_sms_per_chip=1, num_cores_per_sm=1, num_tensor_cores_per_sm=1) |
| |
|
| | |
| | framebuffer_width = 16 |
| | framebuffer_height = 16 |
| | fb = driver.create_framebuffer(framebuffer_width, framebuffer_height) |
| | driver.bind_framebuffer(fb) |
| |
|
| | |
| | driver.clear_color(0.0, 0.0, 1.0, 1.0) |
| | driver.clear_depth(1.0) |
| |
|
| | |
| | vertex_shader_source = "attribute vec4 position; void main() { gl_Position = position; }" |
| | fragment_shader_source = "void main() { gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0); }" |
| |
|
| | vertex_shader = driver.compile_shader(vertex_shader_source, "vertex") |
| | fragment_shader = driver.compile_shader(fragment_shader_source, "fragment") |
| | |
| | shader_program = driver.graphics_api.link_program(vertex_shader, fragment_shader) |
| | driver.use_program(shader_program) |
| |
|
| | |
| | |
| | |
| | triangle_vertices = [ |
| | 0, 0, 0, |
| | 15, 0, 0, |
| | 7, 15, 0 |
| | ] |
| | |
| | |
| | |
| | vertex_buffer_data = triangle_vertices |
| |
|
| | vertex_buffer_id = driver.create_buffer(len(vertex_buffer_data), "vertex") |
| | driver.buffer_data(vertex_buffer_id, vertex_buffer_data) |
| |
|
| | |
| | |
| | driver.draw_arrays("triangles", 0, 3) |
| |
|
| | |
| | |
| | color_buffer_content = driver.read_memory(fb["color"], framebuffer_width * framebuffer_height * 4) |
| | print("\n--- Simulated Framebuffer Content (first 64 bytes) ---") |
| | print(color_buffer_content[:64]) |
| | print("-----------------------------------------------------") |
| |
|
| | except Exception as e: |
| | print(f"An error occurred during graphics example: {e}") |
| | finally: |
| | driver.shutdown() |
| |
|
| | if __name__ == "__main__": |
| | run_simple_graphics_example() |
| |
|
| |
|
| |
|