Various changes/fixes for OpenGLES

bgra8_ext support
glMapBufferOES support
shader compile fix debuguniforms.h
This commit is contained in:
babymustgrowstrong
2017-05-03 15:30:43 -07:00
committed by Baldur Karlsson
parent ba3b76a61a
commit 43d4268263
6 changed files with 74 additions and 53 deletions
+1
View File
@@ -91,6 +91,7 @@ struct Vec4u
#else
#define PRECISION mediump
precision PRECISION float;
precision PRECISION int;
#endif
#endif
+52 -51
View File
@@ -292,57 +292,58 @@ extern bool IsGLES;
// taken into account.
// 99 means the extension never became core, so you can easily just do a check of CoreVersion >= NN
// and they will always fail.
#define EXTENSION_CHECKS() \
EXT_TO_CHECK(33, 30, ARB_explicit_attrib_location) \
EXT_TO_CHECK(33, 30, ARB_sampler_objects) \
EXT_TO_CHECK(33, 30, ARB_texture_swizzle) \
EXT_TO_CHECK(40, 32, ARB_draw_buffers_blend) \
EXT_TO_CHECK(40, 31, ARB_draw_indirect) \
EXT_TO_CHECK(40, 32, ARB_gpu_shader5) \
EXT_TO_CHECK(40, 32, ARB_sample_shading) \
EXT_TO_CHECK(40, 99, ARB_shader_subroutine) \
EXT_TO_CHECK(40, 32, ARB_tessellation_shader) \
EXT_TO_CHECK(40, 32, ARB_texture_cube_map_array) \
EXT_TO_CHECK(40, 30, ARB_transform_feedback2) \
EXT_TO_CHECK(41, 31, ARB_separate_shader_objects) \
EXT_TO_CHECK(41, 99, ARB_viewport_array) \
EXT_TO_CHECK(42, 99, ARB_base_instance) \
EXT_TO_CHECK(42, 31, ARB_shader_atomic_counters) \
EXT_TO_CHECK(42, 31, ARB_shader_image_load_store) \
EXT_TO_CHECK(42, 31, ARB_shading_language_420pack) \
EXT_TO_CHECK(42, 30, ARB_texture_storage) \
EXT_TO_CHECK(43, 99, ARB_clear_buffer_object) \
EXT_TO_CHECK(43, 31, ARB_compute_shader) \
EXT_TO_CHECK(43, 32, ARB_copy_image) \
EXT_TO_CHECK(43, 30, ARB_ES3_compatibility) \
EXT_TO_CHECK(43, 99, ARB_internalformat_query2) \
EXT_TO_CHECK(43, 31, ARB_program_interface_query) \
EXT_TO_CHECK(43, 31, ARB_shader_storage_buffer_object) \
EXT_TO_CHECK(43, 31, ARB_stencil_texturing) \
EXT_TO_CHECK(43, 32, ARB_texture_storage_multisample) \
EXT_TO_CHECK(43, 99, ARB_texture_view) \
EXT_TO_CHECK(43, 31, ARB_vertex_attrib_binding) \
EXT_TO_CHECK(43, 32, KHR_debug) \
EXT_TO_CHECK(44, 99, ARB_enhanced_layouts) \
EXT_TO_CHECK(44, 99, ARB_query_buffer_object) \
EXT_TO_CHECK(45, 99, ARB_clip_control) \
EXT_TO_CHECK(99, 99, ARB_indirect_parameters) \
EXT_TO_CHECK(99, 99, ARB_seamless_cubemap_per_texture) \
EXT_TO_CHECK(99, 99, EXT_depth_bounds_test) \
EXT_TO_CHECK(99, 99, EXT_direct_state_access) \
EXT_TO_CHECK(99, 99, EXT_polygon_offset_clamp) \
EXT_TO_CHECK(99, 99, EXT_raster_multisample) \
EXT_TO_CHECK(99, 99, EXT_texture_filter_anisotropic) \
EXT_TO_CHECK(99, 30, EXT_texture_swizzle) \
EXT_TO_CHECK(99, 99, KHR_blend_equation_advanced_coherent) \
/* OpenGL ES extensions */ \
EXT_TO_CHECK(99, 99, EXT_clip_cull_distance) \
EXT_TO_CHECK(99, 99, EXT_multisample_compatibility) \
EXT_TO_CHECK(99, 99, NV_polygon_mode) \
EXT_TO_CHECK(99, 99, NV_read_depth) \
EXT_TO_CHECK(99, 99, NV_read_stencil) \
EXT_TO_CHECK(99, 99, NV_read_depth_stencil) \
EXT_TO_CHECK(99, 32, OES_texture_storage_multisample_2d_array)
#define EXTENSION_CHECKS() \
EXT_TO_CHECK(33, 30, ARB_explicit_attrib_location) \
EXT_TO_CHECK(33, 30, ARB_sampler_objects) \
EXT_TO_CHECK(33, 30, ARB_texture_swizzle) \
EXT_TO_CHECK(40, 32, ARB_draw_buffers_blend) \
EXT_TO_CHECK(40, 31, ARB_draw_indirect) \
EXT_TO_CHECK(40, 32, ARB_gpu_shader5) \
EXT_TO_CHECK(40, 32, ARB_sample_shading) \
EXT_TO_CHECK(40, 99, ARB_shader_subroutine) \
EXT_TO_CHECK(40, 32, ARB_tessellation_shader) \
EXT_TO_CHECK(40, 32, ARB_texture_cube_map_array) \
EXT_TO_CHECK(40, 30, ARB_transform_feedback2) \
EXT_TO_CHECK(41, 31, ARB_separate_shader_objects) \
EXT_TO_CHECK(41, 99, ARB_viewport_array) \
EXT_TO_CHECK(42, 99, ARB_base_instance) \
EXT_TO_CHECK(42, 31, ARB_shader_atomic_counters) \
EXT_TO_CHECK(42, 31, ARB_shader_image_load_store) \
EXT_TO_CHECK(42, 31, ARB_shading_language_420pack) \
EXT_TO_CHECK(42, 30, ARB_texture_storage) \
EXT_TO_CHECK(43, 99, ARB_clear_buffer_object) \
EXT_TO_CHECK(43, 31, ARB_compute_shader) \
EXT_TO_CHECK(43, 32, ARB_copy_image) \
EXT_TO_CHECK(43, 30, ARB_ES3_compatibility) \
EXT_TO_CHECK(43, 99, ARB_internalformat_query2) \
EXT_TO_CHECK(43, 31, ARB_program_interface_query) \
EXT_TO_CHECK(43, 31, ARB_shader_storage_buffer_object) \
EXT_TO_CHECK(43, 31, ARB_stencil_texturing) \
EXT_TO_CHECK(43, 32, ARB_texture_storage_multisample) \
EXT_TO_CHECK(43, 99, ARB_texture_view) \
EXT_TO_CHECK(43, 31, ARB_vertex_attrib_binding) \
EXT_TO_CHECK(43, 32, KHR_debug) \
EXT_TO_CHECK(44, 99, ARB_enhanced_layouts) \
EXT_TO_CHECK(44, 99, ARB_query_buffer_object) \
EXT_TO_CHECK(45, 99, ARB_clip_control) \
EXT_TO_CHECK(99, 99, ARB_indirect_parameters) \
EXT_TO_CHECK(99, 99, ARB_seamless_cubemap_per_texture) \
EXT_TO_CHECK(99, 99, EXT_depth_bounds_test) \
EXT_TO_CHECK(99, 99, EXT_direct_state_access) \
EXT_TO_CHECK(99, 99, EXT_polygon_offset_clamp) \
EXT_TO_CHECK(99, 99, EXT_raster_multisample) \
EXT_TO_CHECK(99, 99, EXT_texture_filter_anisotropic) \
EXT_TO_CHECK(99, 30, EXT_texture_swizzle) \
EXT_TO_CHECK(99, 99, KHR_blend_equation_advanced_coherent) \
/* OpenGL ES extensions */ \
EXT_TO_CHECK(99, 99, EXT_clip_cull_distance) \
EXT_TO_CHECK(99, 99, EXT_multisample_compatibility) \
EXT_TO_CHECK(99, 99, NV_polygon_mode) \
EXT_TO_CHECK(99, 99, NV_read_depth) \
EXT_TO_CHECK(99, 99, NV_read_stencil) \
EXT_TO_CHECK(99, 99, NV_read_depth_stencil) \
EXT_TO_CHECK(99, 32, OES_texture_storage_multisample_2d_array) \
EXT_TO_CHECK(99, 32, EXT_color_buffer_float)
// GL extensions and their roughly equivalent GLES alternatives
#define EXTENSION_COMPATIBILITY_CHECKS() \
+12 -2
View File
@@ -2249,8 +2249,18 @@ ResourceId GLReplay::RenderOverlay(ResourceId texid, CompType typeHint, DebugOve
}
else
{
gl.glTextureImage2DEXT(DebugData.overlayTex, texBindingEnum, 0, eGL_RGBA16, texDetails.width,
texDetails.height, 0, eGL_RGBA, eGL_FLOAT, NULL);
GLint internalFormat = eGL_RGBA16;
GLenum format = eGL_RGBA;
GLenum type = eGL_FLOAT;
if(IsGLES && !HasExt[EXT_color_buffer_float])
{
internalFormat = eGL_RGBA8;
type = eGL_UNSIGNED_BYTE;
}
gl.glTextureImage2DEXT(DebugData.overlayTex, texBindingEnum, 0, internalFormat,
texDetails.width, texDetails.height, 0, format, type, NULL);
gl.glTexParameteri(texBindingEnum, eGL_TEXTURE_MAX_LEVEL, 0);
gl.glTexParameteri(texBindingEnum, eGL_TEXTURE_MIN_FILTER, eGL_NEAREST);
gl.glTexParameteri(texBindingEnum, eGL_TEXTURE_MAG_FILTER, eGL_NEAREST);
+3
View File
@@ -2874,6 +2874,9 @@ WrappedOpenGL::BackbufferImage *WrappedOpenGL::SaveBackbufferImage()
if(len > 0)
{
// jpge::compress_image_to_jpeg_file_in_memory requires at least 1024 bytes
len = len >= 1024 ? len : 1024;
jpgbuf = new byte[len];
jpge::params p;
+2
View File
@@ -175,8 +175,10 @@
HookExtensionAlias(PFNGLGETBUFFERSUBDATAPROC, glGetBufferSubData, glGetBufferSubDataARB); \
HookExtension(PFNGLMAPBUFFERPROC, glMapBuffer); \
HookExtensionAlias(PFNGLMAPBUFFERPROC, glMapBuffer, glMapBufferARB); \
HookExtensionAlias(PFNGLMAPBUFFERPROC, glMapBuffer, glMapBufferOES); \
HookExtension(PFNGLUNMAPBUFFERPROC, glUnmapBuffer); \
HookExtensionAlias(PFNGLUNMAPBUFFERPROC, glUnmapBuffer, glUnmapBufferARB); \
HookExtensionAlias(PFNGLUNMAPBUFFERPROC, glUnmapBuffer, glUnmapBufferOES); \
HookExtension(PFNGLGETBUFFERPARAMETERIVPROC, glGetBufferParameteriv); \
HookExtensionAlias(PFNGLGETBUFFERPARAMETERIVPROC, glGetBufferParameteriv, glGetBufferParameterivARB); \
HookExtension(PFNGLGETBUFFERPOINTERVPROC, glGetBufferPointerv); \
+4
View File
@@ -362,6 +362,8 @@ GLenum GetBaseFormat(GLenum internalFormat)
case eGL_RGBA16UI:
case eGL_RGBA32UI:
case eGL_RGBA32I: return eGL_RGBA_INTEGER;
case eGL_BGRA:
case eGL_BGRA8_EXT: return eGL_BGRA;
case eGL_DEPTH_COMPONENT16:
case eGL_DEPTH_COMPONENT24:
case eGL_DEPTH_COMPONENT32:
@@ -392,6 +394,8 @@ GLenum GetDataType(GLenum internalFormat)
case eGL_R8:
case eGL_RGB8:
case eGL_RGB8UI:
case eGL_BGRA:
case eGL_BGRA8_EXT:
case eGL_SRGB8_ALPHA8:
case eGL_SRGB8: return eGL_UNSIGNED_BYTE;
case eGL_RGBA8I: