glxgears now renders in the right place on-screen, although it is still rather...psychedelic.undefined
@@ -201,9 +201,6 @@ struct pipe_context* r300_create_context(struct pipe_screen* screen, | |||
draw_set_rasterize_stage(r300->draw, r300_draw_stage(r300)); | |||
/* Enable Draw's clipping. */ | |||
draw_set_driver_clipping(r300->draw, FALSE); | |||
/* Force Draw to never do viewport transform, since we can do | |||
* transform in hardware, always. */ | |||
draw_set_viewport_state(r300->draw, &r300_viewport_identity); | |||
} | |||
r300_setup_atoms(r300); |
@@ -321,8 +321,6 @@ struct r300_vertex_element_state { | |||
struct r300_vertex_stream_state vertex_stream; | |||
}; | |||
extern struct pipe_viewport_state r300_viewport_identity; | |||
struct r300_context { | |||
/* Parent class */ | |||
struct pipe_context context; |
@@ -395,13 +395,13 @@ static void r300_set_clip_state(struct pipe_context* pipe, | |||
if (r300->screen->caps.has_tcl) { | |||
memcpy(r300->clip_state.state, state, sizeof(struct pipe_clip_state)); | |||
r300->clip_state.size = 29; | |||
r300->clip_state.dirty = TRUE; | |||
} else { | |||
draw_flush(r300->draw); | |||
draw_set_clip_state(r300->draw, state); | |||
r300->clip_state.size = 2; | |||
} | |||
r300->clip_state.dirty = TRUE; | |||
} | |||
/* Create a new depth, stencil, and alpha state based on the CSO dsa state. | |||
@@ -1098,6 +1098,13 @@ static void r300_set_viewport_state(struct pipe_context* pipe, | |||
r300->viewport = *state; | |||
if (r300->draw) { | |||
draw_flush(r300->draw); | |||
draw_set_viewport_state(r300->draw, state); | |||
viewport->vte_control = R300_VTX_XY_FMT | R300_VTX_Z_FMT; | |||
return; | |||
} | |||
/* Do the transform in HW. */ | |||
viewport->vte_control = R300_VTX_W0_FMT; | |||
@@ -27,11 +27,6 @@ | |||
#include "r300_screen.h" | |||
#include "r300_state_invariant.h" | |||
struct pipe_viewport_state r300_viewport_identity = { | |||
.scale = {1.0, 1.0, 1.0, 1.0}, | |||
.translate = {0.0, 0.0, 0.0, 0.0}, | |||
}; | |||
/* Calculate and emit invariant state. This is data that the 3D engine | |||
* will probably want at the beginning of every CS, but it's not currently | |||
* handled by any CSO setup, and in addition it doesn't really change much. |