#include "util/u_cpu_detect.h"
#include "util/u_debug.h"
#include "util/u_memory.h"
-#include "util/u_format.h"
+#include "util/format/u_format.h"
#include "util/u_hash_table.h"
#include "util/u_screen.h"
+#include "util/u_transfer_helper.h"
#include "util/ralloc.h"
#include <xf86drm.h>
-#include "drm_fourcc.h"
-#include "vc4_drm.h"
+#include "drm-uapi/drm_fourcc.h"
+#include "drm-uapi/vc4_drm.h"
#include "vc4_screen.h"
#include "vc4_context.h"
#include "vc4_resource.h"
vc4_simulator_destroy(screen);
#endif
+ u_transfer_helper_destroy(pscreen->transfer_helper);
+
close(screen->fd);
ralloc_free(pscreen);
}
case PIPE_CAP_TGSI_FS_COORD_ORIGIN_UPPER_LEFT:
case PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_HALF_INTEGER:
+ case PIPE_CAP_TGSI_FS_FACE_IS_INTEGER_SYSVAL:
return 1;
case PIPE_CAP_MIXED_FRAMEBUFFER_SIZES:
return 1;
/* Texturing. */
- case PIPE_CAP_MAX_TEXTURE_2D_LEVELS:
+ case PIPE_CAP_MAX_TEXTURE_2D_SIZE:
+ return 2048;
case PIPE_CAP_MAX_TEXTURE_CUBE_LEVELS:
return VC4_MAX_MIP_LEVELS;
case PIPE_CAP_MAX_TEXTURE_3D_LEVELS:
/* Note: Not supported in hardware, just faking it. */
return 5;
+ case PIPE_CAP_MAX_VARYINGS:
+ return 8;
+
case PIPE_CAP_VENDOR_ID:
return 0x14E4;
case PIPE_CAP_ACCELERATED:
case PIPE_SHADER_CAP_MAX_HW_ATOMIC_COUNTERS:
case PIPE_SHADER_CAP_MAX_HW_ATOMIC_COUNTER_BUFFERS:
return 0;
- case PIPE_SHADER_CAP_SCALAR_ISA:
- return 1;
default:
fprintf(stderr, "unknown shader param %d\n", param);
return 0;
return 0;
}
-static boolean
+static bool
vc4_screen_is_format_supported(struct pipe_screen *pscreen,
enum pipe_format format,
enum pipe_texture_target target,
return false;
if (sample_count > 1 && sample_count != VC4_MAX_SAMPLES)
- return FALSE;
+ return false;
if (target >= PIPE_MAX_TEXTURE_TYPES) {
- return FALSE;
+ return false;
}
if (usage & PIPE_BIND_VERTEX_BUFFER) {
case PIPE_FORMAT_R8_SSCALED:
break;
default:
- return FALSE;
+ return false;
}
}
if ((usage & PIPE_BIND_RENDER_TARGET) &&
!vc4_rt_format_supported(format)) {
- return FALSE;
+ return false;
}
if ((usage & PIPE_BIND_SAMPLER_VIEW) &&
(!vc4_tex_format_supported(format) ||
(format == PIPE_FORMAT_ETC1_RGB8 && !screen->has_etc1))) {
- return FALSE;
+ return false;
}
if ((usage & PIPE_BIND_DEPTH_STENCIL) &&
format != PIPE_FORMAT_S8_UINT_Z24_UNORM &&
format != PIPE_FORMAT_X8Z24_UNORM) {
- return FALSE;
+ return false;
}
if ((usage & PIPE_BIND_INDEX_BUFFER) &&
format != PIPE_FORMAT_I8_UINT &&
format != PIPE_FORMAT_I16_UINT) {
- return FALSE;
+ return false;
}
- return TRUE;
+ return true;
}
static void