|
|
@ -201,6 +201,7 @@ struct dump_ctx { |
|
|
|
bool vs_has_pervertex; |
|
|
|
bool vs_has_pervertex; |
|
|
|
bool write_mul_temp; |
|
|
|
bool write_mul_temp; |
|
|
|
bool has_sample_input; |
|
|
|
bool has_sample_input; |
|
|
|
|
|
|
|
bool early_depth_stencil; |
|
|
|
|
|
|
|
|
|
|
|
int tcs_vertices_out; |
|
|
|
int tcs_vertices_out; |
|
|
|
int tes_prim_mode; |
|
|
|
int tes_prim_mode; |
|
|
@ -1295,6 +1296,13 @@ iter_property(struct tgsi_iterate_context *iter, |
|
|
|
if (prop->Property.PropertyName == TGSI_PROPERTY_TES_POINT_MODE) { |
|
|
|
if (prop->Property.PropertyName == TGSI_PROPERTY_TES_POINT_MODE) { |
|
|
|
ctx->tes_point_mode = prop->u[0].Data; |
|
|
|
ctx->tes_point_mode = prop->u[0].Data; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (prop->Property.PropertyName == TGSI_PROPERTY_FS_EARLY_DEPTH_STENCIL) { |
|
|
|
|
|
|
|
ctx->early_depth_stencil = prop->u[0].Data > 0; |
|
|
|
|
|
|
|
if (ctx->early_depth_stencil) |
|
|
|
|
|
|
|
ctx->shader_req_bits |= SHADER_REQ_IMAGE_LOAD_STORE; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return TRUE; |
|
|
|
return TRUE; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -4137,6 +4145,10 @@ static char *emit_ios(struct dump_ctx *ctx, char *glsl_hdr) |
|
|
|
ctx->fs_pixel_center ? "pixel_center_integer" : ""); |
|
|
|
ctx->fs_pixel_center ? "pixel_center_integer" : ""); |
|
|
|
STRCAT_WITH_RET(glsl_hdr, buf); |
|
|
|
STRCAT_WITH_RET(glsl_hdr, buf); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
if (ctx->early_depth_stencil) { |
|
|
|
|
|
|
|
snprintf(buf, 255, "layout(early_fragment_tests) in;\n"); |
|
|
|
|
|
|
|
STRCAT_WITH_RET(glsl_hdr, buf); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
if (ctx->prog_type == TGSI_PROCESSOR_GEOMETRY) { |
|
|
|
if (ctx->prog_type == TGSI_PROCESSOR_GEOMETRY) { |
|
|
|
char invocbuf[25]; |
|
|
|
char invocbuf[25]; |
|
|
|