X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fgallium%2Fdrivers%2Fvc4%2Fvc4_screen.c;h=a327c7f26b45580f1869cc00690bc37f4829fe8b;hb=5cfab07639c650e4e9bae063c72e08a27a5e209d;hp=a8ad493a55e32b7f3a8a7ffca69a8b53981b7d32;hpb=84ca6bc113e72c6e6bdac84f32befdc113cb69e1;p=mesa.git diff --git a/src/gallium/drivers/vc4/vc4_screen.c b/src/gallium/drivers/vc4/vc4_screen.c index a8ad493a55e..a327c7f26b4 100644 --- a/src/gallium/drivers/vc4/vc4_screen.c +++ b/src/gallium/drivers/vc4/vc4_screen.c @@ -108,8 +108,10 @@ vc4_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param) case PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_HALF_INTEGER: return 1; - /* Unsupported features. */ case PIPE_CAP_MIXED_FRAMEBUFFER_SIZES: + return 1; + + /* Unsupported features. */ case PIPE_CAP_ANISOTROPIC_FILTER: case PIPE_CAP_TEXTURE_BUFFER_OBJECTS: case PIPE_CAP_CUBE_MAP_ARRAY: @@ -237,9 +239,12 @@ vc4_screen_get_paramf(struct pipe_screen *pscreen, enum pipe_capf param) switch (param) { case PIPE_CAPF_MAX_LINE_WIDTH: case PIPE_CAPF_MAX_LINE_WIDTH_AA: + return 32; + case PIPE_CAPF_MAX_POINT_WIDTH: case PIPE_CAPF_MAX_POINT_WIDTH_AA: - return 8192.0f; + return 512.0f; + case PIPE_CAPF_MAX_TEXTURE_ANISOTROPY: return 0.0f; case PIPE_CAPF_MAX_TEXTURE_LOD_BIAS: @@ -274,7 +279,10 @@ vc4_screen_get_shader_param(struct pipe_screen *pscreen, unsigned shader, case PIPE_SHADER_CAP_MAX_CONTROL_FLOW_DEPTH: return 0; case PIPE_SHADER_CAP_MAX_INPUTS: - return 16; + if (shader == PIPE_SHADER_FRAGMENT) + return 8; + else + return 16; case PIPE_SHADER_CAP_MAX_TEMPS: return 256; /* GL_MAX_PROGRAM_TEMPORARIES_ARB */ case PIPE_SHADER_CAP_MAX_CONST_BUFFER_SIZE: @@ -325,12 +333,25 @@ vc4_screen_is_format_supported(struct pipe_screen *pscreen, return FALSE; } - if (usage & PIPE_BIND_VERTEX_BUFFER && - (format == PIPE_FORMAT_R32G32B32A32_FLOAT || - format == PIPE_FORMAT_R32G32B32_FLOAT || - format == PIPE_FORMAT_R32G32_FLOAT || - format == PIPE_FORMAT_R32_FLOAT)) { - retval |= PIPE_BIND_VERTEX_BUFFER; + if (usage & PIPE_BIND_VERTEX_BUFFER) { + switch (format) { + case PIPE_FORMAT_R32G32B32A32_FLOAT: + case PIPE_FORMAT_R32G32B32_FLOAT: + case PIPE_FORMAT_R32G32_FLOAT: + case PIPE_FORMAT_R32_FLOAT: + case PIPE_FORMAT_R8G8B8A8_UNORM: + case PIPE_FORMAT_R8G8B8_UNORM: + case PIPE_FORMAT_R8G8_UNORM: + case PIPE_FORMAT_R8_UNORM: + case PIPE_FORMAT_R8G8B8A8_SNORM: + case PIPE_FORMAT_R8G8B8_SNORM: + case PIPE_FORMAT_R8G8_SNORM: + case PIPE_FORMAT_R8_SNORM: + retval |= PIPE_BIND_VERTEX_BUFFER; + break; + default: + break; + } } if ((usage & PIPE_BIND_RENDER_TARGET) &&