mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-07-15 12:07:03 +00:00
Add a few more extensions we support, and some more we never will
* There are a handful of ARB and EXT extensions left that aren't in either the list of supported, or will-never support. These are ones that I want to support but haven't written the code for.
This commit is contained in:
@@ -79,6 +79,7 @@ void DoVendorChecks(const GLHookSet &gl, GLWindowingData context)
|
||||
EXT_CHECK(ARB_enhanced_layouts);
|
||||
EXT_CHECK(EXT_polygon_offset_clamp);
|
||||
EXT_CHECK(KHR_blend_equation_advanced_coherent);
|
||||
EXT_CHECK(EXT_raster_multisample);
|
||||
|
||||
#undef EXT_CHECK
|
||||
}
|
||||
|
||||
@@ -99,6 +99,7 @@ enum ExtensionCheckEnum
|
||||
ExtensionSupported_ARB_clip_control,
|
||||
ExtensionSupported_EXT_polygon_offset_clamp,
|
||||
ExtensionSupported_KHR_blend_equation_advanced_coherent,
|
||||
ExtensionSupported_EXT_raster_multisample,
|
||||
ExtensionSupported_Count,
|
||||
};
|
||||
extern bool ExtensionSupported[ExtensionSupported_Count];
|
||||
@@ -279,6 +280,7 @@ enum GLChunkType
|
||||
SAMPLE_MASK,
|
||||
SAMPLE_COVERAGE,
|
||||
MIN_SAMPLE_SHADING,
|
||||
RASTER_SAMPLES,
|
||||
DEPTH_FUNC,
|
||||
DEPTH_MASK,
|
||||
DEPTH_RANGE,
|
||||
|
||||
@@ -173,6 +173,7 @@ const char *GLChunkNames[] =
|
||||
"glSampleMaski",
|
||||
"glSampleCoverage",
|
||||
"glMinSampleShading",
|
||||
"glRasterSamplesEXT",
|
||||
"glDepthFunc",
|
||||
"glDepthMask",
|
||||
"glDepthRange",
|
||||
@@ -342,16 +343,20 @@ WrappedOpenGL::WrappedOpenGL(const char *logfile, const GLHookSet &funcs)
|
||||
globalExts.push_back("GL_ARB_buffer_storage");
|
||||
globalExts.push_back("GL_ARB_clear_buffer_object");
|
||||
globalExts.push_back("GL_ARB_clear_texture");
|
||||
globalExts.push_back("GL_ARB_clip_control");
|
||||
globalExts.push_back("GL_ARB_color_buffer_float");
|
||||
globalExts.push_back("GL_ARB_compute_shader");
|
||||
globalExts.push_back("GL_ARB_compute_variable_group_size");
|
||||
globalExts.push_back("GL_ARB_conditional_render_inverted");
|
||||
globalExts.push_back("GL_ARB_conservative_depth");
|
||||
globalExts.push_back("GL_ARB_copy_buffer");
|
||||
globalExts.push_back("GL_ARB_copy_image");
|
||||
globalExts.push_back("GL_ARB_cull_distance");
|
||||
globalExts.push_back("GL_ARB_debug_output");
|
||||
globalExts.push_back("GL_ARB_depth_buffer_float");
|
||||
globalExts.push_back("GL_ARB_depth_clamp");
|
||||
globalExts.push_back("GL_ARB_depth_texture");
|
||||
globalExts.push_back("GL_ARB_derivative_control");
|
||||
globalExts.push_back("GL_ARB_draw_buffers");
|
||||
globalExts.push_back("GL_ARB_draw_buffers_blend");
|
||||
globalExts.push_back("GL_ARB_draw_elements_base_vertex");
|
||||
@@ -370,11 +375,13 @@ WrappedOpenGL::WrappedOpenGL(const char *logfile, const GLHookSet &funcs)
|
||||
globalExts.push_back("GL_ARB_framebuffer_sRGB");
|
||||
globalExts.push_back("GL_ARB_geometry_shader4");
|
||||
globalExts.push_back("GL_ARB_get_program_binary");
|
||||
globalExts.push_back("GL_ARB_get_texture_sub_image");
|
||||
globalExts.push_back("GL_ARB_gpu_shader_fp64");
|
||||
globalExts.push_back("GL_ARB_gpu_shader5");
|
||||
globalExts.push_back("GL_ARB_half_float_pixel");
|
||||
globalExts.push_back("GL_ARB_half_float_vertex");
|
||||
globalExts.push_back("GL_ARB_indirect_parameters");
|
||||
globalExts.push_back("GL_ARB_instanced_arrays");
|
||||
globalExts.push_back("GL_ARB_internalformat_query");
|
||||
globalExts.push_back("GL_ARB_internalformat_query2");
|
||||
globalExts.push_back("GL_ARB_invalidate_subdata");
|
||||
@@ -386,6 +393,7 @@ WrappedOpenGL::WrappedOpenGL(const char *logfile, const GLHookSet &funcs)
|
||||
globalExts.push_back("GL_ARB_occlusion_query");
|
||||
globalExts.push_back("GL_ARB_occlusion_query2");
|
||||
globalExts.push_back("GL_ARB_pixel_buffer_object");
|
||||
globalExts.push_back("GL_ARB_pipeline_statistics_query");
|
||||
globalExts.push_back("GL_ARB_point_parameters");
|
||||
globalExts.push_back("GL_ARB_point_sprite");
|
||||
globalExts.push_back("GL_ARB_program_interface_query");
|
||||
@@ -393,6 +401,8 @@ WrappedOpenGL::WrappedOpenGL(const char *logfile, const GLHookSet &funcs)
|
||||
globalExts.push_back("GL_ARB_query_buffer_object");
|
||||
globalExts.push_back("GL_ARB_robust_buffer_access_behavior");
|
||||
globalExts.push_back("GL_ARB_robustness");
|
||||
globalExts.push_back("GL_ARB_robustness_application_isolation");
|
||||
globalExts.push_back("GL_ARB_robustness_share_group_isolation");
|
||||
globalExts.push_back("GL_ARB_sample_shading");
|
||||
globalExts.push_back("GL_ARB_sampler_objects");
|
||||
globalExts.push_back("GL_ARB_seamless_cube_map");
|
||||
@@ -405,16 +415,20 @@ WrappedOpenGL::WrappedOpenGL(const char *logfile, const GLHookSet &funcs)
|
||||
globalExts.push_back("GL_ARB_shader_image_load_store");
|
||||
globalExts.push_back("GL_ARB_shader_image_size");
|
||||
globalExts.push_back("GL_ARB_shader_precision");
|
||||
globalExts.push_back("GL_ARB_shader_stencil_export");
|
||||
globalExts.push_back("GL_ARB_shader_storage_buffer_object");
|
||||
globalExts.push_back("GL_ARB_shader_subroutine");
|
||||
globalExts.push_back("GL_ARB_shader_texture_image_samples");
|
||||
globalExts.push_back("GL_ARB_shader_texture_lod");
|
||||
globalExts.push_back("GL_ARB_shading_language_100");
|
||||
globalExts.push_back("GL_ARB_shading_language_420pack");
|
||||
globalExts.push_back("GL_ARB_shading_language_packing");
|
||||
globalExts.push_back("GL_ARB_shadow");
|
||||
globalExts.push_back("GL_ARB_shadow_ambient");
|
||||
globalExts.push_back("GL_ARB_stencil_texturing");
|
||||
globalExts.push_back("GL_ARB_sync");
|
||||
globalExts.push_back("GL_ARB_tessellation_shader");
|
||||
globalExts.push_back("GL_ARB_texture_barrier");
|
||||
globalExts.push_back("GL_ARB_texture_border_clamp");
|
||||
globalExts.push_back("GL_ARB_texture_buffer_object");
|
||||
globalExts.push_back("GL_ARB_texture_buffer_object_rgb32");
|
||||
@@ -442,6 +456,7 @@ WrappedOpenGL::WrappedOpenGL(const char *logfile, const GLHookSet &funcs)
|
||||
globalExts.push_back("GL_ARB_texture_view");
|
||||
globalExts.push_back("GL_ARB_timer_query");
|
||||
globalExts.push_back("GL_ARB_transform_feedback_instanced");
|
||||
globalExts.push_back("GL_ARB_transform_feedback_overflow_query");
|
||||
globalExts.push_back("GL_ARB_transform_feedback2");
|
||||
globalExts.push_back("GL_ARB_transform_feedback3");
|
||||
globalExts.push_back("GL_ARB_uniform_buffer_object");
|
||||
@@ -460,6 +475,8 @@ WrappedOpenGL::WrappedOpenGL(const char *logfile, const GLHookSet &funcs)
|
||||
globalExts.push_back("GL_EXT_blend_func_separate");
|
||||
globalExts.push_back("GL_EXT_blend_minmax");
|
||||
globalExts.push_back("GL_EXT_blend_subtract");
|
||||
globalExts.push_back("GL_EXT_debug_label");
|
||||
globalExts.push_back("GL_EXT_debug_marker");
|
||||
globalExts.push_back("GL_EXT_depth_bounds_test");
|
||||
globalExts.push_back("GL_EXT_direct_state_access");
|
||||
globalExts.push_back("GL_EXT_draw_buffers2");
|
||||
@@ -471,6 +488,7 @@ WrappedOpenGL::WrappedOpenGL(const char *logfile, const GLHookSet &funcs)
|
||||
globalExts.push_back("GL_EXT_framebuffer_object");
|
||||
globalExts.push_back("GL_EXT_framebuffer_sRGB");
|
||||
globalExts.push_back("GL_EXT_gpu_shader4");
|
||||
globalExts.push_back("GL_EXT_multisample");
|
||||
globalExts.push_back("GL_EXT_multi_draw_arrays");
|
||||
globalExts.push_back("GL_EXT_packed_depth_stencil");
|
||||
globalExts.push_back("GL_EXT_packed_float");
|
||||
@@ -478,8 +496,11 @@ WrappedOpenGL::WrappedOpenGL(const char *logfile, const GLHookSet &funcs)
|
||||
globalExts.push_back("GL_EXT_pixel_buffer_object");
|
||||
globalExts.push_back("GL_EXT_point_parameters");
|
||||
globalExts.push_back("GL_EXT_polygon_offset_clamp");
|
||||
globalExts.push_back("GL_EXT_post_depth_coverage");
|
||||
globalExts.push_back("GL_EXT_provoking_vertex");
|
||||
globalExts.push_back("GL_EXT_raster_multisample");
|
||||
globalExts.push_back("GL_EXT_shader_image_load_store");
|
||||
globalExts.push_back("GL_EXT_shader_image_load_formatted");
|
||||
globalExts.push_back("GL_EXT_shader_integer_mix");
|
||||
globalExts.push_back("GL_EXT_shadow_funcs");
|
||||
globalExts.push_back("GL_EXT_stencil_wrap");
|
||||
@@ -491,10 +512,12 @@ WrappedOpenGL::WrappedOpenGL(const char *logfile, const GLHookSet &funcs)
|
||||
globalExts.push_back("GL_EXT_texture_cube_map");
|
||||
globalExts.push_back("GL_EXT_texture_edge_clamp");
|
||||
globalExts.push_back("GL_EXT_texture_filter_anisotropic");
|
||||
globalExts.push_back("GL_EXT_texture_filter_minmax");
|
||||
globalExts.push_back("GL_EXT_texture_integer");
|
||||
globalExts.push_back("GL_EXT_texture_lod_bias");
|
||||
globalExts.push_back("GL_EXT_texture_mirror_clamp");
|
||||
globalExts.push_back("GL_EXT_texture_shared_exponent");
|
||||
globalExts.push_back("GL_EXT_texture_snorm");
|
||||
globalExts.push_back("GL_EXT_texture_sRGB");
|
||||
globalExts.push_back("GL_EXT_texture_sRGB_decode");
|
||||
globalExts.push_back("GL_EXT_texture_swizzle");
|
||||
@@ -515,42 +538,74 @@ WrappedOpenGL::WrappedOpenGL(const char *logfile, const GLHookSet &funcs)
|
||||
I'm not sure what to do about GL_ARB_imaging, it seems like it's somewhat used in modern GL? For now
|
||||
I'm hoping I can get away with not reporting it but implementing the functionality it still describes.
|
||||
|
||||
* GL_ARB_compatibility
|
||||
* GL_ARB_fragment_program
|
||||
* GL_ARB_fragment_program_shadow
|
||||
* GL_ARB_fragment_shader
|
||||
* GL_ARB_matrix_palette
|
||||
* GL_ARB_shader_objects
|
||||
* GL_ARB_texture_env_add
|
||||
* GL_ARB_texture_env_combine
|
||||
* GL_ARB_texture_env_crossbar
|
||||
* GL_ARB_texture_env_dot3
|
||||
* GL_ARB_transpose_matrix
|
||||
* GL_ARB_vertex_blend
|
||||
* GL_ARB_vertex_program
|
||||
* GL_ARB_vertex_shader
|
||||
* GL_ARB_window_pos
|
||||
* GL_ATI_draw_buffers
|
||||
* GL_ATI_texture_float
|
||||
* GL_ATI_texture_mirror_once
|
||||
* GL_EXT_422_pixels
|
||||
* GL_EXT_abgr
|
||||
* GL_EXT_bindable_uniform
|
||||
* GL_EXT_blend_logic_op
|
||||
* GL_EXT_Cg_shader
|
||||
* GL_EXT_clip_volume_hint
|
||||
* GL_EXT_cmyka
|
||||
* GL_EXT_color_subtable
|
||||
* GL_EXT_compiled_vertex_array
|
||||
* GL_EXT_convolution
|
||||
* GL_EXT_coordinate_frame
|
||||
* GL_EXT_copy_texture
|
||||
* GL_EXT_cull_vertex
|
||||
* GL_EXT_fog_coord
|
||||
* GL_EXT_fragment_lighting
|
||||
* GL_EXT_geometry_shader4
|
||||
* GL_EXT_gpu_program_parameters
|
||||
* GL_EXT_histogram
|
||||
* GL_EXT_import_sync_object
|
||||
* GL_EXT_index_array_formats
|
||||
* GL_EXT_index_func
|
||||
* GL_EXT_index_material
|
||||
* GL_EXT_index_texture
|
||||
* GL_EXT_light_texture
|
||||
* GL_EXT_misc_attribute
|
||||
* GL_EXT_packed_pixels
|
||||
* GL_EXT_paletted_texture
|
||||
* GL_EXT_pixel_transform
|
||||
* GL_EXT_pixel_transform_color_table
|
||||
* GL_EXT_rescale_normal
|
||||
* GL_EXT_scene_marker
|
||||
* GL_EXT_secondary_color
|
||||
* GL_EXT_separate_shader_objects
|
||||
* GL_EXT_separate_specular_color
|
||||
* GL_EXT_shared_texture_palette
|
||||
* GL_EXT_stencil_clear_tag
|
||||
* GL_EXT_stencil_two_side
|
||||
* GL_EXT_subtexture
|
||||
* GL_EXT_texture_compression_latc
|
||||
* GL_EXT_texture_env_add
|
||||
* GL_EXT_texture_env_combine
|
||||
* GL_EXT_texture_env_dot3
|
||||
* GL_EXT_texture_lod
|
||||
* GL_EXT_texture_object
|
||||
* GL_EXT_texture_perturb_normal
|
||||
* GL_EXT_texture_storage
|
||||
* GL_EXT_vertex_array
|
||||
* GL_EXT_vertex_array_bgra
|
||||
* GL_EXT_vertex_shader
|
||||
* GL_EXT_vertex_weighting
|
||||
* GL_S3_s3tc
|
||||
|
||||
************************************************************************/
|
||||
@@ -2339,6 +2394,9 @@ void WrappedOpenGL::ProcessChunk(uint64_t offset, GLChunkType context)
|
||||
case MIN_SAMPLE_SHADING:
|
||||
Serialise_glMinSampleShading(0.0f);
|
||||
break;
|
||||
case RASTER_SAMPLES:
|
||||
Serialise_glRasterSamplesEXT(0, 0);
|
||||
break;
|
||||
case DEPTH_FUNC:
|
||||
Serialise_glDepthFunc(eGL_NONE);
|
||||
break;
|
||||
|
||||
@@ -389,6 +389,7 @@ class WrappedOpenGL
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glSampleMaski(GLuint maskNumber, GLbitfield mask));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glSampleCoverage(GLfloat value, GLboolean invert));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glMinSampleShading(GLfloat value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glRasterSamplesEXT(GLuint samples, GLboolean fixedsamplelocations));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glClear(GLbitfield mask));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glClearDepth(GLdouble depth));
|
||||
@@ -495,6 +496,10 @@ class WrappedOpenGL
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glPushDebugGroup(GLenum source, GLuint id, GLsizei length, const GLchar *message));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glPopDebugGroup());
|
||||
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glPushGroupMarkerEXT(GLsizei length, const GLchar *marker));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glPopGroupMarkerEXT());
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glInsertEventMarkerEXT(GLsizei length, const GLchar *marker));
|
||||
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glFrameTerminatorGREMEDY());
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glStringMarkerGREMEDY(GLsizei len, const void *string));
|
||||
|
||||
|
||||
@@ -151,7 +151,7 @@ struct GLHookSet
|
||||
PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC glGetProgramResourceLocationIndex;
|
||||
PFNGLGETPROGRAMSTAGEIVPROC glGetProgramStageiv;
|
||||
PFNGLGETGRAPHICSRESETSTATUSPROC glGetGraphicsResetStatus; // aliases glGetGraphicsResetStatusARB
|
||||
PFNGLGETOBJECTLABELPROC glGetObjectLabel;
|
||||
PFNGLGETOBJECTLABELPROC glGetObjectLabel; // aliases glGetObjectLabelEXT
|
||||
PFNGLGETOBJECTPTRLABELPROC glGetObjectPtrLabel;
|
||||
PFNGLGETDEBUGMESSAGELOGPROC glGetDebugMessageLog; // aliases glGetDebugMessageLogARB
|
||||
PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC glGetFramebufferAttachmentParameteriv; // aliases glGetFramebufferAttachmentParameterivEXT
|
||||
@@ -243,6 +243,7 @@ struct GLHookSet
|
||||
PFNGLSTENCILOPSEPARATEPROC glStencilOpSeparate;
|
||||
PFNGLCOLORMASKIPROC glColorMaski; // aliases glColorMaskIndexedEXT
|
||||
PFNGLSAMPLEMASKIPROC glSampleMaski;
|
||||
PFNGLRASTERSAMPLESEXTPROC glRasterSamplesEXT;
|
||||
PFNGLSAMPLECOVERAGEPROC glSampleCoverage; // aliases glSampleCoverageARB
|
||||
PFNGLMINSAMPLESHADINGPROC glMinSampleShading; // aliases glMinSampleShadingARB
|
||||
PFNGLDEPTHRANGEFPROC glDepthRangef;
|
||||
@@ -280,7 +281,10 @@ struct GLHookSet
|
||||
PFNGLDEBUGMESSAGEINSERTPROC glDebugMessageInsert; // aliases glDebugMessageInsertARB
|
||||
PFNGLPUSHDEBUGGROUPPROC glPushDebugGroup;
|
||||
PFNGLPOPDEBUGGROUPPROC glPopDebugGroup;
|
||||
PFNGLOBJECTLABELPROC glObjectLabel;
|
||||
PFNGLPUSHGROUPMARKEREXTPROC glPushGroupMarkerEXT;
|
||||
PFNGLPOPGROUPMARKEREXTPROC glPopGroupMarkerEXT;
|
||||
PFNGLINSERTEVENTMARKEREXTPROC glInsertEventMarkerEXT;
|
||||
PFNGLOBJECTLABELPROC glObjectLabel; // aliases glLabelObjectEXT
|
||||
PFNGLOBJECTPTRLABELPROC glObjectPtrLabel;
|
||||
PFNGLENABLEIPROC glEnablei; // aliases glEnableIndexedEXT
|
||||
PFNGLDISABLEIPROC glDisablei; // aliases glDisableIndexedEXT
|
||||
|
||||
@@ -754,7 +754,9 @@
|
||||
HookExtension(PFNGLPUSHDEBUGGROUPPROC, glPushDebugGroup); \
|
||||
HookExtension(PFNGLPOPDEBUGGROUPPROC, glPopDebugGroup); \
|
||||
HookExtension(PFNGLOBJECTLABELPROC, glObjectLabel); \
|
||||
HookExtensionAlias(PFNGLOBJECTLABELPROC, glObjectLabel, glLabelObjectEXT); \
|
||||
HookExtension(PFNGLGETOBJECTLABELPROC, glGetObjectLabel); \
|
||||
HookExtensionAlias(PFNGLGETOBJECTLABELPROC, glGetObjectLabel, glGetObjectLabelEXT); \
|
||||
HookExtension(PFNGLOBJECTPTRLABELPROC, glObjectPtrLabel); \
|
||||
HookExtension(PFNGLGETOBJECTPTRLABELPROC, glGetObjectPtrLabel); \
|
||||
HookExtension(PFNGLBUFFERSTORAGEPROC, glBufferStorage); \
|
||||
@@ -815,6 +817,9 @@
|
||||
HookExtension(PFNGLTEXTUREBARRIERPROC, glTextureBarrier); \
|
||||
HookExtension(PFNGLDISPATCHCOMPUTEGROUPSIZEARBPROC, glDispatchComputeGroupSizeARB); \
|
||||
HookExtension(PFNGLBLENDBARRIERKHRPROC, glBlendBarrierKHR); \
|
||||
HookExtension(PFNGLINSERTEVENTMARKEREXTPROC, glInsertEventMarkerEXT); \
|
||||
HookExtension(PFNGLPUSHGROUPMARKEREXTPROC, glPushGroupMarkerEXT); \
|
||||
HookExtension(PFNGLPOPGROUPMARKEREXTPROC, glPopGroupMarkerEXT); \
|
||||
HookExtension(PFNGLDEPTHBOUNDSEXTPROC, glDepthBoundsEXT); \
|
||||
HookExtension(PFNGLTEXTUREPARAMETERFEXTPROC, glTextureParameterfEXT); \
|
||||
HookExtension(PFNGLTEXTUREPARAMETERFVEXTPROC, glTextureParameterfvEXT); \
|
||||
@@ -938,6 +943,7 @@
|
||||
HookExtension(PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC, glVertexArrayVertexAttribLOffsetEXT); \
|
||||
HookExtension(PFNGLVERTEXARRAYVERTEXATTRIBDIVISOREXTPROC, glVertexArrayVertexAttribDivisorEXT); \
|
||||
HookExtension(PFNGLPOLYGONOFFSETCLAMPEXTPROC, glPolygonOffsetClampEXT); \
|
||||
HookExtension(PFNGLRASTERSAMPLESEXTPROC, glRasterSamplesEXT); \
|
||||
HookExtension(PFNGLFRAMETERMINATORGREMEDYPROC, glFrameTerminatorGREMEDY); \
|
||||
HookExtension(PFNGLSTRINGMARKERGREMEDYPROC, glStringMarkerGREMEDY); \
|
||||
HookExtension(PFNGLCULLFACEPROC, glCullFace); \
|
||||
@@ -1591,6 +1597,9 @@
|
||||
HookWrapper0(void, glTextureBarrier); \
|
||||
HookWrapper6(void, glDispatchComputeGroupSizeARB, GLuint, num_groups_x, GLuint, num_groups_y, GLuint, num_groups_z, GLuint, group_size_x, GLuint, group_size_y, GLuint, group_size_z); \
|
||||
HookWrapper0(void, glBlendBarrierKHR); \
|
||||
HookWrapper2(void, glInsertEventMarkerEXT, GLsizei, length, const GLchar *, marker); \
|
||||
HookWrapper2(void, glPushGroupMarkerEXT, GLsizei, length, const GLchar *, marker); \
|
||||
HookWrapper0(void, glPopGroupMarkerEXT); \
|
||||
HookWrapper2(void, glDepthBoundsEXT, GLclampd, zmin, GLclampd, zmax); \
|
||||
HookWrapper4(void, glTextureParameterfEXT, GLuint, texture, GLenum, target, GLenum, pname, GLfloat, param); \
|
||||
HookWrapper4(void, glTextureParameterfvEXT, GLuint, texture, GLenum, target, GLenum, pname, const GLfloat *, params); \
|
||||
@@ -1714,6 +1723,7 @@
|
||||
HookWrapper7(void, glVertexArrayVertexAttribLOffsetEXT, GLuint, vaobj, GLuint, buffer, GLuint, index, GLint, size, GLenum, type, GLsizei, stride, GLintptr, offset); \
|
||||
HookWrapper3(void, glVertexArrayVertexAttribDivisorEXT, GLuint, vaobj, GLuint, index, GLuint, divisor); \
|
||||
HookWrapper3(void, glPolygonOffsetClampEXT, GLfloat, factor, GLfloat, units, GLfloat, clamp); \
|
||||
HookWrapper2(void, glRasterSamplesEXT, GLuint, samples, GLboolean, fixedsamplelocations); \
|
||||
HookWrapper0(void, glFrameTerminatorGREMEDY); \
|
||||
HookWrapper2(void, glStringMarkerGREMEDY, GLsizei, len, const void *, string); \
|
||||
|
||||
@@ -2494,11 +2504,6 @@
|
||||
HookWrapper9(void, glcopytexsubimage3dext, GLenum, target, GLint, level, GLint, xoffset, GLint, yoffset, GLint, zoffset, GLint, x, GLint, y, GLsizei, width, GLsizei, height); \
|
||||
HookWrapper2(void, glcullparameterdvext, GLenum, pname, GLdouble *, params); \
|
||||
HookWrapper2(void, glcullparameterfvext, GLenum, pname, GLfloat *, params); \
|
||||
HookWrapper4(void, gllabelobjectext, GLenum, type, GLuint, object, GLsizei, length, const GLchar *, label); \
|
||||
HookWrapper5(void, glgetobjectlabelext, GLenum, type, GLuint, object, GLsizei, bufSize, GLsizei *, length, GLchar *, label); \
|
||||
HookWrapper2(void, glinserteventmarkerext, GLsizei, length, const GLchar *, marker); \
|
||||
HookWrapper2(void, glpushgroupmarkerext, GLsizei, length, const GLchar *, marker); \
|
||||
HookWrapper0(void, glpopgroupmarkerext); \
|
||||
HookWrapper2(void, glmatrixloadfext, GLenum, mode, const GLfloat *, m); \
|
||||
HookWrapper2(void, glmatrixloaddext, GLenum, mode, const GLdouble *, m); \
|
||||
HookWrapper2(void, glmatrixmultfext, GLenum, mode, const GLfloat *, m); \
|
||||
@@ -2662,7 +2667,6 @@
|
||||
HookWrapper2(void, glpointparameterfext, GLenum, pname, GLfloat, param); \
|
||||
HookWrapper2(void, glpointparameterfvext, GLenum, pname, const GLfloat *, params); \
|
||||
HookWrapper2(void, glpolygonoffsetext, GLfloat, factor, GLfloat, bias); \
|
||||
HookWrapper2(void, glrastersamplesext, GLuint, samples, GLboolean, fixedsamplelocations); \
|
||||
HookWrapper3(void, glsecondarycolor3bext, GLbyte, red, GLbyte, green, GLbyte, blue); \
|
||||
HookWrapper1(void, glsecondarycolor3bvext, const GLbyte *, v); \
|
||||
HookWrapper3(void, glsecondarycolor3dext, GLdouble, red, GLdouble, green, GLdouble, blue); \
|
||||
@@ -4115,11 +4119,6 @@
|
||||
HandleUnsupported(PFNGLCOPYTEXSUBIMAGE3DEXTPROC, glcopytexsubimage3dext); \
|
||||
HandleUnsupported(PFNGLCULLPARAMETERDVEXTPROC, glcullparameterdvext); \
|
||||
HandleUnsupported(PFNGLCULLPARAMETERFVEXTPROC, glcullparameterfvext); \
|
||||
HandleUnsupported(PFNGLLABELOBJECTEXTPROC, gllabelobjectext); \
|
||||
HandleUnsupported(PFNGLGETOBJECTLABELEXTPROC, glgetobjectlabelext); \
|
||||
HandleUnsupported(PFNGLINSERTEVENTMARKEREXTPROC, glinserteventmarkerext); \
|
||||
HandleUnsupported(PFNGLPUSHGROUPMARKEREXTPROC, glpushgroupmarkerext); \
|
||||
HandleUnsupported(PFNGLPOPGROUPMARKEREXTPROC, glpopgroupmarkerext); \
|
||||
HandleUnsupported(PFNGLMATRIXLOADFEXTPROC, glmatrixloadfext); \
|
||||
HandleUnsupported(PFNGLMATRIXLOADDEXTPROC, glmatrixloaddext); \
|
||||
HandleUnsupported(PFNGLMATRIXMULTFEXTPROC, glmatrixmultfext); \
|
||||
@@ -4283,7 +4282,6 @@
|
||||
HandleUnsupported(PFNGLPOINTPARAMETERFEXTPROC, glpointparameterfext); \
|
||||
HandleUnsupported(PFNGLPOINTPARAMETERFVEXTPROC, glpointparameterfvext); \
|
||||
HandleUnsupported(PFNGLPOLYGONOFFSETEXTPROC, glpolygonoffsetext); \
|
||||
HandleUnsupported(PFNGLRASTERSAMPLESEXTPROC, glrastersamplesext); \
|
||||
HandleUnsupported(PFNGLSECONDARYCOLOR3BEXTPROC, glsecondarycolor3bext); \
|
||||
HandleUnsupported(PFNGLSECONDARYCOLOR3BVEXTPROC, glsecondarycolor3bvext); \
|
||||
HandleUnsupported(PFNGLSECONDARYCOLOR3DEXTPROC, glsecondarycolor3dext); \
|
||||
|
||||
@@ -74,6 +74,8 @@ void GLRenderState::FetchState(void *ctx, WrappedOpenGL *gl)
|
||||
eGL_SAMPLE_ALPHA_TO_ONE,
|
||||
eGL_SAMPLE_COVERAGE,
|
||||
eGL_SAMPLE_MASK,
|
||||
eGL_RASTER_MULTISAMPLE_EXT,
|
||||
eGL_RASTER_FIXED_SAMPLE_LOCATIONS_EXT,
|
||||
eGL_STENCIL_TEST,
|
||||
eGL_TEXTURE_CUBE_MAP_SEAMLESS,
|
||||
eGL_BLEND_ADVANCED_COHERENT_KHR,
|
||||
@@ -88,6 +90,13 @@ void GLRenderState::FetchState(void *ctx, WrappedOpenGL *gl)
|
||||
Enabled[i] = true;
|
||||
continue;
|
||||
}
|
||||
|
||||
if((pnames[i] == eGL_RASTER_MULTISAMPLE_EXT || pnames[i] == eGL_RASTER_FIXED_SAMPLE_LOCATIONS_EXT)
|
||||
&& !ExtensionSupported[ExtensionSupported_EXT_raster_multisample])
|
||||
{
|
||||
Enabled[i] = false;
|
||||
continue;
|
||||
}
|
||||
|
||||
Enabled[i] = (m_Real->glIsEnabled(pnames[i]) == GL_TRUE);
|
||||
}
|
||||
@@ -279,6 +288,16 @@ void GLRenderState::FetchState(void *ctx, WrappedOpenGL *gl)
|
||||
m_Real->glGetIntegerv(eGL_SAMPLE_COVERAGE_VALUE, (GLint *)&SampleCoverage);
|
||||
m_Real->glGetIntegerv(eGL_SAMPLE_COVERAGE_INVERT, (GLint *)&boolread); SampleCoverageInvert = (boolread != 0);
|
||||
m_Real->glGetFloatv(eGL_MIN_SAMPLE_SHADING_VALUE, &MinSampleShading);
|
||||
|
||||
if(ExtensionSupported[ExtensionSupported_EXT_raster_multisample])
|
||||
m_Real->glGetIntegerv(eGL_RASTER_SAMPLES_EXT, (GLint *)&RasterSamples);
|
||||
else
|
||||
RasterSamples = 0;
|
||||
|
||||
if(ExtensionSupported[ExtensionSupported_EXT_raster_multisample])
|
||||
m_Real->glGetIntegerv(eGL_RASTER_FIXED_SAMPLE_LOCATIONS_EXT, (GLint *)&RasterFixed);
|
||||
else
|
||||
RasterFixed = false;
|
||||
|
||||
m_Real->glGetIntegerv(eGL_LOGIC_OP_MODE, (GLint *)&LogicOp);
|
||||
|
||||
@@ -347,6 +366,8 @@ void GLRenderState::ApplyState(void *ctx, WrappedOpenGL *gl)
|
||||
eGL_SAMPLE_ALPHA_TO_ONE,
|
||||
eGL_SAMPLE_COVERAGE,
|
||||
eGL_SAMPLE_MASK,
|
||||
eGL_RASTER_MULTISAMPLE_EXT,
|
||||
eGL_RASTER_FIXED_SAMPLE_LOCATIONS_EXT,
|
||||
eGL_STENCIL_TEST,
|
||||
eGL_TEXTURE_CUBE_MAP_SEAMLESS,
|
||||
eGL_BLEND_ADVANCED_COHERENT_KHR,
|
||||
@@ -358,6 +379,10 @@ void GLRenderState::ApplyState(void *ctx, WrappedOpenGL *gl)
|
||||
{
|
||||
if(pnames[i] == eGL_BLEND_ADVANCED_COHERENT_KHR && !ExtensionSupported[ExtensionSupported_KHR_blend_equation_advanced_coherent])
|
||||
continue;
|
||||
|
||||
if((pnames[i] == eGL_RASTER_MULTISAMPLE_EXT || pnames[i] == eGL_RASTER_FIXED_SAMPLE_LOCATIONS_EXT)
|
||||
&& !ExtensionSupported[ExtensionSupported_EXT_raster_multisample])
|
||||
continue;
|
||||
|
||||
if(Enabled[i]) m_Real->glEnable(pnames[i]); else m_Real->glDisable(pnames[i]);
|
||||
}
|
||||
@@ -549,6 +574,9 @@ void GLRenderState::ApplyState(void *ctx, WrappedOpenGL *gl)
|
||||
m_Real->glSampleCoverage(SampleCoverage, SampleCoverageInvert ? GL_TRUE : GL_FALSE);
|
||||
m_Real->glMinSampleShading(MinSampleShading);
|
||||
|
||||
if(ExtensionSupported[ExtensionSupported_EXT_raster_multisample])
|
||||
m_Real->glRasterSamplesEXT(RasterSamples, RasterFixed);
|
||||
|
||||
m_Real->glLogicOp(LogicOp);
|
||||
|
||||
m_Real->glClearColor(ColorClearValue.red, ColorClearValue.green, ColorClearValue.blue, ColorClearValue.alpha);
|
||||
@@ -624,6 +652,8 @@ void GLRenderState::Clear()
|
||||
RDCEraseEl(StencilClearValue);
|
||||
RDCEraseEl(ColorMasks);
|
||||
RDCEraseEl(SampleMask);
|
||||
RDCEraseEl(RasterSamples);
|
||||
RDCEraseEl(RasterFixed);
|
||||
RDCEraseEl(SampleCoverage);
|
||||
RDCEraseEl(SampleCoverageInvert);
|
||||
RDCEraseEl(MinSampleShading);
|
||||
@@ -846,6 +876,9 @@ void GLRenderState::Serialise(LogState state, void *ctx, WrappedOpenGL *gl)
|
||||
m_pSerialiser->Serialise("GL_SAMPLE_COVERAGE_INVERT", SampleCoverageInvert);
|
||||
m_pSerialiser->Serialise("GL_MIN_SAMPLE_SHADING", MinSampleShading);
|
||||
|
||||
m_pSerialiser->Serialise("GL_RASTER_SAMPLES_EXT", RasterSamples);
|
||||
m_pSerialiser->Serialise("GL_RASTER_FIXED_SAMPLE_LOCATIONS_EXT", RasterFixed);
|
||||
|
||||
m_pSerialiser->Serialise("GL_LOGIC_OP_MODE", LogicOp);
|
||||
|
||||
m_pSerialiser->Serialise<4>("GL_COLOR_CLEAR_VALUE", &ColorClearValue.red);
|
||||
|
||||
@@ -72,6 +72,8 @@ struct GLRenderState
|
||||
eEnabled_SampleAlphaToOne,
|
||||
eEnabled_SampleCoverage,
|
||||
eEnabled_SampleMask,
|
||||
eEnabled_RasterMultisample,
|
||||
eEnabled_RasterMultisampleFixed,
|
||||
//eEnabled_ScissorTest, handled below with scissor values
|
||||
eEnabled_StencilTest,
|
||||
eEnabled_TexCubeSeamless,
|
||||
@@ -204,6 +206,8 @@ struct GLRenderState
|
||||
uint8_t red, green, blue, alpha;
|
||||
} ColorMasks[8];
|
||||
|
||||
uint32_t RasterSamples;
|
||||
bool RasterFixed;
|
||||
uint32_t SampleMask[2];
|
||||
float SampleCoverage;
|
||||
bool SampleCoverageInvert;
|
||||
|
||||
@@ -167,6 +167,39 @@ void WrappedOpenGL::glDebugMessageInsert(GLenum source, GLenum type, GLuint id,
|
||||
m_Real.glDebugMessageInsert(source, type, id, severity, length, buf);
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glPushGroupMarkerEXT(GLsizei length, const GLchar *marker)
|
||||
{
|
||||
if(m_State == WRITING_CAPFRAME)
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(BEGIN_EVENT);
|
||||
Serialise_glPushDebugGroup(eGL_NONE, 0, length, marker);
|
||||
|
||||
m_ContextRecord->AddChunk(scope.Get());
|
||||
}
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glPopGroupMarkerEXT()
|
||||
{
|
||||
if(m_State == WRITING_CAPFRAME)
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(END_EVENT);
|
||||
Serialise_glPopDebugGroup();
|
||||
|
||||
m_ContextRecord->AddChunk(scope.Get());
|
||||
}
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glInsertEventMarkerEXT(GLsizei length, const GLchar *marker)
|
||||
{
|
||||
if(m_State == WRITING_CAPFRAME)
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(SET_MARKER);
|
||||
Serialise_glDebugMessageInsert(eGL_NONE, eGL_NONE, 0, eGL_NONE, length, marker);
|
||||
|
||||
m_ContextRecord->AddChunk(scope.Get());
|
||||
}
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glFrameTerminatorGREMEDY()
|
||||
{
|
||||
Present(NULL);
|
||||
|
||||
@@ -1133,6 +1133,32 @@ void WrappedOpenGL::glMinSampleShading(GLfloat value)
|
||||
}
|
||||
}
|
||||
|
||||
bool WrappedOpenGL::Serialise_glRasterSamplesEXT(GLuint samples, GLboolean fixedsamplelocations)
|
||||
{
|
||||
SERIALISE_ELEMENT(uint32_t, s, samples);
|
||||
SERIALISE_ELEMENT(bool, f, fixedsamplelocations != 0);
|
||||
|
||||
if(m_State <= EXECUTING)
|
||||
{
|
||||
m_Real.glRasterSamplesEXT(s, f);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glRasterSamplesEXT(GLuint samples, GLboolean fixedsamplelocations)
|
||||
{
|
||||
m_Real.glRasterSamplesEXT(samples, fixedsamplelocations);
|
||||
|
||||
if(m_State == WRITING_CAPFRAME)
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(RASTER_SAMPLES);
|
||||
Serialise_glRasterSamplesEXT(samples, fixedsamplelocations);
|
||||
|
||||
m_ContextRecord->AddChunk(scope.Get());
|
||||
}
|
||||
}
|
||||
|
||||
bool WrappedOpenGL::Serialise_glPatchParameteri(GLenum pname, GLint value)
|
||||
{
|
||||
SERIALISE_ELEMENT(GLenum, PName, pname);
|
||||
|
||||
Reference in New Issue
Block a user