#include "ir3/ir3_nir.h"
#include "a2xx/ir2.h"
-/* XXX this should go away */
-#include "state_tracker/drm_driver.h"
-
static const struct debug_named_value debug_options[] = {
{"msgs", FD_DBG_MSGS, "Print debug messages"},
{"disasm", FD_DBG_DISASM, "Dump TGSI and adreno shader disassembly (a2xx only, see IR3_SHADER_DEBUG)"},
{"noscis", FD_DBG_NOSCIS, "Disable scissor optimization"},
{"direct", FD_DBG_DIRECT, "Force inline (SS_DIRECT) state loads"},
{"nobypass", FD_DBG_NOBYPASS, "Disable GMEM bypass"},
- {"fraghalf", FD_DBG_FRAGHALF, "Use half-precision in fragment shader"},
+ {"log", FD_DBG_LOG, "Enable GPU timestamp based logging (a6xx+)"},
{"nobin", FD_DBG_NOBIN, "Disable hw binning"},
{"nogmem", FD_DBG_NOGMEM, "Disable GMEM rendering (bypass only)"},
- {"glsl120", FD_DBG_GLSL120,"Temporary flag to force GLSL 1.20 (rather than 1.30) on a3xx+"},
+ /* BIT(10) */
{"shaderdb", FD_DBG_SHADERDB, "Enable shaderdb output"},
{"flush", FD_DBG_FLUSH, "Force flush after every draw"},
{"deqp", FD_DBG_DEQP, "Enable dEQP hacks"},
int fd_mesa_debug = 0;
bool fd_binning_enabled = true;
-static bool glsl120 = false;
static const char *
fd_screen_get_name(struct pipe_screen *pscreen)
case PIPE_CAP_GLSL_FEATURE_LEVEL:
case PIPE_CAP_GLSL_FEATURE_LEVEL_COMPATIBILITY:
- if (glsl120)
- return 120;
return is_ir3(screen) ? 140 : 120;
case PIPE_CAP_ESSL_FEATURE_LEVEL:
case PIPE_SHADER_CAP_TGSI_SQRT_SUPPORTED:
return 1;
case PIPE_SHADER_CAP_INTEGERS:
- if (glsl120)
- return 0;
return is_ir3(screen) ? 1 : 0;
case PIPE_SHADER_CAP_INT64_ATOMICS:
return 0;
case PIPE_SHADER_CAP_FP16:
return ((is_a5xx(screen) || is_a6xx(screen)) &&
+ (shader == PIPE_SHADER_COMPUTE ||
+ shader == PIPE_SHADER_FRAGMENT) &&
!(fd_mesa_debug & FD_DBG_NOFP16));
case PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS:
case PIPE_SHADER_CAP_MAX_SAMPLER_VIEWS:
if (fd_mesa_debug & FD_DBG_NOBIN)
fd_binning_enabled = false;
- glsl120 = !!(fd_mesa_debug & FD_DBG_GLSL120);
-
if (!screen)
return NULL;
fd_bc_init(&screen->batch_cache);
+ list_inithead(&screen->context_list);
+
(void) mtx_init(&screen->lock, mtx_plain);
pscreen->destroy = fd_screen_destroy;