glamor: Add fallbacks for Render.
This commit is contained in:
		
							parent
							
								
									de675893b7
								
							
						
					
					
						commit
						e9d4794cd0
					
				| 
						 | 
					@ -123,8 +123,8 @@ glamor_fallback(char *format, ...)
 | 
				
			||||||
    va_list ap;
 | 
					    va_list ap;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    va_start(ap, format);
 | 
					    va_start(ap, format);
 | 
				
			||||||
    LogMessageVerb(X_INFO, 1, "glamor fallback: ");
 | 
					    LogMessageVerb(X_INFO, 0, "fallback: ");
 | 
				
			||||||
    LogVMessageVerb(X_INFO, 1, format, ap);
 | 
					    LogVMessageVerb(X_NONE, 0, format, ap);
 | 
				
			||||||
    va_end(ap);
 | 
					    va_end(ap);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -25,7 +25,6 @@
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
/** @file glamor_render.c
 | 
					/** @file glamor_render.c
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Render acceleration implementation
 | 
					 * Render acceleration implementation
 | 
				
			||||||
| 
						 | 
					@ -35,6 +34,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef RENDER
 | 
					#ifdef RENDER
 | 
				
			||||||
#include "mipict.h"
 | 
					#include "mipict.h"
 | 
				
			||||||
 | 
					#include "fbpict.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "glu3/glu3.h"
 | 
					#include "glu3/glu3.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -474,11 +474,11 @@ glamor_composite(CARD8 op,
 | 
				
			||||||
	source_pixmap = glamor_get_drawable_pixmap(source->pDrawable);
 | 
						source_pixmap = glamor_get_drawable_pixmap(source->pDrawable);
 | 
				
			||||||
	source_pixmap_priv = glamor_get_pixmap_private(source_pixmap);
 | 
						source_pixmap_priv = glamor_get_pixmap_private(source_pixmap);
 | 
				
			||||||
	if (source_pixmap == dest_pixmap) {
 | 
						if (source_pixmap == dest_pixmap) {
 | 
				
			||||||
	    ErrorF("source == dest\n");
 | 
						    glamor_fallback("glamor_composite(): source == dest\n");
 | 
				
			||||||
	    goto fail;
 | 
						    goto fail;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if (!source_pixmap_priv || source_pixmap_priv->tex == 0) {
 | 
						if (!source_pixmap_priv || source_pixmap_priv->tex == 0) {
 | 
				
			||||||
	    ErrorF("no FBO in source\n");
 | 
						    glamor_fallback("glamor_composite(): no FBO in source\n");
 | 
				
			||||||
	    goto fail;
 | 
						    goto fail;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					@ -486,18 +486,19 @@ glamor_composite(CARD8 op,
 | 
				
			||||||
	mask_pixmap = glamor_get_drawable_pixmap(mask->pDrawable);
 | 
						mask_pixmap = glamor_get_drawable_pixmap(mask->pDrawable);
 | 
				
			||||||
	mask_pixmap_priv = glamor_get_pixmap_private(mask_pixmap);
 | 
						mask_pixmap_priv = glamor_get_pixmap_private(mask_pixmap);
 | 
				
			||||||
	if (mask_pixmap == dest_pixmap) {
 | 
						if (mask_pixmap == dest_pixmap) {
 | 
				
			||||||
	    ErrorF("mask == dest\n");
 | 
						    glamor_fallback("glamor_composite(): mask == dest\n");
 | 
				
			||||||
	    goto fail;
 | 
						    goto fail;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if (!mask_pixmap_priv || mask_pixmap_priv->tex == 0) {
 | 
						if (!mask_pixmap_priv || mask_pixmap_priv->tex == 0) {
 | 
				
			||||||
	    ErrorF("no FBO in mask\n");
 | 
						    glamor_fallback("glamor_composite(): no FBO in mask\n");
 | 
				
			||||||
	    goto fail;
 | 
						    goto fail;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    shader = glamor_lookup_composite_shader(screen, &key);
 | 
					    shader = glamor_lookup_composite_shader(screen, &key);
 | 
				
			||||||
    if (shader->prog == 0) {
 | 
					    if (shader->prog == 0) {
 | 
				
			||||||
	ErrorF("No program compiled for this render accel mode\n");
 | 
						glamor_fallback("glamor_composite(): "
 | 
				
			||||||
 | 
								"no shader program for this render acccel mode\n");
 | 
				
			||||||
	goto fail;
 | 
						goto fail;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -570,9 +571,31 @@ glamor_composite(CARD8 op,
 | 
				
			||||||
    return;
 | 
					    return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
fail:
 | 
					fail:
 | 
				
			||||||
    glamor_set_composite_op(screen, PictOpSrc, dest, mask);
 | 
					    glamor_fallback("glamor_composite(): "
 | 
				
			||||||
 | 
							    "from picts %p/%p to pict %p\n", source, mask, dest);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    glUseProgramObjectARB(0);
 | 
					    glUseProgramObjectARB(0);
 | 
				
			||||||
    glamor_solid_fail_region(dest_pixmap, x_dest, y_dest, width, height);
 | 
					    if (glamor_prepare_access(dest->pDrawable, GLAMOR_ACCESS_RW)) {
 | 
				
			||||||
 | 
						if (source->pDrawable == NULL ||
 | 
				
			||||||
 | 
						    glamor_prepare_access(source->pDrawable, GLAMOR_ACCESS_RO))
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						    if (!mask || mask->pDrawable == NULL ||
 | 
				
			||||||
 | 
							glamor_prepare_access(mask->pDrawable, GLAMOR_ACCESS_RO))
 | 
				
			||||||
 | 
						    {
 | 
				
			||||||
 | 
							fbComposite(op,
 | 
				
			||||||
 | 
								    source, mask, dest,
 | 
				
			||||||
 | 
								    x_source, y_source,
 | 
				
			||||||
 | 
								    x_mask, y_mask,
 | 
				
			||||||
 | 
								    x_dest, y_dest,
 | 
				
			||||||
 | 
								    width, height);
 | 
				
			||||||
 | 
							if (mask && mask->pDrawable != NULL)
 | 
				
			||||||
 | 
							    glamor_finish_access(mask->pDrawable);
 | 
				
			||||||
 | 
						    }
 | 
				
			||||||
 | 
						    if (source->pDrawable != NULL)
 | 
				
			||||||
 | 
							glamor_finish_access(source->pDrawable);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						glamor_finish_access(dest->pDrawable);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue