projects
/
mesa.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
r300g: fix warnings
[mesa.git]
/
src
/
gallium
/
drivers
/
r300
/
r300_screen.c
diff --git
a/src/gallium/drivers/r300/r300_screen.c
b/src/gallium/drivers/r300/r300_screen.c
index 497e24b7605bd9427447467283002b61adafb591..cad99ca8453abe756419d7a14a6e10c717603322 100644
(file)
--- a/
src/gallium/drivers/r300/r300_screen.c
+++ b/
src/gallium/drivers/r300/r300_screen.c
@@
-30,6
+30,7
@@
#include "r300_screen_buffer.h"
#include "r300_state_inlines.h"
#include "r300_winsys.h"
#include "r300_screen_buffer.h"
#include "r300_state_inlines.h"
#include "r300_winsys.h"
+#include "r300_public.h"
/* Return the identifier behind whom the brave coders responsible for this
* amalgamation of code, sweat, and duct tape, routinely obscure their names.
/* Return the identifier behind whom the brave coders responsible for this
* amalgamation of code, sweat, and duct tape, routinely obscure their names.
@@
-206,6
+207,8
@@
static int r300_get_param(struct pipe_screen* pscreen, enum pipe_cap param)
return 1; /* XXX guessed */
case PIPE_CAP_MAX_VS_PREDS:
return is_r500 ? 4 : 0; /* XXX guessed. */
return 1; /* XXX guessed */
case PIPE_CAP_MAX_VS_PREDS:
return is_r500 ? 4 : 0; /* XXX guessed. */
+ case PIPE_CAP_GEOMETRY_SHADER4:
+ return 0;
default:
fprintf(stderr, "r300: Implementation error: Bad param %d\n",
default:
fprintf(stderr, "r300: Implementation error: Bad param %d\n",
@@
-269,15
+272,24
@@
static boolean r300_is_format_supported(struct pipe_screen* screen,
format == PIPE_FORMAT_R16G16B16_FLOAT ||
format == PIPE_FORMAT_R16G16B16A16_FLOAT;
format == PIPE_FORMAT_R16G16B16_FLOAT ||
format == PIPE_FORMAT_R16G16B16A16_FLOAT;
- if (target >= PIPE_MAX_TEXTURE_TYPES) {
- fprintf(stderr, "r300: Implementation error: Received bogus texture "
- "target %d in %s\n", target, __FUNCTION__);
- return FALSE;
+ switch (sample_count) {
+ case 0:
+ case 1:
+ break;
+ case 2:
+ case 3:
+ case 4:
+ case 6:
+ if (usage != PIPE_BIND_RENDER_TARGET ||
+ !util_format_is_rgba8_variant(
+ util_format_description(format))) {
+ return FALSE;
+ }
+ break;
+ default:
+ return FALSE;
}
}
- if (sample_count > 1)
- return FALSE;
-
/* Check sampler format support. */
if ((usage & PIPE_BIND_SAMPLER_VIEW) &&
/* Z24 cannot be sampled from on non-r5xx. */
/* Check sampler format support. */
if ((usage & PIPE_BIND_SAMPLER_VIEW) &&
/* Z24 cannot be sampled from on non-r5xx. */
@@
-319,6
+331,12
@@
static boolean r300_is_format_supported(struct pipe_screen* screen,
retval |= PIPE_BIND_VERTEX_BUFFER;
}
retval |= PIPE_BIND_VERTEX_BUFFER;
}
+ /* Transfers are always supported. */
+ if (usage & PIPE_BIND_TRANSFER_READ)
+ retval |= PIPE_BIND_TRANSFER_READ;
+ if (usage & PIPE_BIND_TRANSFER_WRITE)
+ retval |= PIPE_BIND_TRANSFER_WRITE;
+
return retval == usage;
}
return retval == usage;
}
@@
-366,7
+384,7
@@
static int r300_fence_finish(struct pipe_screen *screen,
return 0; /* 0 == success */
}
return 0; /* 0 == success */
}
-struct pipe_screen* r300_
create_screen
(struct r300_winsys_screen *rws)
+struct pipe_screen* r300_
screen_create
(struct r300_winsys_screen *rws)
{
struct r300_screen *r300screen = CALLOC_STRUCT(r300_screen);
{
struct r300_screen *r300screen = CALLOC_STRUCT(r300_screen);