49 lines
1.3 KiB
Python
49 lines
1.3 KiB
Python
# SPDX-FileCopyrightText: 2026 Blender Authors
|
|
#
|
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
|
#
|
|
# blender -b --factory-startup --python tests/python/bl_pyapi_gpu.py
|
|
|
|
import unittest
|
|
|
|
import gpu
|
|
|
|
|
|
class TestGpuInit(unittest.TestCase):
|
|
def test_gpu_module_is_usable_after_init(self):
|
|
gpu.init()
|
|
|
|
# GPU module functions will raise SystemError if the GPU has not been initialized.
|
|
gpu.platform.vendor_get()
|
|
gpu.platform.renderer_get()
|
|
gpu.platform.version_get()
|
|
gpu.platform.device_type_get()
|
|
gpu.types.GPUTexture(size=(1024, 1024), format="RGBA8")
|
|
|
|
|
|
class TestGpuFrameBuffer(unittest.TestCase):
|
|
def test_read_color_bounds_check(self):
|
|
gpu.init()
|
|
|
|
# Setup a framebuffer.
|
|
tex = gpu.types.GPUTexture(size=(16, 16), format="RGBA8")
|
|
fb = gpu.types.GPUFrameBuffer(color_slots=[tex])
|
|
|
|
with fb.bind():
|
|
# Reading within bounds should succeed.
|
|
buf = fb.read_color(0, 0, 1, 1, 4, 0, "UBYTE")
|
|
|
|
# Reading outside bounds should raise ValueError.
|
|
with self.assertRaises(ValueError):
|
|
fb.read_color(-1, 0, 1, 1, 4, 0, "UBYTE")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
import sys
|
|
|
|
sys.argv = [__file__] + (
|
|
sys.argv[sys.argv.index("--") + 1:] if "--" in sys.argv else []
|
|
)
|
|
|
|
unittest.main()
|