diff --git a/src/vrend_shader.c b/src/vrend_shader.c index ff0af9e..bac5392 100644 --- a/src/vrend_shader.c +++ b/src/vrend_shader.c @@ -3258,6 +3258,7 @@ get_source_info(struct dump_ctx *ctx, ctx->system_values[j].glsl_name, get_swiz_char(src->Register.SwizzleW)); sinfo->override_no_cast[i] = true; } else if (ctx->system_values[j].name == TGSI_SEMANTIC_SAMPLEMASK) { + ctx->shader_req_bits |= SHADER_REQ_SAMPLE_SHADING | SHADER_REQ_INTS; snprintf(srcs[i], 255, "ivec4(%s, %s, %s, %s)", src->Register.SwizzleX == TGSI_SWIZZLE_X ? ctx->system_values[j].glsl_name : "0", src->Register.SwizzleY == TGSI_SWIZZLE_X ? ctx->system_values[j].glsl_name : "0", @@ -4010,6 +4011,14 @@ static char *emit_header(struct dump_ctx *ctx, char *glsl_hdr) STRCAT_WITH_RET(glsl_hdr, "#extension GL_OES_tessellation_point_size : enable\n"); } + if (ctx->cfg->glsl_version < 320) { + if (ctx->shader_req_bits & SHADER_REQ_SAMPLE_SHADING) + STRCAT_WITH_RET(glsl_hdr, "#extension GL_OES_sample_variables : require\n"); + if (ctx->shader_req_bits & SHADER_REQ_GPU_SHADER5) + STRCAT_WITH_RET(glsl_hdr, "#extension GL_OES_gpu_shader5 : require\n"); + } + + PAD_GPU_SHADER5(glsl_hdr); STRCAT_WITH_RET(glsl_hdr, "precision highp float;\n"); STRCAT_WITH_RET(glsl_hdr, "precision highp int;\n");