diff --git a/src/cmdstream_fuchsia.h b/src/cmdstream_fuchsia.h
new file mode 100644
index 0000000..d18c9de
--- /dev/null
+++ b/src/cmdstream_fuchsia.h
@@ -0,0 +1,45 @@
+#ifndef H_CMDSTREAM_FUCHSIA
+#define H_CMDSTREAM_FUCHSIA
+
+#include <stdint.h>
+
+struct etna_dev {
+    uint32_t placeholder;
+};
+
+struct etna_cmd_stream {
+    uint32_t placeholder;
+};
+
+struct etna_bo {
+    uint32_t placeholder;
+};
+
+struct drm_test_info {
+    struct etna_dev* dev;
+    struct etna_cmd_stream* stream;
+};
+
+enum {
+    ETNA_RELOC_WRITE = 1,
+    ETNA_RELOC_READ = 2,
+};
+
+enum {
+    DRM_ETNA_GEM_CACHE_UNCACHED = 1,
+};
+
+void etna_set_state(struct etna_cmd_stream *stream, uint32_t address, uint32_t value);
+void etna_set_state_from_bo(struct etna_cmd_stream *stream,
+        uint32_t address, struct etna_bo *bo, uint32_t reloc_flags);
+void etna_stall(struct etna_cmd_stream *stream, uint32_t from, uint32_t to);
+
+struct etna_bo* etna_bo_new(void* dev, uint32_t size, uint32_t flags);
+void* etna_bo_map(struct etna_bo* bo);
+
+void etna_cmd_stream_finish(struct etna_cmd_stream* stream);
+
+struct drm_test_info* drm_test_setup(int argc, char** argv);
+void drm_test_teardown(struct drm_test_info* info);
+
+#endif // H_CMDSTREAM_FUCHSIA
diff --git a/src/etnaviv_cl_test_gc7000.c b/src/etnaviv_cl_test_gc7000.c
new file mode 100644
index 0000000..96ffa12
--- /dev/null
+++ b/src/etnaviv_cl_test_gc7000.c
@@ -0,0 +1,171 @@
+/*
+ * Copyright (C) 2016 Etnaviv Project.
+ * Distributed under the MIT software license, see the accompanying
+ * file COPYING or http://www.opensource.org/licenses/mit-license.php.
+ */
+/* Basic "hello world" test */
+/* Adapted from etnaviv_cl_test_gc3000 for GC7000, Fuchsia */
+
+#ifdef HAVE_CONFIG_H
+#  include "config.h"
+#endif
+
+#include <fcntl.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+
+#if defined(__Fuchsia__)
+#include "cmdstream_fuchsia.h"
+#else
+#include "drm_setup.h"
+#include "cmdstream.h"
+#endif
+
+#include "hw/state.xml.h"
+#include "hw/state_3d.xml.h"
+#include "hw/common.xml.h"
+
+#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]))
+
+uint32_t hello_code[] = {
+/*   0: */ 0x00801000, 0x00000000, 0x00000000, 0x20000008,  /* mov  t0.x___, void, void, u0.xxxx */
+/*   2: */ 0x00801033, 0x00000800, 0x90000050, 0x7400048f,  /* store.s8 mem.x___, t0.xxxx, ?, ? */
+/*   3: */ 0x00801033, 0x00000800, 0x900000d0, 0x7400065f,  /* store.s8 mem.x___, t0.xxxx, ?, ? */
+/*   4: */ 0x00801033, 0x00000c00, 0x90000150, 0x740006cf,  /* store.s8 mem.x___, t0.xxxx, ?, ? */
+/*   5: */ 0x00801033, 0x00000c00, 0x900001d0, 0x740006cf,  /* store.s8 mem.x___, t0.xxxx, ?, ? */
+/*   6: */ 0x00801033, 0x00000c00, 0x90000250, 0x740006ff,  /* store.s8 mem.x___, t0.xxxx, ?, ? */
+/*   7: */ 0x00801033, 0x00000c00, 0x900002d0, 0x740002cf,  /* store.s8 mem.x___, t0.xxxx, ?, ? */
+/*   8: */ 0x00801033, 0x00000c00, 0x90000350, 0x7400020f,  /* store.s8 mem.x___, t0.xxxx, ?, ? */
+/*   9: */ 0x00801033, 0x00000c00, 0x900003d0, 0x7400057f,  /* store.s8 mem.x___, t0.xxxx, ?, ? */
+/*  10: */ 0x00801033, 0x00000c00, 0x90000450, 0x740006ff,  /* store.s8 mem.x___, t0.xxxx, ?, ? */
+/*  11: */ 0x00801033, 0x00000c00, 0x900004d0, 0x7400072f,  /* store.s8 mem.x___, t0.xxxx, ?, ? */
+/*  12: */ 0x00801033, 0x00000c00, 0x90000550, 0x740006cf,  /* store.s8 mem.x___, t0.xxxx, ?, ? */
+/*  13: */ 0x00801033, 0x00000c00, 0x900005d0, 0x7400064f,  /* store.s8 mem.x___, t0.xxxx, ?, ? */
+/*  14: */ 0x00801033, 0x00000c00, 0x90000650, 0x7400021f,  /* store.s8 mem.x___, t0.xxxx, ?, ? */
+/*  15: */ 0x00801033, 0x00000c00, 0x900006d0, 0x7400000f,  /* store.s8 mem.x___, t0.xxxx, ?, ? */
+/*  16: */ 0x00000000, 0x00000000, 0x00000000, 0x00000000,  /* nop  void, void, void, void */
+};
+
+static void gen_cmd_stream(struct etna_cmd_stream *stream, struct etna_bo *code, struct etna_bo *bmp)
+{
+    etna_set_state(stream, VIVS_PA_SYSTEM_MODE, VIVS_PA_SYSTEM_MODE_PROVOKING_VERTEX_LAST | VIVS_PA_SYSTEM_MODE_HALF_PIXEL_CENTER);
+    etna_set_state(stream, VIVS_GL_API_MODE, VIVS_GL_API_MODE_OPENCL);
+    etna_set_state(stream, VIVS_VS_HALTI5_UNK15600, 0x00000002);
+    etna_set_state(stream, VIVS_NTE_DESCRIPTOR_UNK14C40, 0x1);
+    etna_stall(stream, SYNC_RECIPIENT_FE, SYNC_RECIPIENT_PE);
+
+    etna_set_state(stream, VIVS_PS_INPUT_COUNT, VIVS_PS_INPUT_COUNT_COUNT(1) | VIVS_PS_INPUT_COUNT_UNK8(31));
+    etna_set_state(stream, VIVS_PS_TEMP_REGISTER_CONTROL, VIVS_PS_TEMP_REGISTER_CONTROL_NUM_TEMPS(4));
+    etna_set_state(stream, VIVS_VS_OUTPUT_COUNT, 0);
+    etna_set_state(stream, VIVS_CL_UNK00924, 0);
+
+    etna_set_state_from_bo(stream, VIVS_SH_HALTI5_UNIFORMS(0), bmp, ETNA_RELOC_WRITE);
+    etna_set_state(stream, VIVS_SH_HALTI5_UNIFORMS(1), 0x1100);
+
+    etna_set_state(stream, VIVS_PA_HALTI5_UNK00A90(0), VIVS_GL_VARYING_TOTAL_COMPONENTS_NUM(0x0));
+    etna_set_state(stream, VIVS_PS_HALTI5_UNK01080(0), VIVS_GL_VARYING_TOTAL_COMPONENTS_NUM(0x0));
+    etna_set_state(stream, VIVS_PS_TEMP_REGISTER_CONTROL, VIVS_PS_TEMP_REGISTER_CONTROL_NUM_TEMPS(4));
+
+    etna_set_state(stream, VIVS_PS_HALTI5_UNK01058, 0x00000000);
+    etna_set_state(stream, VIVS_PS_UNIFORM_BASE, 0x0);
+    etna_set_state(stream, VIVS_PS_NEWRANGE_LOW, 0);
+    etna_set_state(stream, VIVS_PS_NEWRANGE_HIGH, 0x10);
+
+    etna_set_state_from_bo(stream, VIVS_PS_INST_ADDR, code, ETNA_RELOC_READ);
+
+    etna_set_state(stream, VIVS_VS_HALTI5_UNK15600, 0x00000002);
+    etna_set_state(stream, VIVS_VS_ICACHE_CONTROL, 0x1);
+    etna_set_state(stream, VIVS_PS_HALTI5_UNK01094, 0xF);
+
+    etna_set_state(stream, VIVS_PS_INPUT_COUNT, 0x00001F01);
+    etna_set_state(stream, VIVS_PS_INPUT_COUNT + 0x4, 0x00000008);
+    etna_set_state(stream, VIVS_PS_INPUT_COUNT + 0x8, 0x00000F00);
+
+    etna_set_state(stream, VIVS_VS_HALTI5_UNK008A0, 0);
+    etna_set_state(stream, VIVS_PA_HALTI5_UNK00AA8, 0);
+    etna_set_state(stream, VIVS_PA_ATTRIBUTE_ELEMENT_COUNT, VIVS_PA_ATTRIBUTE_ELEMENT_COUNT_UNK0(0x0) | VIVS_PA_ATTRIBUTE_ELEMENT_COUNT_COUNT(0x0));
+    etna_set_state(stream, VIVS_GL_VARYING_TOTAL_COMPONENTS, VIVS_GL_VARYING_TOTAL_COMPONENTS_NUM(0x0));
+    etna_set_state(stream, VIVS_GL_UNK03834, 0x0);
+    etna_set_state(stream, VIVS_PS_CONTROL_EXT, 0x0);
+    etna_set_state(stream, VIVS_VS_LOAD_BALANCING, 0xF3F0000);
+    etna_set_state(stream, VIVS_VS_OUTPUT_COUNT, 1);
+    etna_set_state(stream, VIVS_GL_HALTI5_UNK03888, 0);
+    etna_set_state(stream, VIVS_PS_UNK01048, 0);
+
+    etna_set_state(stream, VIVS_CL_CONFIG, 0x03000001);
+    etna_set_state(stream, VIVS_CL_UNK00924, 0x00010000);
+    etna_set_state(stream, VIVS_CL_THREAD_ALLOCATION, 0x1);
+    etna_set_state(stream, VIVS_CL_UNK0092C, 0x0);
+    etna_set_state(stream, VIVS_CL_UNK00934, 0x0);
+    etna_set_state(stream, VIVS_CL_UNK0093C, 0x0);
+    etna_set_state(stream, VIVS_CL_HALTI5_UNK00958, 0x1);
+    etna_set_state(stream, VIVS_CL_HALTI5_UNK0095C, 0x1);
+    etna_set_state(stream, VIVS_CL_HALTI5_UNK00960, 0x1);
+
+    etna_set_state(stream, VIVS_CL_UNK00940, 0x00000000);
+    etna_set_state(stream, VIVS_CL_UNK00940 + 0x4, 0xFFFFFFFF);
+    etna_set_state(stream, VIVS_CL_UNK00940 + 0x8, 0xFFFFFFFF);
+    etna_set_state(stream, VIVS_CL_UNK00940 + 0xC, 0x00000000);
+    etna_set_state(stream, VIVS_CL_UNK00940 + 0x10, 0x000003FF);
+    etna_set_state(stream, VIVS_CL_UNK00940 + 0x14, 0x000003FF);
+
+    etna_set_state(stream, VIVS_CL_KICKER, 0xbadabeeb);
+    etna_set_state(stream, VIVS_GL_FLUSH_CACHE, VIVS_GL_FLUSH_CACHE_TEXTURE | VIVS_GL_FLUSH_CACHE_SHADER_L1);
+
+    etna_stall(stream, SYNC_RECIPIENT_FE, SYNC_RECIPIENT_PE);
+
+    etna_set_state(stream, VIVS_GL_FLUSH_CACHE, VIVS_GL_FLUSH_CACHE_DEPTH | VIVS_GL_FLUSH_CACHE_COLOR);
+}
+
+#if defined(__Fuchsia__)
+int etnaviv_cl_test_gc7000(int argc, char *argv[])
+#else
+int main(int argc, char *argv[])
+#endif
+{
+    struct drm_test_info *info;
+    struct etna_bo *bmp, *code;
+    static const size_t out_size = 65536;
+    static const size_t code_size = 4096;
+    if ((info = drm_test_setup(argc, argv)) == NULL) {
+        return 1;
+    }
+
+    code = etna_bo_new(info->dev, code_size, DRM_ETNA_GEM_CACHE_UNCACHED);
+    if (!code) {
+        fprintf(stderr, "Unable to allocate buffer\n");
+        goto out;
+    }
+    memcpy(etna_bo_map(code), hello_code, sizeof(hello_code));
+
+    bmp = etna_bo_new(info->dev, out_size, DRM_ETNA_GEM_CACHE_UNCACHED);
+    if (!bmp) {
+        fprintf(stderr, "Unable to allocate buffer\n");
+        goto out;
+    }
+    memset(etna_bo_map(bmp), 0xFF, out_size);
+
+    /* generate command sequence */
+    gen_cmd_stream(info->stream, code, bmp);
+
+    etna_cmd_stream_finish(info->stream);
+
+    const unsigned char *data = etna_bo_map(bmp);
+
+    const char kHelloWorld[] = "Hello, World!";
+    if (strncmp((char*)data, kHelloWorld, sizeof(kHelloWorld)) == 0) {
+        drm_test_teardown(info);
+        return 0;
+    }
+
+    printf("Unexpected result:\n");
+    for(int i=0; i<0x100; ++i) {
+        printf("%02x ", data[i]);
+    }
+    printf("\n");
+
+out:
+    drm_test_teardown(info);
+    return 1;
+}
diff --git a/src/hw/state_3d.xml.h b/src/hw/state_3d.xml.h
index 887033f..3082538 100644
--- a/src/hw/state_3d.xml.h
+++ b/src/hw/state_3d.xml.h
@@ -351,6 +351,12 @@
 
 #define VIVS_CL_UNK00924					0x00000924
 
+#define VIVS_CL_UNK0092C					0x0000092C
+
+#define VIVS_CL_UNK00934					0x00000934
+
+#define VIVS_CL_UNK0093C					0x0000093C
+
 #define VIVS_CL_UNK00940					0x00000940
 
 #define VIVS_CL_UNK00944					0x00000944
