tgsi/ureg: simplify code for declaring properties
Tested-by: Nick Sarnie <commendsarnex@gmail.com>
This commit is contained in:
parent
e6a2d3f7b6
commit
48f1409c3b
|
@ -165,15 +165,7 @@ struct ureg_program
|
||||||
struct const_decl const_decls;
|
struct const_decl const_decls;
|
||||||
struct const_decl const_decls2D[PIPE_MAX_CONSTANT_BUFFERS];
|
struct const_decl const_decls2D[PIPE_MAX_CONSTANT_BUFFERS];
|
||||||
|
|
||||||
unsigned property_gs_input_prim;
|
unsigned properties[TGSI_PROPERTY_COUNT];
|
||||||
unsigned property_gs_output_prim;
|
|
||||||
unsigned property_gs_max_vertices;
|
|
||||||
unsigned property_gs_invocations;
|
|
||||||
unsigned char property_fs_coord_origin; /* = TGSI_FS_COORD_ORIGIN_* */
|
|
||||||
unsigned char property_fs_coord_pixel_center; /* = TGSI_FS_COORD_PIXEL_CENTER_* */
|
|
||||||
unsigned char property_fs_color0_writes_all_cbufs; /* = TGSI_FS_COLOR0_WRITES_ALL_CBUFS * */
|
|
||||||
unsigned char property_fs_depth_layout; /* TGSI_FS_DEPTH_LAYOUT */
|
|
||||||
boolean property_vs_window_space_position; /* TGSI_VS_WINDOW_SPACE_POSITION */
|
|
||||||
|
|
||||||
unsigned nr_addrs;
|
unsigned nr_addrs;
|
||||||
unsigned nr_preds;
|
unsigned nr_preds;
|
||||||
|
@ -278,65 +270,10 @@ ureg_dst_register( unsigned file,
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
ureg_property_gs_input_prim(struct ureg_program *ureg,
|
ureg_property(struct ureg_program *ureg, unsigned name, unsigned value)
|
||||||
unsigned input_prim)
|
|
||||||
{
|
{
|
||||||
ureg->property_gs_input_prim = input_prim;
|
assert(name < Elements(ureg->properties));
|
||||||
}
|
ureg->properties[name] = value;
|
||||||
|
|
||||||
void
|
|
||||||
ureg_property_gs_output_prim(struct ureg_program *ureg,
|
|
||||||
unsigned output_prim)
|
|
||||||
{
|
|
||||||
ureg->property_gs_output_prim = output_prim;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
ureg_property_gs_max_vertices(struct ureg_program *ureg,
|
|
||||||
unsigned max_vertices)
|
|
||||||
{
|
|
||||||
ureg->property_gs_max_vertices = max_vertices;
|
|
||||||
}
|
|
||||||
void
|
|
||||||
ureg_property_gs_invocations(struct ureg_program *ureg,
|
|
||||||
unsigned invocations)
|
|
||||||
{
|
|
||||||
ureg->property_gs_invocations = invocations;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
ureg_property_fs_coord_origin(struct ureg_program *ureg,
|
|
||||||
unsigned fs_coord_origin)
|
|
||||||
{
|
|
||||||
ureg->property_fs_coord_origin = fs_coord_origin;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
ureg_property_fs_coord_pixel_center(struct ureg_program *ureg,
|
|
||||||
unsigned fs_coord_pixel_center)
|
|
||||||
{
|
|
||||||
ureg->property_fs_coord_pixel_center = fs_coord_pixel_center;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
ureg_property_fs_color0_writes_all_cbufs(struct ureg_program *ureg,
|
|
||||||
unsigned fs_color0_writes_all_cbufs)
|
|
||||||
{
|
|
||||||
ureg->property_fs_color0_writes_all_cbufs = fs_color0_writes_all_cbufs;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
ureg_property_fs_depth_layout(struct ureg_program *ureg,
|
|
||||||
unsigned fs_depth_layout)
|
|
||||||
{
|
|
||||||
ureg->property_fs_depth_layout = fs_depth_layout;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
ureg_property_vs_window_space_position(struct ureg_program *ureg,
|
|
||||||
boolean vs_window_space_position)
|
|
||||||
{
|
|
||||||
ureg->property_vs_window_space_position = vs_window_space_position;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
struct ureg_src
|
struct ureg_src
|
||||||
|
@ -1452,77 +1389,9 @@ static void emit_decls( struct ureg_program *ureg )
|
||||||
{
|
{
|
||||||
unsigned i;
|
unsigned i;
|
||||||
|
|
||||||
if (ureg->property_gs_input_prim != ~0) {
|
for (i = 0; i < Elements(ureg->properties); i++)
|
||||||
assert(ureg->processor == TGSI_PROCESSOR_GEOMETRY);
|
if (ureg->properties[i] != ~0)
|
||||||
|
emit_property(ureg, i, ureg->properties[i]);
|
||||||
emit_property(ureg,
|
|
||||||
TGSI_PROPERTY_GS_INPUT_PRIM,
|
|
||||||
ureg->property_gs_input_prim);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ureg->property_gs_output_prim != ~0) {
|
|
||||||
assert(ureg->processor == TGSI_PROCESSOR_GEOMETRY);
|
|
||||||
|
|
||||||
emit_property(ureg,
|
|
||||||
TGSI_PROPERTY_GS_OUTPUT_PRIM,
|
|
||||||
ureg->property_gs_output_prim);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ureg->property_gs_max_vertices != ~0) {
|
|
||||||
assert(ureg->processor == TGSI_PROCESSOR_GEOMETRY);
|
|
||||||
|
|
||||||
emit_property(ureg,
|
|
||||||
TGSI_PROPERTY_GS_MAX_OUTPUT_VERTICES,
|
|
||||||
ureg->property_gs_max_vertices);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ureg->property_gs_invocations != ~0) {
|
|
||||||
assert(ureg->processor == TGSI_PROCESSOR_GEOMETRY);
|
|
||||||
|
|
||||||
emit_property(ureg,
|
|
||||||
TGSI_PROPERTY_GS_INVOCATIONS,
|
|
||||||
ureg->property_gs_invocations);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ureg->property_fs_coord_origin) {
|
|
||||||
assert(ureg->processor == TGSI_PROCESSOR_FRAGMENT);
|
|
||||||
|
|
||||||
emit_property(ureg,
|
|
||||||
TGSI_PROPERTY_FS_COORD_ORIGIN,
|
|
||||||
ureg->property_fs_coord_origin);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ureg->property_fs_coord_pixel_center) {
|
|
||||||
assert(ureg->processor == TGSI_PROCESSOR_FRAGMENT);
|
|
||||||
|
|
||||||
emit_property(ureg,
|
|
||||||
TGSI_PROPERTY_FS_COORD_PIXEL_CENTER,
|
|
||||||
ureg->property_fs_coord_pixel_center);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ureg->property_fs_color0_writes_all_cbufs) {
|
|
||||||
assert(ureg->processor == TGSI_PROCESSOR_FRAGMENT);
|
|
||||||
|
|
||||||
emit_property(ureg,
|
|
||||||
TGSI_PROPERTY_FS_COLOR0_WRITES_ALL_CBUFS,
|
|
||||||
ureg->property_fs_color0_writes_all_cbufs);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ureg->property_fs_depth_layout) {
|
|
||||||
assert(ureg->processor == TGSI_PROCESSOR_FRAGMENT);
|
|
||||||
|
|
||||||
emit_property(ureg,
|
|
||||||
TGSI_PROPERTY_FS_DEPTH_LAYOUT,
|
|
||||||
ureg->property_fs_depth_layout);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ureg->property_vs_window_space_position) {
|
|
||||||
assert(ureg->processor == TGSI_PROCESSOR_VERTEX);
|
|
||||||
|
|
||||||
emit_property(ureg,
|
|
||||||
TGSI_PROPERTY_VS_WINDOW_SPACE_POSITION,
|
|
||||||
ureg->property_vs_window_space_position);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ureg->processor == TGSI_PROCESSOR_VERTEX) {
|
if (ureg->processor == TGSI_PROCESSOR_VERTEX) {
|
||||||
for (i = 0; i < UREG_MAX_INPUT; i++) {
|
for (i = 0; i < UREG_MAX_INPUT; i++) {
|
||||||
|
@ -1773,15 +1642,15 @@ void ureg_free_tokens( const struct tgsi_token *tokens )
|
||||||
|
|
||||||
struct ureg_program *ureg_create( unsigned processor )
|
struct ureg_program *ureg_create( unsigned processor )
|
||||||
{
|
{
|
||||||
|
int i;
|
||||||
struct ureg_program *ureg = CALLOC_STRUCT( ureg_program );
|
struct ureg_program *ureg = CALLOC_STRUCT( ureg_program );
|
||||||
if (ureg == NULL)
|
if (ureg == NULL)
|
||||||
goto no_ureg;
|
goto no_ureg;
|
||||||
|
|
||||||
ureg->processor = processor;
|
ureg->processor = processor;
|
||||||
ureg->property_gs_input_prim = ~0;
|
|
||||||
ureg->property_gs_output_prim = ~0;
|
for (i = 0; i < Elements(ureg->properties); i++)
|
||||||
ureg->property_gs_max_vertices = ~0;
|
ureg->properties[i] = ~0;
|
||||||
ureg->property_gs_invocations = ~0;
|
|
||||||
|
|
||||||
ureg->free_temps = util_bitmask_create();
|
ureg->free_temps = util_bitmask_create();
|
||||||
if (ureg->free_temps == NULL)
|
if (ureg->free_temps == NULL)
|
||||||
|
|
|
@ -153,40 +153,7 @@ ureg_create_shader_and_destroy( struct ureg_program *p,
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
ureg_property_gs_input_prim(struct ureg_program *ureg,
|
ureg_property(struct ureg_program *ureg, unsigned name, unsigned value);
|
||||||
unsigned input_prim);
|
|
||||||
|
|
||||||
void
|
|
||||||
ureg_property_gs_output_prim(struct ureg_program *ureg,
|
|
||||||
unsigned output_prim);
|
|
||||||
|
|
||||||
void
|
|
||||||
ureg_property_gs_max_vertices(struct ureg_program *ureg,
|
|
||||||
unsigned max_vertices);
|
|
||||||
|
|
||||||
void
|
|
||||||
ureg_property_gs_invocations(struct ureg_program *ureg,
|
|
||||||
unsigned invocations);
|
|
||||||
|
|
||||||
void
|
|
||||||
ureg_property_fs_coord_origin(struct ureg_program *ureg,
|
|
||||||
unsigned fs_coord_origin);
|
|
||||||
|
|
||||||
void
|
|
||||||
ureg_property_fs_coord_pixel_center(struct ureg_program *ureg,
|
|
||||||
unsigned fs_coord_pixel_center);
|
|
||||||
|
|
||||||
void
|
|
||||||
ureg_property_fs_color0_writes_all_cbufs(struct ureg_program *ureg,
|
|
||||||
unsigned fs_color0_writes_all_cbufs);
|
|
||||||
|
|
||||||
void
|
|
||||||
ureg_property_fs_depth_layout(struct ureg_program *ureg,
|
|
||||||
unsigned fs_depth_layout);
|
|
||||||
|
|
||||||
void
|
|
||||||
ureg_property_vs_window_space_position(struct ureg_program *ureg,
|
|
||||||
boolean vs_window_space_position);
|
|
||||||
|
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
|
|
|
@ -84,7 +84,7 @@ util_make_vertex_passthrough_shader_with_so(struct pipe_context *pipe,
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (window_space)
|
if (window_space)
|
||||||
ureg_property_vs_window_space_position(ureg, TRUE);
|
ureg_property(ureg, TGSI_PROPERTY_VS_WINDOW_SPACE_POSITION, TRUE);
|
||||||
|
|
||||||
for (i = 0; i < num_attribs; i++) {
|
for (i = 0; i < num_attribs; i++) {
|
||||||
struct ureg_src src;
|
struct ureg_src src;
|
||||||
|
|
|
@ -4721,7 +4721,8 @@ emit_wpos(struct st_context *st,
|
||||||
}
|
}
|
||||||
else if (pscreen->get_param(pscreen, PIPE_CAP_TGSI_FS_COORD_ORIGIN_LOWER_LEFT)) {
|
else if (pscreen->get_param(pscreen, PIPE_CAP_TGSI_FS_COORD_ORIGIN_LOWER_LEFT)) {
|
||||||
/* the driver supports lower-left origin, need to invert Y */
|
/* the driver supports lower-left origin, need to invert Y */
|
||||||
ureg_property_fs_coord_origin(ureg, TGSI_FS_COORD_ORIGIN_LOWER_LEFT);
|
ureg_property(ureg, TGSI_PROPERTY_FS_COORD_ORIGIN,
|
||||||
|
TGSI_FS_COORD_ORIGIN_LOWER_LEFT);
|
||||||
invert = TRUE;
|
invert = TRUE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -4731,7 +4732,8 @@ emit_wpos(struct st_context *st,
|
||||||
/* Fragment shader wants origin in lower-left */
|
/* Fragment shader wants origin in lower-left */
|
||||||
if (pscreen->get_param(pscreen, PIPE_CAP_TGSI_FS_COORD_ORIGIN_LOWER_LEFT))
|
if (pscreen->get_param(pscreen, PIPE_CAP_TGSI_FS_COORD_ORIGIN_LOWER_LEFT))
|
||||||
/* the driver supports lower-left origin */
|
/* the driver supports lower-left origin */
|
||||||
ureg_property_fs_coord_origin(ureg, TGSI_FS_COORD_ORIGIN_LOWER_LEFT);
|
ureg_property(ureg, TGSI_PROPERTY_FS_COORD_ORIGIN,
|
||||||
|
TGSI_FS_COORD_ORIGIN_LOWER_LEFT);
|
||||||
else if (pscreen->get_param(pscreen, PIPE_CAP_TGSI_FS_COORD_ORIGIN_UPPER_LEFT))
|
else if (pscreen->get_param(pscreen, PIPE_CAP_TGSI_FS_COORD_ORIGIN_UPPER_LEFT))
|
||||||
/* the driver supports upper-left origin, need to invert Y */
|
/* the driver supports upper-left origin, need to invert Y */
|
||||||
invert = TRUE;
|
invert = TRUE;
|
||||||
|
@ -4744,7 +4746,8 @@ emit_wpos(struct st_context *st,
|
||||||
if (pscreen->get_param(pscreen, PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_INTEGER)) {
|
if (pscreen->get_param(pscreen, PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_INTEGER)) {
|
||||||
/* the driver supports pixel center integer */
|
/* the driver supports pixel center integer */
|
||||||
adjY[1] = 1.0f;
|
adjY[1] = 1.0f;
|
||||||
ureg_property_fs_coord_pixel_center(ureg, TGSI_FS_COORD_PIXEL_CENTER_INTEGER);
|
ureg_property(ureg, TGSI_PROPERTY_FS_COORD_PIXEL_CENTER,
|
||||||
|
TGSI_FS_COORD_PIXEL_CENTER_INTEGER);
|
||||||
}
|
}
|
||||||
else if (pscreen->get_param(pscreen, PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_HALF_INTEGER)) {
|
else if (pscreen->get_param(pscreen, PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_HALF_INTEGER)) {
|
||||||
/* the driver supports pixel center half integer, need to bias X,Y */
|
/* the driver supports pixel center half integer, need to bias X,Y */
|
||||||
|
@ -4763,7 +4766,8 @@ emit_wpos(struct st_context *st,
|
||||||
else if (pscreen->get_param(pscreen, PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_INTEGER)) {
|
else if (pscreen->get_param(pscreen, PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_INTEGER)) {
|
||||||
/* the driver supports pixel center integer, need to bias X,Y */
|
/* the driver supports pixel center integer, need to bias X,Y */
|
||||||
adjX = adjY[0] = adjY[1] = 0.5f;
|
adjX = adjY[0] = adjY[1] = 0.5f;
|
||||||
ureg_property_fs_coord_pixel_center(ureg, TGSI_FS_COORD_PIXEL_CENTER_INTEGER);
|
ureg_property(ureg, TGSI_PROPERTY_FS_COORD_PIXEL_CENTER,
|
||||||
|
TGSI_FS_COORD_PIXEL_CENTER_INTEGER);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
assert(0);
|
assert(0);
|
||||||
|
|
|
@ -891,7 +891,8 @@ emit_wpos(struct st_context *st,
|
||||||
}
|
}
|
||||||
else if (pscreen->get_param(pscreen, PIPE_CAP_TGSI_FS_COORD_ORIGIN_LOWER_LEFT)) {
|
else if (pscreen->get_param(pscreen, PIPE_CAP_TGSI_FS_COORD_ORIGIN_LOWER_LEFT)) {
|
||||||
/* the driver supports lower-left origin, need to invert Y */
|
/* the driver supports lower-left origin, need to invert Y */
|
||||||
ureg_property_fs_coord_origin(ureg, TGSI_FS_COORD_ORIGIN_LOWER_LEFT);
|
ureg_property(ureg, TGSI_PROPERTY_FS_COORD_ORIGIN,
|
||||||
|
TGSI_FS_COORD_ORIGIN_LOWER_LEFT);
|
||||||
invert = TRUE;
|
invert = TRUE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -901,7 +902,8 @@ emit_wpos(struct st_context *st,
|
||||||
/* Fragment shader wants origin in lower-left */
|
/* Fragment shader wants origin in lower-left */
|
||||||
if (pscreen->get_param(pscreen, PIPE_CAP_TGSI_FS_COORD_ORIGIN_LOWER_LEFT))
|
if (pscreen->get_param(pscreen, PIPE_CAP_TGSI_FS_COORD_ORIGIN_LOWER_LEFT))
|
||||||
/* the driver supports lower-left origin */
|
/* the driver supports lower-left origin */
|
||||||
ureg_property_fs_coord_origin(ureg, TGSI_FS_COORD_ORIGIN_LOWER_LEFT);
|
ureg_property(ureg, TGSI_PROPERTY_FS_COORD_ORIGIN,
|
||||||
|
TGSI_FS_COORD_ORIGIN_LOWER_LEFT);
|
||||||
else if (pscreen->get_param(pscreen, PIPE_CAP_TGSI_FS_COORD_ORIGIN_UPPER_LEFT))
|
else if (pscreen->get_param(pscreen, PIPE_CAP_TGSI_FS_COORD_ORIGIN_UPPER_LEFT))
|
||||||
/* the driver supports upper-left origin, need to invert Y */
|
/* the driver supports upper-left origin, need to invert Y */
|
||||||
invert = TRUE;
|
invert = TRUE;
|
||||||
|
@ -914,7 +916,8 @@ emit_wpos(struct st_context *st,
|
||||||
if (pscreen->get_param(pscreen, PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_INTEGER)) {
|
if (pscreen->get_param(pscreen, PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_INTEGER)) {
|
||||||
/* the driver supports pixel center integer */
|
/* the driver supports pixel center integer */
|
||||||
adjY[1] = 1.0f;
|
adjY[1] = 1.0f;
|
||||||
ureg_property_fs_coord_pixel_center(ureg, TGSI_FS_COORD_PIXEL_CENTER_INTEGER);
|
ureg_property(ureg, TGSI_PROPERTY_FS_COORD_PIXEL_CENTER,
|
||||||
|
TGSI_FS_COORD_PIXEL_CENTER_INTEGER);
|
||||||
}
|
}
|
||||||
else if (pscreen->get_param(pscreen, PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_HALF_INTEGER)) {
|
else if (pscreen->get_param(pscreen, PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_HALF_INTEGER)) {
|
||||||
/* the driver supports pixel center half integer, need to bias X,Y */
|
/* the driver supports pixel center half integer, need to bias X,Y */
|
||||||
|
@ -933,7 +936,8 @@ emit_wpos(struct st_context *st,
|
||||||
else if (pscreen->get_param(pscreen, PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_INTEGER)) {
|
else if (pscreen->get_param(pscreen, PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_INTEGER)) {
|
||||||
/* the driver supports pixel center integer, need to bias X,Y */
|
/* the driver supports pixel center integer, need to bias X,Y */
|
||||||
adjX = adjY[0] = adjY[1] = 0.5f;
|
adjX = adjY[0] = adjY[1] = 0.5f;
|
||||||
ureg_property_fs_coord_pixel_center(ureg, TGSI_FS_COORD_PIXEL_CENTER_INTEGER);
|
ureg_property(ureg, TGSI_PROPERTY_FS_COORD_PIXEL_CENTER,
|
||||||
|
TGSI_FS_COORD_PIXEL_CENTER_INTEGER);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
assert(0);
|
assert(0);
|
||||||
|
|
|
@ -742,21 +742,25 @@ st_translate_fragment_program(struct st_context *st,
|
||||||
debug_printf("\n");
|
debug_printf("\n");
|
||||||
}
|
}
|
||||||
if (write_all == GL_TRUE)
|
if (write_all == GL_TRUE)
|
||||||
ureg_property_fs_color0_writes_all_cbufs(ureg, 1);
|
ureg_property(ureg, TGSI_PROPERTY_FS_COLOR0_WRITES_ALL_CBUFS, 1);
|
||||||
|
|
||||||
if (stfp->Base.FragDepthLayout != FRAG_DEPTH_LAYOUT_NONE) {
|
if (stfp->Base.FragDepthLayout != FRAG_DEPTH_LAYOUT_NONE) {
|
||||||
switch (stfp->Base.FragDepthLayout) {
|
switch (stfp->Base.FragDepthLayout) {
|
||||||
case FRAG_DEPTH_LAYOUT_ANY:
|
case FRAG_DEPTH_LAYOUT_ANY:
|
||||||
ureg_property_fs_depth_layout(ureg, TGSI_FS_DEPTH_LAYOUT_ANY);
|
ureg_property(ureg, TGSI_PROPERTY_FS_DEPTH_LAYOUT,
|
||||||
|
TGSI_FS_DEPTH_LAYOUT_ANY);
|
||||||
break;
|
break;
|
||||||
case FRAG_DEPTH_LAYOUT_GREATER:
|
case FRAG_DEPTH_LAYOUT_GREATER:
|
||||||
ureg_property_fs_depth_layout(ureg, TGSI_FS_DEPTH_LAYOUT_GREATER);
|
ureg_property(ureg, TGSI_PROPERTY_FS_DEPTH_LAYOUT,
|
||||||
|
TGSI_FS_DEPTH_LAYOUT_GREATER);
|
||||||
break;
|
break;
|
||||||
case FRAG_DEPTH_LAYOUT_LESS:
|
case FRAG_DEPTH_LAYOUT_LESS:
|
||||||
ureg_property_fs_depth_layout(ureg, TGSI_FS_DEPTH_LAYOUT_LESS);
|
ureg_property(ureg, TGSI_PROPERTY_FS_DEPTH_LAYOUT,
|
||||||
|
TGSI_FS_DEPTH_LAYOUT_LESS);
|
||||||
break;
|
break;
|
||||||
case FRAG_DEPTH_LAYOUT_UNCHANGED:
|
case FRAG_DEPTH_LAYOUT_UNCHANGED:
|
||||||
ureg_property_fs_depth_layout(ureg, TGSI_FS_DEPTH_LAYOUT_UNCHANGED);
|
ureg_property(ureg, TGSI_PROPERTY_FS_DEPTH_LAYOUT,
|
||||||
|
TGSI_FS_DEPTH_LAYOUT_UNCHANGED);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
assert(0);
|
assert(0);
|
||||||
|
@ -1122,10 +1126,11 @@ st_translate_geometry_program(struct st_context *st,
|
||||||
stgp->tgsi.tokens = NULL;
|
stgp->tgsi.tokens = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
ureg_property_gs_input_prim(ureg, stgp->Base.InputType);
|
ureg_property(ureg, TGSI_PROPERTY_GS_INPUT_PRIM, stgp->Base.InputType);
|
||||||
ureg_property_gs_output_prim(ureg, stgp->Base.OutputType);
|
ureg_property(ureg, TGSI_PROPERTY_GS_OUTPUT_PRIM, stgp->Base.OutputType);
|
||||||
ureg_property_gs_max_vertices(ureg, stgp->Base.VerticesOut);
|
ureg_property(ureg, TGSI_PROPERTY_GS_MAX_OUTPUT_VERTICES,
|
||||||
ureg_property_gs_invocations(ureg, stgp->Base.Invocations);
|
stgp->Base.VerticesOut);
|
||||||
|
ureg_property(ureg, TGSI_PROPERTY_GS_INVOCATIONS, stgp->Base.Invocations);
|
||||||
|
|
||||||
if (stgp->glsl_to_tgsi)
|
if (stgp->glsl_to_tgsi)
|
||||||
st_translate_program(st->ctx,
|
st_translate_program(st->ctx,
|
||||||
|
|
Loading…
Reference in New Issue