i965/state: Move is_drawing_lines/points to gen6_clip_state.c

Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
Jason Ekstrand 2016-08-08 17:23:10 -07:00
parent 04f3594cd5
commit 4c3acf94da
4 changed files with 59 additions and 56 deletions

View File

@ -406,62 +406,13 @@ void brw_upload_clip_prog(struct brw_context *brw);
/* brw_sf.c */
void brw_upload_sf_prog(struct brw_context *brw);
bool brw_is_drawing_points(const struct brw_context *brw);
bool brw_is_drawing_lines(const struct brw_context *brw);
/* gen7_l3_state.c */
void
gen7_restore_default_l3_config(struct brw_context *brw);
static inline bool
is_drawing_points(const struct brw_context *brw)
{
/* Determine if the primitives *reaching the SF* are points */
/* _NEW_POLYGON */
if (brw->ctx.Polygon.FrontMode == GL_POINT ||
brw->ctx.Polygon.BackMode == GL_POINT) {
return true;
}
if (brw->geometry_program) {
/* BRW_NEW_GEOMETRY_PROGRAM */
return brw->geometry_program->OutputType == GL_POINTS;
} else if (brw->tes.prog_data) {
/* BRW_NEW_TES_PROG_DATA */
return brw->tes.prog_data->output_topology ==
BRW_TESS_OUTPUT_TOPOLOGY_POINT;
} else {
/* BRW_NEW_PRIMITIVE */
return brw->primitive == _3DPRIM_POINTLIST;
}
}
static inline bool
is_drawing_lines(const struct brw_context *brw)
{
/* Determine if the primitives *reaching the SF* are points */
/* _NEW_POLYGON */
if (brw->ctx.Polygon.FrontMode == GL_LINE ||
brw->ctx.Polygon.BackMode == GL_LINE) {
return true;
}
if (brw->geometry_program) {
/* BRW_NEW_GEOMETRY_PROGRAM */
return brw->geometry_program->OutputType == GL_LINE_STRIP;
} else if (brw->tes.prog_data) {
/* BRW_NEW_TES_PROG_DATA */
return brw->tes.prog_data->output_topology ==
BRW_TESS_OUTPUT_TOPOLOGY_LINE;
} else {
/* BRW_NEW_PRIMITIVE */
switch (brw->primitive) {
case _3DPRIM_LINELIST:
case _3DPRIM_LINESTRIP:
case _3DPRIM_LINELOOP:
return true;
}
}
return false;
}
static inline bool
use_state_point_size(const struct brw_context *brw)
{

View File

@ -33,6 +33,58 @@
#include "main/fbobject.h"
#include "main/framebuffer.h"
bool
brw_is_drawing_points(const struct brw_context *brw)
{
/* Determine if the primitives *reaching the SF* are points */
/* _NEW_POLYGON */
if (brw->ctx.Polygon.FrontMode == GL_POINT ||
brw->ctx.Polygon.BackMode == GL_POINT) {
return true;
}
if (brw->geometry_program) {
/* BRW_NEW_GEOMETRY_PROGRAM */
return brw->geometry_program->OutputType == GL_POINTS;
} else if (brw->tes.prog_data) {
/* BRW_NEW_TES_PROG_DATA */
return brw->tes.prog_data->output_topology ==
BRW_TESS_OUTPUT_TOPOLOGY_POINT;
} else {
/* BRW_NEW_PRIMITIVE */
return brw->primitive == _3DPRIM_POINTLIST;
}
}
bool
brw_is_drawing_lines(const struct brw_context *brw)
{
/* Determine if the primitives *reaching the SF* are points */
/* _NEW_POLYGON */
if (brw->ctx.Polygon.FrontMode == GL_LINE ||
brw->ctx.Polygon.BackMode == GL_LINE) {
return true;
}
if (brw->geometry_program) {
/* BRW_NEW_GEOMETRY_PROGRAM */
return brw->geometry_program->OutputType == GL_LINE_STRIP;
} else if (brw->tes.prog_data) {
/* BRW_NEW_TES_PROG_DATA */
return brw->tes.prog_data->output_topology ==
BRW_TESS_OUTPUT_TOPOLOGY_LINE;
} else {
/* BRW_NEW_PRIMITIVE */
switch (brw->primitive) {
case _3DPRIM_LINELIST:
case _3DPRIM_LINESTRIP:
case _3DPRIM_LINELOOP:
return true;
}
}
return false;
}
static void
upload_clip_state(struct brw_context *brw)
{
@ -178,7 +230,7 @@ upload_clip_state(struct brw_context *brw)
else
enable = GEN6_CLIP_ENABLE;
if (!is_drawing_points(brw) && !is_drawing_lines(brw))
if (!brw_is_drawing_points(brw) && !brw_is_drawing_lines(brw))
dw2 |= GEN6_CLIP_XY_TEST;
/* BRW_NEW_VUE_MAP_GEOM_OUT */

View File

@ -195,7 +195,7 @@ calculate_attr_overrides(const struct brw_context *brw,
* _NEW_POLYGON
* BRW_NEW_PRIMITIVE | BRW_NEW_GEOMETRY_PROGRAM | BRW_NEW_TES_PROG_DATA
*/
bool drawing_points = is_drawing_points(brw);
bool drawing_points = brw_is_drawing_points(brw);
/* Initialize all the attr_overrides to 0. In the loop below we'll modify
* just the ones that correspond to inputs used by the fs.
@ -337,7 +337,7 @@ upload_sf_state(struct brw_context *brw)
/* _NEW_SCISSOR _NEW_POLYGON BRW_NEW_GEOMETRY_PROGRAM BRW_NEW_PRIMITIVE */
if (ctx->Scissor.EnableFlags ||
is_drawing_points(brw) || is_drawing_lines(brw))
brw_is_drawing_points(brw) || brw_is_drawing_lines(brw))
dw3 |= GEN6_SF_SCISSOR_ENABLE;
/* _NEW_POLYGON */

View File

@ -189,7 +189,7 @@ upload_sf_state(struct brw_context *brw)
/* _NEW_SCISSOR _NEW_POLYGON BRW_NEW_GEOMETRY_PROGRAM BRW_NEW_PRIMITIVE */
if (ctx->Scissor.EnableFlags ||
is_drawing_points(brw) || is_drawing_lines(brw))
brw_is_drawing_points(brw) || brw_is_drawing_lines(brw))
dw2 |= GEN6_SF_SCISSOR_ENABLE;
/* _NEW_LINE */