Example #1
0
/* Sets the sensor related settings in CCDC registers */
int 
camispcfg_set_ccdc(unsigned char addr, unsigned int val)
{
	unsigned int old_val;
	isp_get();
	switch(addr)
	{
	case GET_ADDRESS(CAM_CCDC_SYNCMODE):
	{
		old_val = omap_readl(ISPCCDC_SYN_MODE);
		old_val &= ~CAM_CCDC_SYNCMODE_MASK;
		val &= CAM_CCDC_SYNCMODE_MASK;
		omap_writel(old_val | val,ISPCCDC_SYN_MODE);
		printk("oldval = 0x%x, val = 0x%x", old_val, val);
		printk(" ccdc sync mode val = 0x%x", omap_readl(ISPCCDC_SYN_MODE));
	}
	break;
	default:
	break;
	};
	isp_put();
	return 0;
}
Example #2
0
/* Sets the sensor related settings in ISPCTRL registers */
int 
camispcfg_set_ispif(unsigned char addr, unsigned int val)
{
	unsigned int old_val;
	isp_get();
	switch(addr)
	{
	case GET_ADDRESS(CAM_ISPIF_CTRL):
	{
		old_val = omap_readl(ISP_CTRL);
		old_val &= ~CAM_ISPIF_CTRL_MASK;
		val &= CAM_ISPIF_CTRL_MASK;
		omap_writel(old_val | val,ISP_CTRL);
		printk("oldval = 0x%x, val = 0x%x", old_val, val);
		printk(" ispctrl val = 0x%x", omap_readl(ISP_CTRL));
	}
	break;
	default:
	break;
	};
	isp_put();
	return 0;
}
Example #3
0
int interp_control() {
    uint32_t opcode = GET_OPCODE(if_id.inst);
    uint32_t address;
    switch (opcode) {

    case OPCODE_R :
        id_ex.reg_write     = true;
        id_ex.reg_dst       = GET_RD(if_id.inst);
        id_ex.rt            = GET_RT(if_id.inst);
        id_ex.rs_value      = regs[GET_RS(if_id.inst)];
        id_ex.rt_value      = regs[id_ex.rt];
        id_ex.funct         = GET_FUNCT(if_id.inst);
        id_ex.shamt         = GET_SHAMT(if_id.inst);
        if (id_ex.funct == FUNCT_JR) {
            id_ex.jump        = true;
            id_ex.jump_target = id_ex.rs_value;
        }
        break;

    case OPCODE_BEQ :
        id_ex.branch        = true;
        id_ex.beq           = true;
        id_ex.rt            = GET_RT(if_id.inst);
        id_ex.rs_value      = regs[GET_RS(if_id.inst)];
        id_ex.rt_value      = regs[id_ex.rt];
        id_ex.sign_ext_imm  = SIGN_EXTEND(GET_IMM(if_id.inst));
        // INSTRUKTOR 0: no reason to updates fields that you dont use
        id_ex.funct         = FUNCT_SUB;
        break;

    case OPCODE_BNE :
        id_ex.branch        = true;
        id_ex.beq           = false;
        id_ex.rt            = GET_RT(if_id.inst);
        id_ex.rs_value      = regs[GET_RS(if_id.inst)];
        id_ex.rt_value      = regs[id_ex.rt];
        id_ex.sign_ext_imm  = SIGN_EXTEND(GET_IMM(if_id.inst));
        id_ex.funct         = FUNCT_SUB;
        break;

    case OPCODE_LW :
        id_ex.mem_read      = true;
        id_ex.reg_write     = true;
        id_ex.alu_src       = true;
        id_ex.mem_to_reg    = true;
        id_ex.reg_dst       = GET_RT(if_id.inst);
        id_ex.rt            = GET_RT(if_id.inst);
        id_ex.rs_value      = regs[GET_RS(if_id.inst)];
        id_ex.rt_value      = regs[id_ex.rt];
        id_ex.sign_ext_imm  = SIGN_EXTEND(GET_IMM(if_id.inst));
        id_ex.funct         = FUNCT_ADD;
        break;

    case OPCODE_SW :
        id_ex.mem_write     = true;
        id_ex.alu_src       = true;
        id_ex.rt            = GET_RT(if_id.inst);
        id_ex.rs_value      = regs[GET_RS(if_id.inst)];
        id_ex.rt_value      = regs[id_ex.rt];
        id_ex.sign_ext_imm  = SIGN_EXTEND(GET_IMM(if_id.inst));
        id_ex.funct         = FUNCT_ADD;
        break;

    case OPCODE_J :
        id_ex.jump          = true;
        address             = GET_ADDRESS(if_id.inst);
        id_ex.jump_target   = (if_id.next_pc & MS_4B) | (address << 2);
        break;

    case OPCODE_JAL :
        id_ex.reg_write     = true;
        id_ex.jump          = true;
        address             = GET_ADDRESS(if_id.inst);
        id_ex.jump_target   = (if_id.next_pc & MS_4B) | (address << 2);
        id_ex.rs_value      = 0;
        id_ex.rt_value      = if_id.next_pc;
        id_ex.reg_dst       = 31;
        id_ex.funct         = FUNCT_ADD;
        break;

    // INSTRUKTOR -2: Make cases for all I-type and J-type instructions
    default:
        printf("ERROR: Unknown opcode in interp_control()\n");
        return ERROR_UNKNOWN_OPCODE;
    }
    return 0;
}
	void qGLExtensions::QueryFeatures(void* dc)
	{
		if( GLVersion > 0 )
			return;

		const char* glversion = (const char*)glGetString(GL_VERSION);
		int major, minor;
		bool isgles = false;

		if( 0 == Q_SSCANF(glversion, "%1d.%2d %*s", &major, &minor) )
		{
			Q_SSCANF(glversion, "OpenGL ES %1d %*s", &major);

			minor = 0;
			isgles = true;
		}

		GLVersion = MAKE_VERSION(major, minor);

#ifdef _Q_WINDOWS
		bool coreprofile = (GLVersion >= GL_3_2);

		if( coreprofile )
			glGetStringi = (GLGETSTRINGIPROC)wglGetProcAddress("glGetStringi");

		if( wglGetExtensionsString && dc )
		{
			HDC hdc = (HDC)dc;

			WGL_EXT_swap_control			= wIsSupported("WGL_EXT_swap_control", hdc);
			WGL_ARB_pixel_format			= wIsSupported("WGL_ARB_pixel_format", hdc);
			WGL_ARB_create_context			= wIsSupported("WGL_ARB_create_context", hdc);
			WGL_ARB_create_context_profile	= wIsSupported("WGL_ARB_create_context_profile", hdc);
		}

		if( WGL_ARB_pixel_format )
		{
			wglGetPixelFormatAttribiv		= (WGLGETPIXELFORMATATTRIBIVARBPROC)wglGetProcAddress("wglGetPixelFormatAttribivARB");
			wglGetPixelFormatAttribfv		= (WGLGETPIXELFORMATATTRIBFVARBPROC)wglGetProcAddress("wglGetPixelFormatAttribfvARB");
			wglChoosePixelFormat			= (WGLCHOOSEPIXELFORMATARBPROC)wglGetProcAddress("wglChoosePixelFormatARB");
		}

		if( WGL_ARB_create_context && WGL_ARB_create_context_profile )
			wglCreateContextAttribs			= (WGLCREATECONTEXTATTRIBSARBPROC)wglGetProcAddress("wglCreateContextAttribsARB");

		if( WGL_EXT_swap_control )
			wglSwapInterval = (PFNWGLSWAPINTERVALFARPROC)wglGetProcAddress("wglSwapIntervalEXT");
#endif
		
#ifndef _Q_TEST_LOW_CONFIG
		if( isgles )
		{
			ARB_vertex_buffer_object		= true;
			ARB_vertex_program				= true;
			ARB_fragment_program			= true;
			ARB_shader_objects				= true;
			
			EXT_framebuffer_object			= true;
			EXT_texture_cube_map			= true;

			IMG_texture_compression_pvrtc	= IsSupported("GL_IMG_texture_compression_pvrtc");
			IMG_user_clip_plane				= IsSupported("GL_IMG_user_clip_plane");
		}
		else if( coreprofile )
		{
			ARB_vertex_buffer_object		= true;
			ARB_vertex_program				= true;
			ARB_fragment_program			= true;
			ARB_shader_objects				= true;
			ARB_texture_float				= true;
			ARB_texture_non_power_of_two	= true;
			ARB_texture_rg					= true;
			ARB_texture_compression			= true;
			ARB_draw_buffers				= true;
			ARB_vertex_array_object			= true;
			
			EXT_framebuffer_object			= true;
			EXT_texture_cube_map			= true;
			EXT_framebuffer_sRGB			= true;
			EXT_texture_sRGB				= true;
			EXT_texture_compression_s3tc	= true;
			EXT_framebuffer_multisample		= true;
			EXT_framebuffer_blit			= true;
			EXT_packed_depth_stencil		= true;

			ARB_debug_output					= IsSupported("GL_ARB_debug_output");
			ARB_geometry_shader4				= IsSupported("GL_ARB_geometry_shader4");
			ARB_tessellation_shader				= IsSupported("GL_ARB_tessellation_shader");
			ARB_compute_shader					= IsSupported("GL_ARB_compute_shader");
			ARB_shader_image_load_store			= IsSupported("GL_ARB_shader_image_load_store");
			ARB_shader_storage_buffer_object	= IsSupported("GL_ARB_shader_storage_buffer_object");
			ARB_shader_atomic_counters			= IsSupported("GL_ARB_shader_atomic_counters");
		}
		else
		{
			ARB_vertex_buffer_object		= IsSupported("GL_ARB_vertex_buffer_object");
			ARB_vertex_program				= IsSupported("GL_ARB_vertex_program");
			ARB_fragment_program			= IsSupported("GL_ARB_fragment_program");
			ARB_shader_objects				= IsSupported("GL_ARB_shader_objects");
			ARB_texture_float				= IsSupported("GL_ARB_texture_float");
			ARB_texture_non_power_of_two	= IsSupported("GL_ARB_texture_non_power_of_two");
			ARB_texture_rg					= IsSupported("GL_ARB_texture_rg");
			ARB_texture_compression			= IsSupported("GL_ARB_texture_compression");
			ARB_draw_buffers				= IsSupported("GL_ARB_draw_buffers");
			ARB_vertex_array_object			= IsSupported("GL_ARB_vertex_array_object");

			EXT_framebuffer_object			= IsSupported("GL_EXT_framebuffer_object");
			EXT_framebuffer_sRGB			= IsSupported("GL_EXT_framebuffer_sRGB");
			EXT_framebuffer_multisample		= IsSupported("GL_EXT_framebuffer_multisample");
			EXT_framebuffer_blit			= IsSupported("GL_EXT_framebuffer_blit");
			EXT_texture_sRGB				= IsSupported("GL_EXT_texture_sRGB");
			EXT_texture_compression_s3tc	= IsSupported("GL_EXT_texture_compression_s3tc");
			EXT_texture_cube_map			= IsSupported("GL_EXT_texture_cube_map");
			EXT_packed_depth_stencil		= IsSupported("GL_EXT_packed_depth_stencil");

			if( !EXT_framebuffer_sRGB )
				EXT_framebuffer_sRGB		= IsSupported("GL_ARB_framebuffer_sRGB");

			if( !EXT_texture_cube_map )
				EXT_texture_cube_map		= IsSupported("GL_ARB_texture_cube_map");
		
			if( !ARB_texture_float )
				ARB_texture_float			= IsSupported("GL_APPLE_float_pixels");
		}
#endif

#if defined(_Q_WINDOWS)
		GET_ADDRESS(glActiveTexture, PFNGLACTIVETEXTUREARBPROC, "glActiveTexture");
		GET_ADDRESS(glClientActiveTexture, PFNGLCLIENTACTIVETEXTUREARBPROC, "glClientActiveTexture");
		GET_ADDRESS(glGenerateMipmap, PFNGLGENERATEMIPMAPEXTPROC, "glGenerateMipmapEXT");
		GET_ADDRESS(glMapBuffer, PFNGLMAPBUFFERARBPROC, "glMapBufferARB");
		GET_ADDRESS(glUnmapBuffer, PFNGLUNMAPBUFFERARBPROC, "glUnmapBufferARB");

		if( ARB_texture_compression )
		{
			GET_ADDRESS(glCompressedTexImage2D, PFNGLCOMPRESSEDTEXIMAGE2DPROC, "glCompressedTexImage2D");
			GET_ADDRESS(glCompressedTexImage1D, PFNGLCOMPRESSEDTEXIMAGE1DPROC, "glCompressedTexImage1D");
		}

		if( ARB_draw_buffers )
			GET_ADDRESS(glDrawBuffers, PFNGLDRAWBUFFERSARBPROC, "glDrawBuffers");

		if( ARB_vertex_array_object )
		{
			GET_ADDRESS(glGenVertexArrays, PFNGLGENVERTEXARRAYSPROC, "glGenVertexArrays");
			GET_ADDRESS(glBindVertexArray, PFNGLBINDVERTEXARRAYPROC, "glBindVertexArray");
			GET_ADDRESS(glDeleteVertexArrays, PFNGLDELETEVERTEXARRAYSPROC, "glDeleteVertexArrays");
		}

		if( ARB_vertex_buffer_object )
		{
			GET_ADDRESS(glGetBufferSubData, PFNGLGETBUFFERSUBDATAARBPROC, "glGetBufferSubData");
			GET_ADDRESS(glDrawRangeElements, PFNGLDRAWRANGEELEMENTSPROC, "glDrawRangeElements");

			GET_ADDRESS(glDeleteBuffers, PFNGLDELETEBUFFERSARBPROC, "glDeleteBuffersARB");
			GET_ADDRESS(glBindBuffer, PFNGLBINDBUFFERARBPROC, "glBindBufferARB");
			GET_ADDRESS(glGenBuffers, PFNGLGENBUFFERSARBPROC, "glGenBuffersARB");
			GET_ADDRESS(glBufferData, PFNGLBUFFERDATAARBPROC, "glBufferDataARB");
			GET_ADDRESS(glBufferSubData, PFNGLBUFFERSUBDATAARBPROC, "glBufferSubDataARB");
		}

		if( EXT_framebuffer_object )
		{
			GET_ADDRESS(glGenFramebuffers, PFNGLGENFRAMEBUFFERSEXTPROC, "glGenFramebuffersEXT");
			GET_ADDRESS(glGenRenderbuffers, PFNGLGENRENDERBUFFERSEXTPROC, "glGenRenderbuffersEXT");
			GET_ADDRESS(glBindFramebuffer, PFNGLBINDFRAMEBUFFEREXTPROC, "glBindFramebufferEXT");
			GET_ADDRESS(glFramebufferTexture2D, PFNGLFRAMEBUFFERTEXTURE2DEXTPROC, "glFramebufferTexture2DEXT");
			GET_ADDRESS(glBindRenderbuffer, PFNGLBINDRENDERBUFFEREXTPROC, "glBindRenderbufferEXT");
			GET_ADDRESS(glRenderbufferStorage, PFNGLRENDERBUFFERSTORAGEEXTPROC, "glRenderbufferStorageEXT");
			GET_ADDRESS(glFramebufferRenderbuffer, PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC, "glFramebufferRenderbufferEXT");
			GET_ADDRESS(glCheckFramebufferStatus, PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC, "glCheckFramebufferStatusEXT");
			GET_ADDRESS(glDeleteFramebuffers, PFNGLDELETEFRAMEBUFFERSEXTPROC, "glDeleteFramebuffersEXT");
			GET_ADDRESS(glDeleteRenderbuffers, PFNGLDELETERENDERBUFFERSEXTPROC, "glDeleteRenderbuffersEXT");
		}

		if( EXT_framebuffer_multisample )
			GET_ADDRESS(glRenderbufferStorageMultisample, PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC, "glRenderbufferStorageMultisampleEXT");

		if( EXT_framebuffer_blit )
			GET_ADDRESS(glBlitFramebuffer, PFNGLBLITFRAMEBUFFEREXTPROC, "glBlitFramebufferEXT");

		if( ARB_shader_objects )
		{
			GET_ADDRESS(glCreateProgram, PFNGLCREATEPROGRAMOBJECTARBPROC, "glCreateProgramObjectARB");
			GET_ADDRESS(glCreateShader, PFNGLCREATESHADEROBJECTARBPROC, "glCreateShaderObjectARB");
			GET_ADDRESS(glShaderSource, PFNGLSHADERSOURCEARBPROC, "glShaderSourceARB");
			GET_ADDRESS(glCompileShader, PFNGLCOMPILESHADERARBPROC, "glCompileShaderARB");
			GET_ADDRESS(glAttachShader, PFNGLATTACHOBJECTARBPROC, "glAttachObjectARB");
			GET_ADDRESS(glDetachShader, PFNGLDETACHOBJECTARBPROC, "glDetachObjectARB");
			GET_ADDRESS(glLinkProgram, PFNGLLINKPROGRAMARBPROC, "glLinkProgramARB");
			GET_ADDRESS(glDeleteProgram, PFNGLDELETEOBJECTARBPROC, "glDeleteObjectARB");
			GET_ADDRESS(glDeleteShader, PFNGLDELETEOBJECTARBPROC, "glDeleteObjectARB");
			GET_ADDRESS(glUseProgram, PFNGLUSEPROGRAMOBJECTARBPROC, "glUseProgramObjectARB");

			GET_ADDRESS(glUniformMatrix2fv, PFNGLUNIFORMMATRIX2FVARBPROC, "glUniformMatrix2fvARB");
			GET_ADDRESS(glUniformMatrix3fv, PFNGLUNIFORMMATRIX3FVARBPROC, "glUniformMatrix3fvARB");
			GET_ADDRESS(glUniformMatrix4fv, PFNGLUNIFORMMATRIX4FVARBPROC, "glUniformMatrix4fvARB");
			GET_ADDRESS(glUniform1i, PFNGLUNIFORM1IARBPROC, "glUniform1iARB");
			GET_ADDRESS(glUniform1f, PFNGLUNIFORM1FARBPROC, "glUniform1fARB");
			GET_ADDRESS(glUniform2f, PFNGLUNIFORM2FARBPROC, "glUniform2fARB");
			GET_ADDRESS(glUniform3f, PFNGLUNIFORM3FARBPROC, "glUniform3fARB");
			GET_ADDRESS(glUniform4f, PFNGLUNIFORM4FARBPROC, "glUniform4fARB");
			GET_ADDRESS(glUniform1fv, PFNGLUNIFORM1FVARBPROC, "glUniform1fvARB");
			GET_ADDRESS(glUniform2fv, PFNGLUNIFORM2FVARBPROC, "glUniform2fvARB");
			GET_ADDRESS(glUniform3fv, PFNGLUNIFORM3FVARBPROC, "glUniform3fvARB");
			GET_ADDRESS(glUniform4fv, PFNGLUNIFORM4FVARBPROC, "glUniform4fvARB");

			GET_ADDRESS(glGetProgramiv, PFNGLGETOBJECTPARAMETERIVARBPROC, "glGetObjectParameterivARB");
			GET_ADDRESS(glGetShaderiv, PFNGLGETOBJECTPARAMETERIVARBPROC, "glGetObjectParameterivARB");
			GET_ADDRESS(glGetActiveUniform, PFNGLGETACTIVEUNIFORMARBPROC, "glGetActiveUniformARB");
			GET_ADDRESS(glGetActiveAttrib, PFNGLGETACTIVEATTRIBPROC, "glGetActiveAttribARB");
			GET_ADDRESS(glGetAttribLocation, PFNGLGETATTRIBLOCATIONPROC, "glGetAttribLocationARB");
			GET_ADDRESS(glGetShaderInfoLog, PFNGLGETINFOLOGARBPROC, "glGetInfoLogARB");
			GET_ADDRESS(glGetProgramInfoLog, PFNGLGETINFOLOGARBPROC, "glGetInfoLogARB");
			GET_ADDRESS(glGetUniformLocation, PFNGLGETUNIFORMLOCATIONARBPROC, "glGetUniformLocationARB");

			GET_ADDRESS(glBindAttribLocation, PFNGLBINDATTRIBLOCATIONARBPROC, "glBindAttribLocationARB");
			GET_ADDRESS(glBindFragDataLocation, PFNGLBINDFRAGDATALOCATIONPROC, "glBindFragDataLocation");

			GET_ADDRESS(glEnableVertexAttribArray, PFNGLENABLEVERTEXATTRIBARRAYARBPROC, "glEnableVertexAttribArrayARB");
			GET_ADDRESS(glDisableVertexAttribArray, PFNGLDISABLEVERTEXATTRIBARRAYARBPROC, "glDisableVertexAttribArrayARB");
			GET_ADDRESS(glVertexAttribPointer, PFNGLVERTEXATTRIBPOINTERARBPROC, "glVertexAttribPointerARB");
		}

		// core profile only
		if( coreprofile )
		{
			GET_ADDRESS(glMapBufferRange, PFNGLMAPBUFFERRANGEPROC, "");
			GET_ADDRESS(glGetIntegeri_v, PFNGLGETINTEGERI_VPROC, "");
			GET_ADDRESS(glGetProgramBinary, PFNGLGETPROGRAMBINARYPROC, "");
		}

		if( ARB_tessellation_shader )
		{
			GET_ADDRESS(glPatchParameteri, PFNGLPATCHPARAMETERIPROC, "");
			GET_ADDRESS(glPatchParameterfv, PFNGLPATCHPARAMETERFVPROC, "");
		}

		if( ARB_compute_shader )
		{
			GET_ADDRESS(glDispatchCompute, PFNGLDISPATCHCOMPUTEPROC, "");
			GET_ADDRESS(glDispatchComputeIndirect, PFNGLDISPATCHCOMPUTEINDIRECTPROC, "");
			GET_ADDRESS(glMemoryBarrier, PFNGLMEMORYBARRIERPROC, "");
		}

		if( ARB_shader_image_load_store )
		{
			GET_ADDRESS(glBindImageTexture, PFNGLBINDIMAGETEXTUREPROC, "");
		}

		if( ARB_shader_storage_buffer_object )
		{
			GET_ADDRESS(glBindBufferBase, PFNGLBINDBUFFERBASEPROC, "");
		}

		if( ARB_debug_output )
		{
			GET_ADDRESS(glDebugMessageControl, PFNGLDEBUGMESSAGECONTROLPROC, "");
			GET_ADDRESS(glDebugMessageCallback, PFNGLDEBUGMESSAGECALLBACKPROC, "");
			GET_ADDRESS(glGetDebugMessageLog, PFNGLGETDEBUGMESSAGELOGPROC, "");
		}
#endif
		
		if( ARB_shader_objects )
		{
			const char* glslversion = (const char*)glGetString(GL_SHADING_LANGUAGE_VERSION);
			int major, minor;
			
			Q_SSCANF(glslversion, "%1d.%2d %*s", &major, &minor);
			GLSLVersion = MAKE_VERSION(major, minor);
		}
		else
			GLSLVersion = 0;
	}