mirror of
https://github.com/korenkonder/ReDIVA.git
synced 2026-10-01 19:28:02 +03:00
Added GL_ARB_debug_output and GL_EXT_debug_marker
This commit is contained in:
Vendored
BIN
Binary file not shown.
Vendored
BIN
Binary file not shown.
Vendored
BIN
Binary file not shown.
Vendored
BIN
Binary file not shown.
Vendored
+56
-3
@@ -1,13 +1,15 @@
|
||||
/*
|
||||
|
||||
OpenGL loader generated by glad 0.1.36 on Wed Apr 23 10:45:44 2025.
|
||||
OpenGL loader generated by glad 0.1.36 on Mon May 25 02:55:23 2026.
|
||||
|
||||
Language/Generator: C/C++
|
||||
Specification: gl
|
||||
APIs: gl=4.6
|
||||
Profile: core
|
||||
Extensions:
|
||||
GL_ARB_debug_output,
|
||||
GL_ARB_texture_compression_bptc,
|
||||
GL_EXT_debug_marker,
|
||||
GL_EXT_texture_compression_rgtc,
|
||||
GL_EXT_texture_compression_s3tc,
|
||||
GL_EXT_texture_filter_anisotropic,
|
||||
@@ -21,9 +23,9 @@
|
||||
Reproducible: False
|
||||
|
||||
Commandline:
|
||||
--profile="core" --api="gl=4.6" --generator="c" --spec="gl" --no-loader --extensions="GL_ARB_texture_compression_bptc,GL_EXT_texture_compression_rgtc,GL_EXT_texture_compression_s3tc,GL_EXT_texture_filter_anisotropic,WGL_ARB_extensions_string,WGL_EXT_extensions_string,WGL_NV_DX_interop,WGL_NV_DX_interop2"
|
||||
--profile="core" --api="gl=4.6" --generator="c" --spec="gl" --no-loader --extensions="GL_ARB_debug_output,GL_ARB_texture_compression_bptc,GL_EXT_debug_marker,GL_EXT_texture_compression_rgtc,GL_EXT_texture_compression_s3tc,GL_EXT_texture_filter_anisotropic,WGL_ARB_extensions_string,WGL_EXT_extensions_string,WGL_NV_DX_interop,WGL_NV_DX_interop2"
|
||||
Online:
|
||||
https://glad.dav1d.de/#profile=core&language=c&specification=gl&api=gl%3D4.6&extensions=GL_ARB_texture_compression_bptc&extensions=GL_EXT_texture_compression_rgtc&extensions=GL_EXT_texture_compression_s3tc&extensions=GL_EXT_texture_filter_anisotropic&extensions=WGL_ARB_extensions_string&extensions=WGL_EXT_extensions_string&extensions=WGL_NV_DX_interop&extensions=WGL_NV_DX_interop2
|
||||
https://glad.dav1d.de/#profile=core&language=c&specification=gl&api=gl%3D4.6&extensions=GL_ARB_debug_output&extensions=GL_ARB_texture_compression_bptc&extensions=GL_EXT_debug_marker&extensions=GL_EXT_texture_compression_rgtc&extensions=GL_EXT_texture_compression_s3tc&extensions=GL_EXT_texture_filter_anisotropic&extensions=WGL_ARB_extensions_string&extensions=WGL_EXT_extensions_string&extensions=WGL_NV_DX_interop&extensions=WGL_NV_DX_interop2
|
||||
*/
|
||||
|
||||
|
||||
@@ -3690,6 +3692,28 @@ typedef void (APIENTRYP PFNGLPOLYGONOFFSETCLAMPPROC)(GLfloat factor, GLfloat uni
|
||||
GLAPI PFNGLPOLYGONOFFSETCLAMPPROC glad_glPolygonOffsetClamp;
|
||||
#define glPolygonOffsetClamp glad_glPolygonOffsetClamp
|
||||
#endif
|
||||
#define GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB 0x8242
|
||||
#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB 0x8243
|
||||
#define GL_DEBUG_CALLBACK_FUNCTION_ARB 0x8244
|
||||
#define GL_DEBUG_CALLBACK_USER_PARAM_ARB 0x8245
|
||||
#define GL_DEBUG_SOURCE_API_ARB 0x8246
|
||||
#define GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB 0x8247
|
||||
#define GL_DEBUG_SOURCE_SHADER_COMPILER_ARB 0x8248
|
||||
#define GL_DEBUG_SOURCE_THIRD_PARTY_ARB 0x8249
|
||||
#define GL_DEBUG_SOURCE_APPLICATION_ARB 0x824A
|
||||
#define GL_DEBUG_SOURCE_OTHER_ARB 0x824B
|
||||
#define GL_DEBUG_TYPE_ERROR_ARB 0x824C
|
||||
#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB 0x824D
|
||||
#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB 0x824E
|
||||
#define GL_DEBUG_TYPE_PORTABILITY_ARB 0x824F
|
||||
#define GL_DEBUG_TYPE_PERFORMANCE_ARB 0x8250
|
||||
#define GL_DEBUG_TYPE_OTHER_ARB 0x8251
|
||||
#define GL_MAX_DEBUG_MESSAGE_LENGTH_ARB 0x9143
|
||||
#define GL_MAX_DEBUG_LOGGED_MESSAGES_ARB 0x9144
|
||||
#define GL_DEBUG_LOGGED_MESSAGES_ARB 0x9145
|
||||
#define GL_DEBUG_SEVERITY_HIGH_ARB 0x9146
|
||||
#define GL_DEBUG_SEVERITY_MEDIUM_ARB 0x9147
|
||||
#define GL_DEBUG_SEVERITY_LOW_ARB 0x9148
|
||||
#define GL_COMPRESSED_RGBA_BPTC_UNORM_ARB 0x8E8C
|
||||
#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB 0x8E8D
|
||||
#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB 0x8E8E
|
||||
@@ -3704,10 +3728,39 @@ GLAPI PFNGLPOLYGONOFFSETCLAMPPROC glad_glPolygonOffsetClamp;
|
||||
#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3
|
||||
#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE
|
||||
#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF
|
||||
#ifndef GL_ARB_debug_output
|
||||
#define GL_ARB_debug_output 1
|
||||
GLAPI int GLAD_GL_ARB_debug_output;
|
||||
typedef void (APIENTRYP PFNGLDEBUGMESSAGECONTROLARBPROC)(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
|
||||
GLAPI PFNGLDEBUGMESSAGECONTROLARBPROC glad_glDebugMessageControlARB;
|
||||
#define glDebugMessageControlARB glad_glDebugMessageControlARB
|
||||
typedef void (APIENTRYP PFNGLDEBUGMESSAGEINSERTARBPROC)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf);
|
||||
GLAPI PFNGLDEBUGMESSAGEINSERTARBPROC glad_glDebugMessageInsertARB;
|
||||
#define glDebugMessageInsertARB glad_glDebugMessageInsertARB
|
||||
typedef void (APIENTRYP PFNGLDEBUGMESSAGECALLBACKARBPROC)(GLDEBUGPROCARB callback, const void *userParam);
|
||||
GLAPI PFNGLDEBUGMESSAGECALLBACKARBPROC glad_glDebugMessageCallbackARB;
|
||||
#define glDebugMessageCallbackARB glad_glDebugMessageCallbackARB
|
||||
typedef GLuint (APIENTRYP PFNGLGETDEBUGMESSAGELOGARBPROC)(GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog);
|
||||
GLAPI PFNGLGETDEBUGMESSAGELOGARBPROC glad_glGetDebugMessageLogARB;
|
||||
#define glGetDebugMessageLogARB glad_glGetDebugMessageLogARB
|
||||
#endif
|
||||
#ifndef GL_ARB_texture_compression_bptc
|
||||
#define GL_ARB_texture_compression_bptc 1
|
||||
GLAPI int GLAD_GL_ARB_texture_compression_bptc;
|
||||
#endif
|
||||
#ifndef GL_EXT_debug_marker
|
||||
#define GL_EXT_debug_marker 1
|
||||
GLAPI int GLAD_GL_EXT_debug_marker;
|
||||
typedef void (APIENTRYP PFNGLINSERTEVENTMARKEREXTPROC)(GLsizei length, const GLchar *marker);
|
||||
GLAPI PFNGLINSERTEVENTMARKEREXTPROC glad_glInsertEventMarkerEXT;
|
||||
#define glInsertEventMarkerEXT glad_glInsertEventMarkerEXT
|
||||
typedef void (APIENTRYP PFNGLPUSHGROUPMARKEREXTPROC)(GLsizei length, const GLchar *marker);
|
||||
GLAPI PFNGLPUSHGROUPMARKEREXTPROC glad_glPushGroupMarkerEXT;
|
||||
#define glPushGroupMarkerEXT glad_glPushGroupMarkerEXT
|
||||
typedef void (APIENTRYP PFNGLPOPGROUPMARKEREXTPROC)(void);
|
||||
GLAPI PFNGLPOPGROUPMARKEREXTPROC glad_glPopGroupMarkerEXT;
|
||||
#define glPopGroupMarkerEXT glad_glPopGroupMarkerEXT
|
||||
#endif
|
||||
#ifndef GL_EXT_texture_compression_rgtc
|
||||
#define GL_EXT_texture_compression_rgtc 1
|
||||
GLAPI int GLAD_GL_EXT_texture_compression_rgtc;
|
||||
|
||||
Vendored
+5
-3
@@ -1,13 +1,15 @@
|
||||
/*
|
||||
|
||||
WGL loader generated by glad 0.1.36 on Wed Apr 23 10:45:44 2025.
|
||||
WGL loader generated by glad 0.1.36 on Mon May 25 02:55:23 2026.
|
||||
|
||||
Language/Generator: C/C++
|
||||
Specification: wgl
|
||||
APIs: wgl=1.0
|
||||
Profile: -
|
||||
Extensions:
|
||||
GL_ARB_debug_output,
|
||||
GL_ARB_texture_compression_bptc,
|
||||
GL_EXT_debug_marker,
|
||||
GL_EXT_texture_compression_rgtc,
|
||||
GL_EXT_texture_compression_s3tc,
|
||||
GL_EXT_texture_filter_anisotropic,
|
||||
@@ -21,9 +23,9 @@
|
||||
Reproducible: False
|
||||
|
||||
Commandline:
|
||||
--api="wgl=1.0" --generator="c" --spec="wgl" --no-loader --extensions="GL_ARB_texture_compression_bptc,GL_EXT_texture_compression_rgtc,GL_EXT_texture_compression_s3tc,GL_EXT_texture_filter_anisotropic,WGL_ARB_extensions_string,WGL_EXT_extensions_string,WGL_NV_DX_interop,WGL_NV_DX_interop2"
|
||||
--api="wgl=1.0" --generator="c" --spec="wgl" --no-loader --extensions="GL_ARB_debug_output,GL_ARB_texture_compression_bptc,GL_EXT_debug_marker,GL_EXT_texture_compression_rgtc,GL_EXT_texture_compression_s3tc,GL_EXT_texture_filter_anisotropic,WGL_ARB_extensions_string,WGL_EXT_extensions_string,WGL_NV_DX_interop,WGL_NV_DX_interop2"
|
||||
Online:
|
||||
https://glad.dav1d.de/#language=c&specification=wgl&api=wgl%3D1.0&extensions=GL_ARB_texture_compression_bptc&extensions=GL_EXT_texture_compression_rgtc&extensions=GL_EXT_texture_compression_s3tc&extensions=GL_EXT_texture_filter_anisotropic&extensions=WGL_ARB_extensions_string&extensions=WGL_EXT_extensions_string&extensions=WGL_NV_DX_interop&extensions=WGL_NV_DX_interop2
|
||||
https://glad.dav1d.de/#language=c&specification=wgl&api=wgl%3D1.0&extensions=GL_ARB_debug_output&extensions=GL_ARB_texture_compression_bptc&extensions=GL_EXT_debug_marker&extensions=GL_EXT_texture_compression_rgtc&extensions=GL_EXT_texture_compression_s3tc&extensions=GL_EXT_texture_filter_anisotropic&extensions=WGL_ARB_extensions_string&extensions=WGL_EXT_extensions_string&extensions=WGL_NV_DX_interop&extensions=WGL_NV_DX_interop2
|
||||
*/
|
||||
|
||||
|
||||
|
||||
@@ -720,6 +720,8 @@ inline void gl_rend_state::active_texture(int32_t index) {
|
||||
inline void gl_rend_state::begin_event(const char* message, int32_t length) {
|
||||
if (GLAD_GL_VERSION_4_3)
|
||||
glPushDebugGroup(GL_DEBUG_SOURCE_APPLICATION, 0, (GLsizei)length, message);
|
||||
else if (GLAD_GL_EXT_debug_marker)
|
||||
glPushGroupMarkerEXT((GLsizei)length, message);
|
||||
}
|
||||
|
||||
inline void gl_rend_state::begin_query(GLenum target, GLuint id) {
|
||||
@@ -1122,6 +1124,8 @@ inline void gl_rend_state::enable_stencil_test() {
|
||||
inline void gl_rend_state::end_event() {
|
||||
if (GLAD_GL_VERSION_4_3)
|
||||
glPopDebugGroup();
|
||||
else if (GLAD_GL_EXT_debug_marker)
|
||||
glPopGroupMarkerEXT();
|
||||
}
|
||||
|
||||
inline void gl_rend_state::end_query(GLenum target) {
|
||||
@@ -1217,14 +1221,16 @@ void gl_rend_state::get() {
|
||||
glGetInteger64i_v(GL_UNIFORM_BUFFER_SIZE, i, (GLint64*)&uniform_buffer_sizes[i]);
|
||||
}
|
||||
|
||||
shader_storage_buffer_start_index = 14;
|
||||
shader_storage_buffer_end_index = -1;
|
||||
if (GLAD_GL_VERSION_4_3) {
|
||||
shader_storage_buffer_start_index = 14;
|
||||
shader_storage_buffer_end_index = -1;
|
||||
|
||||
glGetIntegerv(GL_SHADER_STORAGE_BUFFER_BINDING, (GLint*)&shader_storage_buffer_binding);
|
||||
for (GLuint i = 0; i < 14; i++) {
|
||||
glGetIntegeri_v(GL_SHADER_STORAGE_BUFFER_BINDING, i, (GLint*)&shader_storage_buffer_bindings[i]);
|
||||
glGetInteger64i_v(GL_SHADER_STORAGE_BUFFER_START, i, (GLint64*)&shader_storage_buffer_offsets[i]);
|
||||
glGetInteger64i_v(GL_SHADER_STORAGE_BUFFER_SIZE, i, (GLint64*)&shader_storage_buffer_sizes[i]);
|
||||
glGetIntegerv(GL_SHADER_STORAGE_BUFFER_BINDING, (GLint*)&shader_storage_buffer_binding);
|
||||
for (GLuint i = 0; i < 14; i++) {
|
||||
glGetIntegeri_v(GL_SHADER_STORAGE_BUFFER_BINDING, i, (GLint*)&shader_storage_buffer_bindings[i]);
|
||||
glGetInteger64i_v(GL_SHADER_STORAGE_BUFFER_START, i, (GLint64*)&shader_storage_buffer_offsets[i]);
|
||||
glGetInteger64i_v(GL_SHADER_STORAGE_BUFFER_SIZE, i, (GLint64*)&shader_storage_buffer_sizes[i]);
|
||||
}
|
||||
}
|
||||
|
||||
glGetBooleanv(GL_COLOR_WRITEMASK, color_mask);
|
||||
@@ -1869,7 +1875,7 @@ inline void gl_rend_state::update_uniform_buffer() {
|
||||
}
|
||||
|
||||
inline void gl_rend_state::update_shader_storage_buffer() {
|
||||
if (update_flags & GL_REND_STATE_UPDATE_SHADER_STORAGE_BUFFER) {
|
||||
if (GLAD_GL_VERSION_4_3 && (update_flags & GL_REND_STATE_UPDATE_SHADER_STORAGE_BUFFER)) {
|
||||
for (int32_t index = shader_storage_buffer_start_index;
|
||||
index <= shader_storage_buffer_end_index; index++) {
|
||||
if (curr_shader_storage_buffer_bindings[index] == shader_storage_buffer_bindings[index]
|
||||
|
||||
@@ -109,7 +109,8 @@ void gl_state_struct::get() {
|
||||
glGetIntegerv(GL_ELEMENT_ARRAY_BUFFER_BINDING, (GLint*)&element_array_buffer_binding);
|
||||
|
||||
glGetIntegerv(GL_UNIFORM_BUFFER_BINDING, (GLint*)&uniform_buffer_binding);
|
||||
glGetIntegerv(GL_SHADER_STORAGE_BUFFER_BINDING, (GLint*)&shader_storage_buffer_binding);
|
||||
if (GLAD_GL_VERSION_4_3)
|
||||
glGetIntegerv(GL_SHADER_STORAGE_BUFFER_BINDING, (GLint*)&shader_storage_buffer_binding);
|
||||
}
|
||||
|
||||
void* gl_state_struct::map_array_buffer(GLuint buffer) {
|
||||
|
||||
@@ -2772,18 +2772,18 @@ namespace mdl {
|
||||
return false;
|
||||
|
||||
std::vector<GLuint>* textures = get_objset_gen_textures_vec(obj_info.set_id);
|
||||
VertexBuffer* obj_vert_buffer = get_object_vertex_buffer(obj_info);
|
||||
IndexBuffer* ObjIB = get_object_index_buffer(obj_info);
|
||||
VertexBuffer* vbhn_array = get_object_vertex_buffer(obj_info);
|
||||
IndexBuffer* ibhn_array = get_object_index_buffer(obj_info);
|
||||
|
||||
::obj* obj_morph = 0;
|
||||
VertexBuffer* obj_morph_vert_buffer = 0;
|
||||
VertexBuffer* morph_vbhn_array = 0;
|
||||
if (morph.object.set_id != -1) {
|
||||
obj_morph = get_object_header(morph.object);
|
||||
obj_morph_vert_buffer = get_object_vertex_buffer(morph.object);
|
||||
morph_vbhn_array = get_object_vertex_buffer(morph.object);
|
||||
}
|
||||
|
||||
return entry_obj(obj, mat, obj_vert_buffer, ObjIB,
|
||||
textures, blend_color, bone_mat, obj_morph, obj_morph_vert_buffer,
|
||||
return entry_obj(obj, mat, vbhn_array, ibhn_array,
|
||||
textures, blend_color, bone_mat, obj_morph, morph_vbhn_array,
|
||||
instances_count, instances_mat, func, func_data, enable_bone_mat);
|
||||
}
|
||||
|
||||
|
||||
+1
-8
@@ -1382,13 +1382,6 @@ bool create_mesh_index_buffer(IndexBuffer& ibhn, obj_mesh& mesh) {
|
||||
return true;
|
||||
}
|
||||
|
||||
#if SHARED_OBJECT_BUFFER
|
||||
// Added
|
||||
inline void create_mesh_index_buffer(IndexBuffer& ibhn, obj_mesh& mesh, GLuint in_ib) {
|
||||
//ibhn.create(in_ib, size);
|
||||
}
|
||||
#endif
|
||||
|
||||
// 0x140458280
|
||||
bool create_mesh_vertex_buffer(VertexBuffer& vbhn, obj_mesh& mesh, GL::BufferUsage usage) {
|
||||
if (!mesh.num_vertex || !mesh.vertex_array)
|
||||
@@ -1923,7 +1916,7 @@ inline int32_t get_mesh_index_modern(uint32_t hash, const char* mesh_name) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
// 0x140459E10
|
||||
// 0x140459E10
|
||||
inline VertexBuffer* get_mesh_vertex_buffer(object_info obj_id, const char* mesh_name) {
|
||||
int32_t mesh_index = get_mesh_index(obj_id, mesh_name);
|
||||
if (mesh_index == -1)
|
||||
|
||||
@@ -91,9 +91,6 @@ extern void objset_info_storage_free();
|
||||
extern bool check_objset_ready(uint32_t objset_index);
|
||||
|
||||
extern bool create_mesh_index_buffer(IndexBuffer& ibhn, obj_mesh& mesh);
|
||||
#if SHARED_OBJECT_BUFFER
|
||||
extern void create_mesh_index_buffer(IndexBuffer& ibhn, obj_mesh& mesh, GLuint in_ib); // Added
|
||||
#endif
|
||||
extern bool create_mesh_vertex_buffer(VertexBuffer& vbhn,
|
||||
obj_mesh& mesh, GL::BufferUsage usage = GL::BUFFER_USAGE_STATIC);
|
||||
#if SHARED_OBJECT_BUFFER
|
||||
|
||||
@@ -189,14 +189,14 @@ GLenum VertexBuffer::get_target() const {
|
||||
}
|
||||
|
||||
// 0x1404616F0
|
||||
GLuint create_index_buffer(uint32_t size, const void* data) {
|
||||
GLuint create_index_buffer(uint32_t size, const void* buf) {
|
||||
GLuint ib = 0;
|
||||
glGenBuffers(1, &ib);
|
||||
gl_state.bind_element_array_buffer(ib);
|
||||
if (GLAD_GL_VERSION_4_4)
|
||||
glBufferStorage(GL_ELEMENT_ARRAY_BUFFER, size, data, 0);
|
||||
glBufferStorage(GL_ELEMENT_ARRAY_BUFFER, size, buf, 0);
|
||||
else
|
||||
glBufferData(GL_ELEMENT_ARRAY_BUFFER, size, data, GL_STATIC_DRAW);
|
||||
glBufferData(GL_ELEMENT_ARRAY_BUFFER, size, buf, GL_STATIC_DRAW);
|
||||
gl_state.bind_element_array_buffer(0);
|
||||
|
||||
if (glGetError()) {
|
||||
@@ -233,17 +233,17 @@ void free_index_buffer(GLuint ib) {
|
||||
}
|
||||
|
||||
// 0x1404617B0
|
||||
GLuint create_vertex_buffer(uint32_t size, const void* data, GL::BufferUsage usage) {
|
||||
GLuint create_vertex_buffer(uint32_t size, const void* buf, GL::BufferUsage usage) {
|
||||
GLuint vb = 0;
|
||||
glGenBuffers(1, &vb);
|
||||
gl_state.bind_array_buffer(vb);
|
||||
if (GLAD_GL_VERSION_4_4 && usage != GL::BUFFER_USAGE_STREAM) {
|
||||
GLbitfield flags = usage == GL::BUFFER_USAGE_DYNAMIC
|
||||
? GL_DYNAMIC_STORAGE_BIT | GL_MAP_WRITE_BIT : 0;
|
||||
glBufferStorage(GL_ARRAY_BUFFER, size, data, flags);
|
||||
glBufferStorage(GL_ARRAY_BUFFER, size, buf, flags);
|
||||
}
|
||||
else
|
||||
glBufferData(GL_ARRAY_BUFFER, size, data, BufferUsageToGLenum(usage));
|
||||
glBufferData(GL_ARRAY_BUFFER, size, buf, GL::BufferUsageToGLenum(usage));
|
||||
gl_state.bind_array_buffer(0);
|
||||
|
||||
if (glGetError()) {
|
||||
|
||||
+14
-10
@@ -34,6 +34,9 @@ static const GLuint MORPH_TEXCOORD0_INDEX = 13;
|
||||
static const GLuint MORPH_TEXCOORD1_INDEX = 14;
|
||||
static const GLuint BONE_INDEX_INDEX = 15;
|
||||
|
||||
uint32_t render_context::max_uniform_block_size = 0;
|
||||
uint32_t render_context::max_storage_block_size = 0;
|
||||
|
||||
draw_state_stats::draw_state_stats() : sub_mesh_count(), sub_mesh_no_mat_count(),
|
||||
sub_mesh_cheap_count(), field_C(), field_10(), draw_count(), draw_triangle_count(), field_1C() {
|
||||
|
||||
@@ -948,11 +951,11 @@ void render_context::shared_storage_buffer::destroy() {
|
||||
}
|
||||
|
||||
size_t render_context::shared_storage_buffer::fill_data(const void* data, size_t size, size_t buffer_size) {
|
||||
size_t offset = align_val(this->offset, sv_min_storage_buffer_alignment);
|
||||
if (offset != this->offset)
|
||||
memset((void*)((size_t)this->data + this->offset), 0, offset - this->offset);
|
||||
size_t offset = this->offset;
|
||||
memcpy((void*)((size_t)this->data + offset), data, size);
|
||||
this->offset = offset + size;
|
||||
this->offset = align_val(offset + size, sv_min_storage_buffer_alignment);
|
||||
if (this->offset != offset)
|
||||
memset((void*)((size_t)this->data + (offset + size)), 0, this->offset - (offset + size));
|
||||
end = max_def(end, offset + buffer_size);
|
||||
return offset;
|
||||
}
|
||||
@@ -982,11 +985,11 @@ void render_context::shared_uniform_buffer::destroy() {
|
||||
}
|
||||
|
||||
size_t render_context::shared_uniform_buffer::fill_data(const void* data, size_t size, size_t buffer_size) {
|
||||
size_t offset = align_val(this->offset, sv_min_uniform_buffer_alignment);
|
||||
if (offset != this->offset)
|
||||
memset((void*)((size_t)this->data + this->offset), 0, offset - this->offset);
|
||||
size_t offset = this->offset;
|
||||
memcpy((void*)((size_t)this->data + offset), data, size);
|
||||
this->offset = offset + size;
|
||||
this->offset = align_val(offset + size, sv_min_uniform_buffer_alignment);
|
||||
if (this->offset != offset)
|
||||
memset((void*)((size_t)this->data + (offset + size)), 0, this->offset - (offset + size));
|
||||
end = max_def(end, offset + buffer_size);
|
||||
return offset;
|
||||
}
|
||||
@@ -1254,9 +1257,10 @@ sprite_width(), sprite_height(), screen_x_offset(), screen_y_offset(), screen_wi
|
||||
glSamplerParameteri(sampler, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER);
|
||||
glSamplerParameterf(sampler, GL_TEXTURE_MAX_ANISOTROPY_EXT, 16.0f);
|
||||
|
||||
max_uniform_block_size = min_def((uint32_t)sv_max_uniform_buffer_size, 64u * 1024);
|
||||
if (!max_uniform_block_size)
|
||||
max_uniform_block_size = min_def((uint32_t)sv_max_uniform_buffer_size, 64u * 1024);
|
||||
|
||||
if (GLAD_GL_VERSION_4_3)
|
||||
if (GLAD_GL_VERSION_4_3 && !max_storage_block_size)
|
||||
max_storage_block_size = min_def((uint32_t)sv_max_storage_buffer_size, 1024u * 1024);
|
||||
}
|
||||
|
||||
|
||||
@@ -613,9 +613,6 @@ struct render_context {
|
||||
int32_t screen_width;
|
||||
int32_t screen_height;
|
||||
|
||||
uint32_t max_uniform_block_size = 0;
|
||||
uint32_t max_storage_block_size = 0;
|
||||
|
||||
std::vector<render_context::shared_storage_buffer> shared_storage_buffers;
|
||||
std::unordered_map<size_t, shared_buffer_entry> shared_storage_buffer_entries;
|
||||
std::vector<render_context::shared_uniform_buffer> shared_uniform_buffers;
|
||||
@@ -623,6 +620,9 @@ struct render_context {
|
||||
std::vector<render_context::texture_skinning_buffer> texture_skinning_buffers;
|
||||
std::unordered_map<size_t, texture_skinning_buffer_entry> texture_skinning_buffer_entries;
|
||||
|
||||
static uint32_t max_uniform_block_size;
|
||||
static uint32_t max_storage_block_size;
|
||||
|
||||
render_context();
|
||||
~render_context();
|
||||
|
||||
|
||||
@@ -1949,11 +1949,11 @@ void RobCloth::set_data(const obj_skin_ex_node_cloth* cldata,
|
||||
return;
|
||||
|
||||
for (int32_t i = 0; i < 2; i++) {
|
||||
if (!mesh[i].num_vertex || !mesh[i].vertex_array || !ib[i].ib)
|
||||
if (!mesh[i].num_vertex || !mesh[i].vertex_array || !ib[i].get_glib())
|
||||
continue;
|
||||
|
||||
VertexBuffer* vbhn_array = &vb[i];
|
||||
IndexBuffer* ibhn_array = &ib[i];
|
||||
VertexBuffer* vbhn = &vb[i];
|
||||
IndexBuffer* ibhn = &ib[i];
|
||||
|
||||
obj_mesh* mesh = &this->mesh[i];
|
||||
for (int32_t j = 0; j < mesh->num_submesh; j++) {
|
||||
@@ -1961,9 +1961,9 @@ void RobCloth::set_data(const obj_skin_ex_node_cloth* cldata,
|
||||
for (int32_t k = 0; k < (mesh->attrib.m.soft_body ? 2 : 1); k++) {
|
||||
extern render_context* rctx_ptr;
|
||||
rctx_ptr->disp_manager->add_vertex_array(mesh, &mesh->submesh_array[j], material,
|
||||
vbhn_array->get_glvb(), vbhn_array->get_glvb_offset(), ibhn_array->ib, 0, 0);
|
||||
vbhn->get_glvb(), vbhn->get_glvb_offset(), ibhn->get_glib(), 0, 0);
|
||||
|
||||
vbhn_array->flip();
|
||||
vbhn->flip();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4324,6 +4324,7 @@ static void make_direction_matrix(mat4& mat, const vec3& v0, const vec3& v1) {
|
||||
mat4_set(&axis, -s, c, &mat);
|
||||
}
|
||||
|
||||
// 0x14021CF00
|
||||
static void modify_cloth_object(obj_mesh* mesh, VertexBuffer* vb,
|
||||
CLOTH_VERTEX* vtxarg, float_t sgn, int32_t num_idx, uint16_t* idxtbl, bool do_ura) {
|
||||
if (!mesh || !vb || (mesh->vertex_format
|
||||
|
||||
+6
-1
@@ -473,6 +473,11 @@ int32_t app_main(const app_init_struct& ais) {
|
||||
glDebugMessageCallback(render_debug_output, 0);
|
||||
glDebugMessageControl(GL_DONT_CARE, GL_DONT_CARE, GL_DONT_CARE, 0, 0, GL_TRUE);
|
||||
}
|
||||
else if (GLAD_GL_ARB_debug_output) {
|
||||
glEnable(GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB);
|
||||
glDebugMessageCallbackARB(render_debug_output, 0);
|
||||
glDebugMessageControlARB(GL_DONT_CARE, GL_DONT_CARE, GL_DONT_CARE, 0, 0, GL_TRUE);
|
||||
}
|
||||
#endif
|
||||
|
||||
const char* vendor_string = (const char*)glGetString(GL_VENDOR);
|
||||
@@ -692,7 +697,7 @@ static bool app_init(const app_init_struct& ais) {
|
||||
window = glfwCreateWindow(width, height, application_name, maximized ? monitor : 0, 0);
|
||||
#ifdef USE_OPENGL
|
||||
else {
|
||||
int32_t minor = 6;
|
||||
int32_t minor = ais.max_minor_ver;
|
||||
window = 0;
|
||||
while (!window && minor >= 1) {
|
||||
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4);
|
||||
|
||||
+7
-5
@@ -30,20 +30,22 @@ enum render_scale {
|
||||
struct app_init_struct {
|
||||
vec2i res;
|
||||
int32_t scale_index;
|
||||
int32_t max_minor_ver;
|
||||
bool vulkan;
|
||||
const wchar_t* config_path;
|
||||
|
||||
inline app_init_struct() : scale_index(), vulkan(), config_path() {
|
||||
inline app_init_struct() : scale_index(), max_minor_ver(), vulkan(), config_path() {
|
||||
|
||||
}
|
||||
|
||||
inline app_init_struct(bool vulkan, const wchar_t* config_path = 0)
|
||||
: scale_index(), vulkan(vulkan), config_path(config_path) {
|
||||
inline app_init_struct(int32_t max_minor_ver, bool vulkan, const wchar_t* config_path = 0)
|
||||
: scale_index(), max_minor_ver(max_minor_ver), vulkan(vulkan), config_path(config_path) {
|
||||
|
||||
}
|
||||
|
||||
inline app_init_struct(vec2i res, int32_t scale_index, bool vulkan, const wchar_t* config_path = 0)
|
||||
: res(res), scale_index(scale_index), vulkan(vulkan), config_path(config_path) {
|
||||
inline app_init_struct(vec2i res, int32_t scale_index,
|
||||
int32_t max_minor_ver, bool vulkan, const wchar_t* config_path = 0)
|
||||
: res(res), scale_index(scale_index), max_minor_ver(max_minor_ver), vulkan(vulkan), config_path(config_path) {
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
+5
-2
@@ -212,11 +212,14 @@ int32_t wmain(int32_t argc, wchar_t** argv) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
int32_t max_minor_ver = 2;
|
||||
bool vulkan = false;
|
||||
const wchar_t* config_path = 0;
|
||||
if (argc >= 2)
|
||||
for (int32_t i = 1; i < argc; i++) {
|
||||
if (!wcscmp(argv[i], L"--vulkan"))
|
||||
if (!wcscmp(argv[i], L"--max-minor-ver") && i + 1 < argc)
|
||||
max_minor_ver = _wtoi(argv[++i]);
|
||||
else if (!wcscmp(argv[i], L"--vulkan"))
|
||||
vulkan = true;
|
||||
else if (!wcscmp(argv[i], L"--config") && i + 1 < argc)
|
||||
config_path = argv[++i];
|
||||
@@ -239,7 +242,7 @@ int32_t wmain(int32_t argc, wchar_t** argv) {
|
||||
__cpuidex(cpuidex_data, 7, 0);
|
||||
cpu_caps_avx2 = !!(cpuidex_data[1] & (1 << 5));
|
||||
|
||||
app_main({ vulkan, config_path });
|
||||
app_main({ max_minor_ver, vulkan, config_path });
|
||||
|
||||
timeEndPeriod(1);
|
||||
return 0;
|
||||
|
||||
Reference in New Issue
Block a user