#include "util/u_screen.h"
#include "util/u_transfer_helper.h"
#include "util/ralloc.h"
+#include "util/xmlconfig.h"
#include <xf86drm.h>
#include "v3d_screen.h"
case PIPE_CAP_VERTEX_ELEMENT_INSTANCE_DIVISOR:
case PIPE_CAP_START_INSTANCE:
case PIPE_CAP_TGSI_INSTANCEID:
- case PIPE_CAP_SM3:
+ case PIPE_CAP_FRAGMENT_SHADER_TEXTURE_LOD:
+ case PIPE_CAP_FRAGMENT_SHADER_DERIVATIVES:
+ case PIPE_CAP_VERTEX_SHADER_SATURATE:
case PIPE_CAP_TEXTURE_QUERY_LOD:
case PIPE_CAP_PRIMITIVE_RESTART:
case PIPE_CAP_OCCLUSION_QUERY:
case PIPE_CAP_MAX_TEXTURE_2D_SIZE:
if (screen->devinfo.ver < 40)
return 2048;
+ else if (screen->nonmsaa_texture_size_limit)
+ return 7680;
else
return 4096;
case PIPE_CAP_MAX_TEXTURE_CUBE_LEVELS:
}
struct pipe_screen *
-v3d_screen_create(int fd, struct renderonly *ro)
+v3d_screen_create(int fd, const struct pipe_screen_config *config,
+ struct renderonly *ro)
{
struct v3d_screen *screen = rzalloc(NULL, struct v3d_screen);
struct pipe_screen *pscreen;
if (!v3d_get_device_info(screen))
goto fail;
+ /* We have to driCheckOption for the simulator mode to not assertion
+ * fail on not having our XML config.
+ */
+ const char *nonmsaa_name = "v3d_nonmsaa_texture_size_limit";
+ screen->nonmsaa_texture_size_limit =
+ driCheckOption(config->options, nonmsaa_name, DRI_BOOL) &&
+ driQueryOptionb(config->options, nonmsaa_name);
+
slab_create_parent(&screen->transfer_pool, sizeof(struct v3d_transfer), 16);
screen->has_csd = false; /* until the UABI is enabled. */