summaryrefslogtreecommitdiff
path: root/src/mesa/drivers/dri/r300/r300_render.c
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2008-05-28 10:20:14 +1000
committerDave Airlie <airlied@redhat.com>2008-05-28 10:20:14 +1000
commit261a15cf6389eba434d6857e78b524707803ed08 (patch)
tree6b84a6a59fbe70f96e060f6b72a901010467556b /src/mesa/drivers/dri/r300/r300_render.c
parent8bd70a7bbefe420dd696bfd6dc3b64d3dd17e884 (diff)
parent85af4fde7fd5c7f6a6976fbd9d6529a9082f42b7 (diff)
Merge branch 'r500-support'
Bring in all the r500 3D code into master should be as stable as the r300 code it is landing on top off. Conflicts: src/mesa/drivers/dri/r300/r300_reg.h src/mesa/drivers/dri/r300/r300_state.c src/mesa/drivers/dri/radeon/radeon_screen.c
Diffstat (limited to 'src/mesa/drivers/dri/r300/r300_render.c')
-rw-r--r--src/mesa/drivers/dri/r300/r300_render.c25
1 files changed, 19 insertions, 6 deletions
diff --git a/src/mesa/drivers/dri/r300/r300_render.c b/src/mesa/drivers/dri/r300/r300_render.c
index eee1e803a0..fc07105c56 100644
--- a/src/mesa/drivers/dri/r300/r300_render.c
+++ b/src/mesa/drivers/dri/r300/r300_render.c
@@ -334,13 +334,26 @@ static GLboolean r300RunRender(GLcontext * ctx,
static int r300Fallback(GLcontext * ctx)
{
r300ContextPtr r300 = R300_CONTEXT(ctx);
- struct r300_fragment_program *fp = (struct r300_fragment_program *)
+ /* Do we need to use new-style shaders?
+ * Also is there a better way to do this? */
+ if (r300->radeon.radeonScreen->chip_family >= CHIP_FAMILY_RV515) {
+ struct r500_fragment_program *fp = (struct r500_fragment_program *)
(char *)ctx->FragmentProgram._Current;
-
- if (fp) {
- if (!fp->translated)
- r300TranslateFragmentShader(r300, fp);
- FALLBACK_IF(!fp->translated);
+ if (fp) {
+ if (!fp->translated) {
+ r500TranslateFragmentShader(r300, fp);
+ FALLBACK_IF(!fp->translated);
+ }
+ }
+ } else {
+ struct r300_fragment_program *fp = (struct r300_fragment_program *)
+ (char *)ctx->FragmentProgram._Current;
+ if (fp) {
+ if (!fp->translated) {
+ r300TranslateFragmentShader(r300, fp);
+ FALLBACK_IF(!fp->translated);
+ }
+ }
}
FALLBACK_IF(ctx->RenderMode != GL_RENDER);