diff --git a/src/vrend_renderer.c b/src/vrend_renderer.c index 2860ba6..da1cec8 100644 --- a/src/vrend_renderer.c +++ b/src/vrend_renderer.c @@ -7797,9 +7797,6 @@ static void vrend_renderer_fill_caps_common(union virgl_caps *caps) */ caps->v1.bset.occlusion_query = 1; - /* Set an initial level here, will be updated later */ - caps->v1.glsl_level = 130; - /* Set supported prims here as we now know what shaders we support. */ caps->v1.prim_mask = (1 << PIPE_PRIM_POINTS) | (1 << PIPE_PRIM_LINES) | (1 << PIPE_PRIM_LINE_STRIP) | (1 << PIPE_PRIM_LINE_LOOP) | @@ -7857,35 +7854,40 @@ static void vrend_renderer_fill_caps_v2_common(union virgl_caps *caps) glGetIntegerv(GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT, (GLint*)&caps->v2.uniform_buffer_offset_alignment); } -static void vrend_renderer_fill_caps_gles(int gles_ver, union virgl_caps *caps) +static void vrend_fill_caps_glsl_version(int gl_ver, int gles_ver, + union virgl_caps *caps) { - if (gles_ver >= 30) { - caps->v1.glsl_level = 130; - } else { + if (gles_ver > 0) { caps->v1.glsl_level = 120; + + if (gles_ver >= 30) + caps->v1.glsl_level = 130; + } + + if (gl_ver > 0) { + caps->v1.glsl_level = 130; + + if (gl_ver == 31) + caps->v1.glsl_level = 140; + else if (gl_ver == 32) + caps->v1.glsl_level = 150; + else if (gl_ver == 33) + caps->v1.glsl_level = 330; + else if (gl_ver == 40) + caps->v1.glsl_level = 400; + else if (gl_ver == 41) + caps->v1.glsl_level = 410; + else if (gl_ver == 42) + caps->v1.glsl_level = 420; + else if (gl_ver >= 43) + caps->v1.glsl_level = 430; } } -static void vrend_renderer_fill_caps_gl(bool fill_capset2, int gl_ver, - union virgl_caps *caps) +static void vrend_renderer_fill_caps_gl(bool fill_capset2, union virgl_caps *caps) { GLfloat range[2]; - if (gl_ver == 31) - caps->v1.glsl_level = 140; - else if (gl_ver == 32) - caps->v1.glsl_level = 150; - else if (gl_ver == 33) - caps->v1.glsl_level = 330; - else if (gl_ver == 40) - caps->v1.glsl_level = 400; - else if (gl_ver == 41) - caps->v1.glsl_level = 410; - else if (gl_ver == 42) - caps->v1.glsl_level = 420; - else if (gl_ver >= 43) - caps->v1.glsl_level = 430; - if (!vrend_state.use_core_profile) { caps->v1.bset.poly_stipple = 1; caps->v1.bset.color_clamping = 1; @@ -7939,12 +7941,10 @@ void vrend_renderer_fill_caps(uint32_t set, UNUSED uint32_t version, } vrend_renderer_fill_caps_common(caps); + vrend_fill_caps_glsl_version(gl_ver, gles_ver, caps); - /* GLES has it's own path */ - if (vrend_state.use_gles) { - vrend_renderer_fill_caps_gles(gles_ver, caps); - } else - vrend_renderer_fill_caps_gl(fill_capset2, gl_ver, caps); + if (!vrend_state.use_gles) + vrend_renderer_fill_caps_gl(fill_capset2, caps); if (caps->v1.glsl_level >= 150) { caps->v1.prim_mask |= (1 << PIPE_PRIM_LINES_ADJACENCY) |