features: move some caps to use has_feature flags

this just moves some of the current caps setting code to use
the existing feature flags.

Reviewed-By: Gert Wollny <gert.wollny@collabora.com>
macos/master
Dave Airlie 6 years ago
parent edd2478358
commit 6ff41a300c
  1. 33
      src/vrend_renderer.c

@ -7563,14 +7563,15 @@ void vrend_renderer_fill_caps(uint32_t set, uint32_t version,
fill_capset2 = true; fill_capset2 = true;
} }
if (has_feature(feat_nv_conditional_render) ||
has_feature(feat_gl_conditional_render))
caps->v1.bset.conditional_render = 1;
if (gl_ver >= 30) { if (gl_ver >= 30) {
caps->v1.bset.indep_blend_enable = 1; caps->v1.bset.indep_blend_enable = 1;
caps->v1.bset.conditional_render = 1;
} else { } else {
if (epoxy_has_gl_extension("GL_EXT_draw_buffers2")) if (epoxy_has_gl_extension("GL_EXT_draw_buffers2"))
caps->v1.bset.indep_blend_enable = 1; caps->v1.bset.indep_blend_enable = 1;
if (epoxy_has_gl_extension("GL_NV_conditional_render"))
caps->v1.bset.conditional_render = 1;
} }
if (vrend_state.use_core_profile) { if (vrend_state.use_core_profile) {
@ -7610,14 +7611,18 @@ void vrend_renderer_fill_caps(uint32_t set, uint32_t version,
caps->v1.bset.texture_multisample = 1; caps->v1.bset.texture_multisample = 1;
} }
if (has_feature(feat_tessellation))
caps->v1.bset.has_tessellation_shaders = 1;
if (has_feature(feat_sample_shading))
caps->v1.bset.has_sample_shading = 1;
if (gl_ver >= 40) { if (gl_ver >= 40) {
caps->v1.bset.indep_blend_func = 1; caps->v1.bset.indep_blend_func = 1;
caps->v1.bset.cube_map_array = 1; caps->v1.bset.cube_map_array = 1;
caps->v1.bset.texture_query_lod = 1; caps->v1.bset.texture_query_lod = 1;
caps->v1.bset.has_indirect_draw = 1; caps->v1.bset.has_indirect_draw = 1;
caps->v1.bset.has_sample_shading = 1;
caps->v1.bset.has_fp64 = 1; caps->v1.bset.has_fp64 = 1;
caps->v1.bset.has_tessellation_shaders = 1;
} else { } else {
if (epoxy_has_gl_extension("GL_ARB_draw_buffers_blend")) if (epoxy_has_gl_extension("GL_ARB_draw_buffers_blend"))
caps->v1.bset.indep_blend_func = 1; caps->v1.bset.indep_blend_func = 1;
@ -7627,14 +7632,10 @@ void vrend_renderer_fill_caps(uint32_t set, uint32_t version,
caps->v1.bset.texture_query_lod = 1; caps->v1.bset.texture_query_lod = 1;
if (epoxy_has_gl_extension("GL_ARB_indirect_draw")) if (epoxy_has_gl_extension("GL_ARB_indirect_draw"))
caps->v1.bset.has_indirect_draw = 1; caps->v1.bset.has_indirect_draw = 1;
if (epoxy_has_gl_extension("GL_ARB_sample_shading"))
caps->v1.bset.has_sample_shading = 1;
/* need gpu shader 5 for bitfield insert */ /* need gpu shader 5 for bitfield insert */
if (epoxy_has_gl_extension("GL_ARB_gpu_shader_fp64") && if (epoxy_has_gl_extension("GL_ARB_gpu_shader_fp64") &&
epoxy_has_gl_extension("GL_ARB_gpu_shader5")) epoxy_has_gl_extension("GL_ARB_gpu_shader5"))
caps->v1.bset.has_fp64 = 1; caps->v1.bset.has_fp64 = 1;
if (epoxy_has_gl_extension("GL_ARB_tessellation_shader"))
caps->v1.bset.has_tessellation_shaders = 1;
} }
if (gl_ver >= 42) { if (gl_ver >= 42) {
@ -7660,12 +7661,12 @@ void vrend_renderer_fill_caps(uint32_t set, uint32_t version,
caps->v1.bset.derivative_control = 1; caps->v1.bset.derivative_control = 1;
} }
if (gl_ver >= 46) { if (has_feature(feat_polygon_offset_clamp))
caps->v1.bset.polygon_offset_clamp = 1; caps->v1.bset.polygon_offset_clamp = 1;
if (gl_ver >= 46) {
caps->v1.bset.transform_feedback_overflow_query = 1; caps->v1.bset.transform_feedback_overflow_query = 1;
} else { } else {
if (epoxy_has_gl_extension("GL_ARB_polygon_offset_clamp"))
caps->v1.bset.polygon_offset_clamp = 1;
if (epoxy_has_gl_extension("GL_ARB_transform_feedback_overflow_query")) if (epoxy_has_gl_extension("GL_ARB_transform_feedback_overflow_query"))
caps->v1.bset.transform_feedback_overflow_query = 1; caps->v1.bset.transform_feedback_overflow_query = 1;
} }
@ -7681,7 +7682,7 @@ void vrend_renderer_fill_caps(uint32_t set, uint32_t version,
} }
/* we need tf3 so we can do gallium skip buffers */ /* we need tf3 so we can do gallium skip buffers */
if (epoxy_has_gl_extension("GL_ARB_transform_feedback2")) { if (has_feature(feat_transform_feedback2)) {
caps->v1.bset.streamout_pause_resume = 1; caps->v1.bset.streamout_pause_resume = 1;
} }
@ -7743,7 +7744,7 @@ void vrend_renderer_fill_caps(uint32_t set, uint32_t version,
glGetIntegerv(GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS, (GLint*)&caps->v2.max_geom_total_output_components); glGetIntegerv(GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS, (GLint*)&caps->v2.max_geom_total_output_components);
} }
if (epoxy_has_gl_extension("GL_ARB_tessellation_shader") || gl_ver >= 40) { if (has_feature(feat_tessellation)) {
glGetIntegerv(GL_MAX_TESS_PATCH_COMPONENTS, &max); glGetIntegerv(GL_MAX_TESS_PATCH_COMPONENTS, &max);
caps->v2.max_shader_patch_varyings = max / 4; caps->v2.max_shader_patch_varyings = max / 4;
} else } else
@ -7762,7 +7763,7 @@ void vrend_renderer_fill_caps(uint32_t set, uint32_t version,
glGetIntegerv(GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT, (GLint*)&caps->v2.texture_buffer_offset_alignment); glGetIntegerv(GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT, (GLint*)&caps->v2.texture_buffer_offset_alignment);
} }
if (gl_ver >= 43 || epoxy_has_gl_extension("GL_ARB_shader_storage_buffer_object")) { if (has_feature(feat_ssbo)) {
glGetIntegerv(GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT, (GLint*)&caps->v2.shader_buffer_offset_alignment); glGetIntegerv(GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT, (GLint*)&caps->v2.shader_buffer_offset_alignment);
glGetIntegerv(GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS, &max); glGetIntegerv(GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS, &max);
@ -7782,7 +7783,7 @@ void vrend_renderer_fill_caps(uint32_t set, uint32_t version,
if (gl_ver >= 44) if (gl_ver >= 44)
glGetIntegerv(GL_MAX_VERTEX_ATTRIB_STRIDE, (GLint*)&caps->v2.max_vertex_attrib_stride); glGetIntegerv(GL_MAX_VERTEX_ATTRIB_STRIDE, (GLint*)&caps->v2.max_vertex_attrib_stride);
if (gl_ver >= 43 || epoxy_has_gl_extension("GL_ARB_texture_view")) if (has_feature(feat_texture_view))
caps->v2.capability_bits |= VIRGL_CAP_TEXTURE_VIEW; caps->v2.capability_bits |= VIRGL_CAP_TEXTURE_VIEW;
if (has_feature(feat_copy_image)) if (has_feature(feat_copy_image))

Loading…
Cancel
Save