void PutParametersInProgram(VERTEXSHADER* vs, FRAGMENTSHADER* ps) { if (dirty_common_buffer) { common_buffer->bind(); common_buffer->upload((void*)&g_cs.uniform_buffer[g_cs.context]); dirty_common_buffer = false; } if (dirty_vertex_buffer) { vertex_buffer->bind(); vertex_buffer->upload((void*)&vs->uniform_buffer[vs->context]); dirty_vertex_buffer = false; } if (dirty_fragment_buffer) { fragment_buffer->bind(); fragment_buffer->upload((void*)&ps->uniform_buffer[ps->context]); dirty_fragment_buffer = false; } #ifdef ENABLE_MARKER if (GLEW_GREMEDY_string_marker) glStringMarkerGREMEDY(0, format("FS(%d): enable texture", ps->program).c_str() ); #endif g_cs.enable_texture(); ps->enable_texture(); // By default enable the unit 0, so I have the guarantee that any // texture command won't change current binding of others unit glActiveTexture(GL_TEXTURE0); }
// The same function for texture, also to cgGLEnable void ZZshGLSetTextureParameter(ZZshParameter param, GLuint texobj, const char* name) { #ifdef ENABLE_MARKER if (GLEW_GREMEDY_string_marker) glStringMarkerGREMEDY(0, format("CS: texture %d, param %d", texobj, param).c_str() ); #endif g_cs.set_texture(param, texobj); }
void ZZshSetParameter4fv(ZZshParameter param, const float* v, const char* name) { g_cs.ZZshSetParameter4fv(param, v); dirty_common_buffer = true; #ifdef ENABLE_MARKER if (GLEW_GREMEDY_string_marker) glStringMarkerGREMEDY(0, format("CS: uniform (%s) (%f)", name, *v).c_str() ); #endif }
void ZZshGLSetTextureParameter(ZZshShaderLink prog, ZZshParameter param, GLuint texobj, const char* name) { FRAGMENTSHADER* shader = (FRAGMENTSHADER*)prog.link; #ifdef ENABLE_MARKER if (GLEW_GREMEDY_string_marker) glStringMarkerGREMEDY(0, format("FS(%d):texture %d, param %d", shader->program, texobj, param).c_str() ); #endif shader->set_texture(param, texobj); }
void GLimp_LogComment(const char* comment) { static char buf[4096]; if (r_logFile->integer && GLEW_GREMEDY_string_marker) { // copy string and ensure it has a trailing '\0' Q_strncpyz(buf, comment, sizeof(buf)); glStringMarkerGREMEDY(strlen(buf), buf); } }
void DebugMarker::markImplementationDebugger(const std::string& string) { /** @todo Re-enable when extension wrangler is available for ES */ #ifndef MAGNUM_TARGET_GLES glStringMarkerGREMEDY(string.length(), string.c_str()); #else #if 0 glInsertEventMarkerEXT(string.length(), string.c_str()); #else static_cast<void>(string); #endif #endif }
void gfx_gl_log(char * fmt, ...) { if(GLEW_GREMEDY_string_marker) { va_list ap; char buf[1024]; va_start(ap, fmt); vsnprintf(buf, sizeof buf, fmt, ap); va_end(ap); glStringMarkerGREMEDY(0, buf); } }
// This is helper of cgGLSetParameter4fv, made for debug purpose. // Name could be any string. We must use it on compilation time, because erroneus handler does not // return name void ZZshSetParameter4fv(ZZshShaderLink& prog, ZZshParameter param, const float* v, const char* name) { if (prog.isFragment) { FRAGMENTSHADER* shader = (FRAGMENTSHADER*)prog.link; shader->ZZshSetParameter4fv(param, v); dirty_fragment_buffer = true; } else { VERTEXSHADER* shader = (VERTEXSHADER*)prog.link; shader->ZZshSetParameter4fv(param, v); dirty_vertex_buffer = true; } #ifdef ENABLE_MARKER if (GLEW_GREMEDY_string_marker) glStringMarkerGREMEDY(0, format("prog: uniform (%s) (%f)", name, *v).c_str() ); #endif }
void GLimp_LogComment( int level, char *comment, ... ) { if( level && level > r_logLevel->integer ) return; if( GLEW_GREMEDY_string_marker ) { size_t len; char msg[2048]; va_list vl; va_start( vl, comment ); len = vsnprintf( msg, sizeof( msg ) - 1, comment, vl ); va_end( vl ); if( len == -1 ) len = sizeof( msg ) - 1; glStringMarkerGREMEDY( len, msg ); } }
void GPU_Profile::dump(bool flush) { u32 high_limit; if (flush) high_limit = 1; else high_limit = 1000; while (datas.size() > high_limit) { ProfileInfo data_start = datas.front(); datas.pop_front(); ProfileInfo data_stop = datas.front(); datas.pop_front(); u32 gpu_time = read_diff_timers(data_start.timer, data_stop.timer); #ifdef ENABLE_MARKER if (GLEW_GREMEDY_string_marker) glStringMarkerGREMEDY(0, format("Time %6dus", gpu_time).c_str()); #else fprintf(stderr, "Frame %d (%d): %6dus\n", data_start.frame, data_start.draw, gpu_time); #endif } }
void GLRenderer::debugString(const std::string &text) { if (GLEW_GREMEDY_string_marker) glStringMarkerGREMEDY(0, text.c_str()); }
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_GREMEDYStringMarker_nglStringMarkerGREMEDY(JNIEnv *env, jclass clazz, jint len, jobject string, jint string_position, jlong function_pointer) { const GLbyte *string_address = ((const GLbyte *)(*env)->GetDirectBufferAddress(env, string)) + string_position; glStringMarkerGREMEDYPROC glStringMarkerGREMEDY = (glStringMarkerGREMEDYPROC)((intptr_t)function_pointer); glStringMarkerGREMEDY(len, string_address); }