r300g: Enable more stuff in r300_screen, cleanup comments.
Also enable 24-bit depth buffers without stencil.
This commit is contained in:
@@ -80,13 +80,10 @@ static int r300_get_param(struct pipe_screen* pscreen, int param)
|
||||
struct r300_screen* r300screen = r300_screen(pscreen);
|
||||
|
||||
switch (param) {
|
||||
/* XXX cases marked "IN THEORY" are possible on the hardware,
|
||||
* but haven't been implemented yet. */
|
||||
case PIPE_CAP_MAX_TEXTURE_IMAGE_UNITS:
|
||||
/* XXX I'm told this goes up to 16 */
|
||||
return 8;
|
||||
case PIPE_CAP_NPOT_TEXTURES:
|
||||
/* IN THEORY */
|
||||
return 0;
|
||||
case PIPE_CAP_TWO_SIDED_STENCIL:
|
||||
if (r300screen->caps->is_r500) {
|
||||
@@ -95,16 +92,26 @@ static int r300_get_param(struct pipe_screen* pscreen, int param)
|
||||
return 0;
|
||||
}
|
||||
case PIPE_CAP_GLSL:
|
||||
if (r300screen->caps->is_r500) {
|
||||
return 1;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
/* I'll be frank. This is a lie.
|
||||
*
|
||||
* We don't truly support GLSL on any of this driver's chipsets.
|
||||
* To be fair, no chipset supports the full GLSL specification
|
||||
* to the best of our knowledge, but some of the less esoteric
|
||||
* features are still missing here.
|
||||
*
|
||||
* Rather than cripple ourselves intentionally, I'm going to set
|
||||
* this flag, and as Gallium's interface continues to change, I
|
||||
* hope that this single monolithic GLSL enable can slowly get
|
||||
* split down into many different pieces and the state tracker
|
||||
* will handle fallbacks transparently, like it should.
|
||||
*
|
||||
* ~ C.
|
||||
*/
|
||||
return 1;
|
||||
case PIPE_CAP_ANISOTROPIC_FILTER:
|
||||
return 1;
|
||||
case PIPE_CAP_POINT_SPRITE:
|
||||
/* IN THEORY */
|
||||
return 0;
|
||||
return 1;
|
||||
case PIPE_CAP_MAX_RENDER_TARGETS:
|
||||
return 4;
|
||||
case PIPE_CAP_OCCLUSION_QUERY:
|
||||
@@ -145,10 +152,8 @@ static int r300_get_param(struct pipe_screen* pscreen, int param)
|
||||
case PIPE_CAP_TEXTURE_MIRROR_REPEAT:
|
||||
return 1;
|
||||
case PIPE_CAP_MAX_VERTEX_TEXTURE_UNITS:
|
||||
/* XXX guessing (what a terrible guess) */
|
||||
return 2;
|
||||
return 0;
|
||||
case PIPE_CAP_TGSI_CONT_SUPPORTED:
|
||||
/* XXX */
|
||||
return 0;
|
||||
case PIPE_CAP_BLEND_EQUATION_SEPARATE:
|
||||
return 1;
|
||||
@@ -229,6 +234,7 @@ static boolean check_tex_2d_format(enum pipe_format format, uint32_t usage,
|
||||
|
||||
/* Z buffer or texture */
|
||||
case PIPE_FORMAT_Z16_UNORM:
|
||||
case PIPE_FORMAT_Z24X8_UNORM:
|
||||
/* Z buffer with stencil or texture */
|
||||
case PIPE_FORMAT_Z24S8_UNORM:
|
||||
retval = usage &
|
||||
@@ -239,7 +245,6 @@ static boolean check_tex_2d_format(enum pipe_format format, uint32_t usage,
|
||||
/* Definitely unsupported formats. */
|
||||
/* Non-usable Z buffer/stencil formats. */
|
||||
case PIPE_FORMAT_Z32_UNORM:
|
||||
case PIPE_FORMAT_Z24X8_UNORM:
|
||||
case PIPE_FORMAT_S8Z24_UNORM:
|
||||
case PIPE_FORMAT_X8Z24_UNORM:
|
||||
debug_printf("r300: Note: Got unsupported format: %s in %s\n",
|
||||
@@ -249,7 +254,6 @@ static boolean check_tex_2d_format(enum pipe_format format, uint32_t usage,
|
||||
/* XXX These don't even exist
|
||||
case PIPE_FORMAT_A32R32G32B32:
|
||||
case PIPE_FORMAT_A16R16G16B16: */
|
||||
/* XXX Insert YUV422 packed VYUY and YVYU here */
|
||||
/* XXX What the deuce is UV88? (r3xx accel page 14)
|
||||
debug_printf("r300: Warning: Got unimplemented format: %s in %s\n",
|
||||
pf_name(format), __FUNCTION__);
|
||||
|
||||
@@ -330,13 +330,15 @@ static INLINE uint32_t r300_translate_colorformat(enum pipe_format format)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Depthbuffer and stencilbuffer. Thankfully, we only support two kinds. */
|
||||
/* Depthbuffer and stencilbuffer. Thankfully, we only support two flavors. */
|
||||
static INLINE uint32_t r300_translate_zsformat(enum pipe_format format)
|
||||
{
|
||||
switch (format) {
|
||||
/* 16-bit depth, no stencil */
|
||||
case PIPE_FORMAT_Z16_UNORM:
|
||||
return R300_DEPTHFORMAT_16BIT_INT_Z;
|
||||
/* 24-bit depth, ignored stencil */
|
||||
case PIPE_FORMAT_Z24X8_UNORM:
|
||||
/* 24-bit depth, 8-bit stencil */
|
||||
case PIPE_FORMAT_Z24S8_UNORM:
|
||||
return R300_DEPTHFORMAT_24BIT_INT_Z_8BIT_STENCIL;
|
||||
|
||||
@@ -80,6 +80,7 @@ static INLINE uint32_t r300_translate_texformat(enum pipe_format format)
|
||||
R300_TX_FORMAT_YUV_TO_RGB;
|
||||
/* W24_FP */
|
||||
case PIPE_FORMAT_Z24S8_UNORM:
|
||||
case PIPE_FORMAT_Z24X8_UNORM:
|
||||
return R300_EASY_TX_FORMAT(X, X, X, X, W24_FP);
|
||||
default:
|
||||
debug_printf("r300: Implementation error: "
|
||||
|
||||
Reference in New Issue
Block a user