Code to verify buffer uploads are working

This commit is contained in:
Kovid Goyal
2017-08-21 15:30:50 +05:30
parent 0424d665d5
commit 4f22fcdaac

View File

@@ -7,26 +7,26 @@ from ctypes import addressof, sizeof
from functools import lru_cache from functools import lru_cache
from threading import Lock from threading import Lock
from .fonts.render import render_cell
from .fast_data_types import ( from .fast_data_types import (
glCreateProgram, glAttachShader, GL_FRAGMENT_SHADER, GL_VERTEX_SHADER, BOLD, GL_ARRAY_BUFFER, GL_CLAMP_TO_EDGE, GL_COMPILE_STATUS, GL_FLOAT,
glLinkProgram, GL_TRUE, GL_LINK_STATUS, glGetProgramiv, GL_FRAGMENT_SHADER, GL_LINK_STATUS, GL_MAX_ARRAY_TEXTURE_LAYERS,
glGetProgramInfoLog, glDeleteShader, glDeleteProgram, glGenVertexArrays, GL_MAX_TEXTURE_SIZE, GL_NEAREST, GL_R8, GL_R32UI, GL_RED, GL_STATIC_DRAW,
glCreateShader, glShaderSource, glCompileShader, glGetShaderiv, GL_STREAM_DRAW, GL_TEXTURE0, GL_TEXTURE1, GL_TEXTURE_2D_ARRAY,
GL_COMPILE_STATUS, glGetShaderInfoLog, glGetUniformLocation, GL_TEXTURE_BUFFER, GL_TEXTURE_MAG_FILTER, GL_TEXTURE_MIN_FILTER,
glGetAttribLocation, glUseProgram, glBindVertexArray, GL_TEXTURE0, GL_TEXTURE_WRAP_S, GL_TEXTURE_WRAP_T, GL_TRUE, GL_UNPACK_ALIGNMENT,
GL_TEXTURE1, glGetIntegerv, GL_MAX_ARRAY_TEXTURE_LAYERS, glNamedBufferData, GL_UNSIGNED_BYTE, GL_VERTEX_SHADER, ITALIC, SpriteMap, copy_image_sub_data,
GL_MAX_TEXTURE_SIZE, glDeleteTexture, GL_TEXTURE_2D_ARRAY, glGenTextures, glActiveTexture, glAttachShader, glBindBuffer, glBindTexture,
glBindTexture, glTexParameteri, GL_CLAMP_TO_EDGE, glDeleteBuffer, glBindVertexArray, glCompileShader, glCopyImageSubData, glCreateProgram,
GL_TEXTURE_MAG_FILTER, GL_TEXTURE_MIN_FILTER, GL_TEXTURE_WRAP_S, glCreateShader, glDeleteBuffer, glDeleteProgram, glDeleteShader,
GL_NEAREST, GL_TEXTURE_WRAP_T, glGenBuffers, GL_R8, GL_RED, glDeleteTexture, glEnableVertexAttribArray, glGenBuffers, glGenTextures,
GL_UNPACK_ALIGNMENT, GL_UNSIGNED_BYTE, GL_STATIC_DRAW, GL_STREAM_DRAW, glGenVertexArrays, glGetAttribLocation, glGetBufferSubData, glGetIntegerv,
GL_TEXTURE_BUFFER, GL_R32UI, GL_FLOAT, GL_ARRAY_BUFFER, glBindBuffer, glGetProgramInfoLog, glGetProgramiv, glGetShaderInfoLog, glGetShaderiv,
glPixelStorei, glTexBuffer, glActiveTexture, glTexStorage3D, glGetUniformLocation, glLinkProgram, glNamedBufferData, glPixelStorei,
glCopyImageSubData, glTexSubImage3D, ITALIC, BOLD, SpriteMap, glShaderSource, glTexBuffer, glTexParameteri, glTexStorage3D,
glEnableVertexAttribArray, glVertexAttribPointer, copy_image_sub_data, glTexSubImage3D, glUseProgram, glVertexAttribPointer,
replace_or_create_buffer replace_or_create_buffer
) )
from .fonts.render import render_cell
from .utils import safe_print from .utils import safe_print
GL_VERSION = (3, 3) GL_VERSION = (3, 3)
@@ -162,6 +162,11 @@ class Sprites:
prev_sz, self.prev_sprite_map_sz = self.prev_sprite_map_sz, sizeof(data) prev_sz, self.prev_sprite_map_sz = self.prev_sprite_map_sz, sizeof(data)
replace_or_create_buffer(buf_id, self.prev_sprite_map_sz, prev_sz, addressof(data), usage) replace_or_create_buffer(buf_id, self.prev_sprite_map_sz, prev_sz, addressof(data), usage)
self.bind_sprite_map(buf_id) self.bind_sprite_map(buf_id)
if False:
verify_data = type(data)()
glGetBufferSubData(buf_id, self.prev_sprite_map_sz, 0, addressof(verify_data))
if list(data) != list(verify_data):
raise RuntimeError('OpenGL failed to upload to buffer')
def bind_sprite_map(self, buf_id): def bind_sprite_map(self, buf_id):
glBindBuffer(GL_TEXTURE_BUFFER, buf_id) glBindBuffer(GL_TEXTURE_BUFFER, buf_id)