feat(framework): bump OpenGL 3.3 → 4.3 core context
Cierra 0049b. El context de fn::run_app pide ahora GL 4.3 core con forward-compat global, habilitando compute shaders, SSBOs, image load/store y atomic counters — bloques esenciales del graph_renderer GPU del proyecto osint_graph (issues 0049f y 0049h). Cambios: - cpp/framework/app_base.cpp: 4.3 core + forward-compat. Comentario marcando que es backward-compatible con shaders #version 330. - cpp/apps/primitives_gallery/capture.cpp: deja explicitamente 3.3 core porque WSL Mesa no entrega 4.3 offscreen (GLXBadFBConfig); ImGui + ImPlot funcionan igual en 3.3 para los goldens. - primitives_gallery: nuevo demo Gfx > gl_info que muestra Vendor/Renderer/Version/GLSL en runtime + status 4.3 (verde) + limites (MAX_TEXTURE_SIZE, MAX_VERTEX_ATTRIBS, MAX_UNIFORM_BLOCK_SIZE y, si 4.3+, MAX_SHADER_STORAGE_BUFFER_BINDINGS y compute shared mem). Solo glGetString/glGetIntegerv — sin loader extra. - About bumped a 0.4.0 con la nota del nuevo demo y de GL 4.3. - cpp/tests/test_visual.cpp: usa LIBGL_ALWAYS_SOFTWARE=1 al lanzar el capture para alinear el driver con update_goldens.sh; sin esto las diferencias de strings (llvmpipe vs d3d12) hacen que gl_info supere el 1% de tolerancia. - cpp/tests/golden/gl_info.png: nuevo golden. Build verificado en Linux (cmake build OK) + Windows cross-compile (cmake build OK). Las 27 pruebas pasan (incluida test_visual con 42 demos comparadas).
This commit is contained in:
@@ -120,4 +120,77 @@ void demo_shader_canvas() {
|
||||
);
|
||||
}
|
||||
|
||||
// Issue 0049b — Mostrar la version de OpenGL del contexto y un puñado de
|
||||
// limites 4.3 que confirman que compute shaders / SSBO / image load-store
|
||||
// estan disponibles. No es codigo del registry, solo introspeccion del
|
||||
// driver — sin estado, sin side effects: solo glGetString + glGetIntegerv.
|
||||
|
||||
#ifndef GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS
|
||||
#define GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS 0x90DD
|
||||
#endif
|
||||
#ifndef GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS
|
||||
#define GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS 0x90DC
|
||||
#endif
|
||||
#ifndef GL_MAX_COMPUTE_SHARED_MEMORY_SIZE
|
||||
#define GL_MAX_COMPUTE_SHARED_MEMORY_SIZE 0x8262
|
||||
#endif
|
||||
|
||||
void demo_gl_info() {
|
||||
demo_header("gl_info", "v1.0.0",
|
||||
"Introspeccion del contexto OpenGL activo (issue 0049b). El framework "
|
||||
"ahora pide GL 4.3 core, lo que habilita compute shaders, SSBOs, image "
|
||||
"load/store y atomic counters — bloques esenciales del graph_renderer "
|
||||
"GPU del proyecto osint_graph.");
|
||||
|
||||
auto gl_str = [](GLenum e) -> const char* {
|
||||
const GLubyte* s = glGetString(e);
|
||||
return s ? reinterpret_cast<const char*>(s) : "(null)";
|
||||
};
|
||||
|
||||
section("Driver");
|
||||
ImGui::Text("Vendor: %s", gl_str(GL_VENDOR));
|
||||
ImGui::Text("Renderer: %s", gl_str(GL_RENDERER));
|
||||
ImGui::Text("Version: %s", gl_str(GL_VERSION));
|
||||
ImGui::Text("GLSL: %s", gl_str(GL_SHADING_LANGUAGE_VERSION));
|
||||
|
||||
GLint major = 0, minor = 0;
|
||||
glGetIntegerv(GL_MAJOR_VERSION, &major);
|
||||
glGetIntegerv(GL_MINOR_VERSION, &minor);
|
||||
|
||||
const bool has_43 = (major > 4) || (major == 4 && minor >= 3);
|
||||
section("Capabilities");
|
||||
ImGui::Text("Context: %d.%d core", major, minor);
|
||||
if (has_43) {
|
||||
ImGui::TextColored(ImVec4(0.40f, 0.85f, 0.40f, 1.0f),
|
||||
"OpenGL 4.3+ — compute shaders, SSBOs, image load/store, atomic counters: AVAILABLE");
|
||||
} else {
|
||||
ImGui::TextColored(ImVec4(0.95f, 0.55f, 0.30f, 1.0f),
|
||||
"OpenGL < 4.3 — compute shaders / SSBOs NOT available on this driver");
|
||||
}
|
||||
|
||||
section("Limits");
|
||||
GLint v = 0;
|
||||
auto row = [&](const char* label, GLenum e) {
|
||||
v = 0;
|
||||
glGetIntegerv(e, &v);
|
||||
ImGui::Text("%-44s %d", label, v);
|
||||
};
|
||||
row("GL_MAX_TEXTURE_SIZE", GL_MAX_TEXTURE_SIZE);
|
||||
row("GL_MAX_VERTEX_ATTRIBS", GL_MAX_VERTEX_ATTRIBS);
|
||||
row("GL_MAX_UNIFORM_BLOCK_SIZE", GL_MAX_UNIFORM_BLOCK_SIZE);
|
||||
if (has_43) {
|
||||
row("GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS", GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS);
|
||||
row("GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS", GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS);
|
||||
row("GL_MAX_COMPUTE_SHARED_MEMORY_SIZE", GL_MAX_COMPUTE_SHARED_MEMORY_SIZE);
|
||||
}
|
||||
|
||||
code_block(
|
||||
"// Solo glGetString + glGetIntegerv — sin loader extra.\n"
|
||||
"GLint major = 0, minor = 0;\n"
|
||||
"glGetIntegerv(GL_MAJOR_VERSION, &major);\n"
|
||||
"glGetIntegerv(GL_MINOR_VERSION, &minor);\n"
|
||||
"bool has_compute = (major > 4) || (major == 4 && minor >= 3);"
|
||||
);
|
||||
}
|
||||
|
||||
} // namespace gallery
|
||||
|
||||
Reference in New Issue
Block a user