From: Hyunjong,park Date: Mon, 26 May 2014 00:29:06 +0000 (+0900) Subject: Opengl : implement the functionality of multi context sharing, and get event from... X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b4fdacd741d0720fa643a29225fe9dcc5f7f44d9;p=sdk%2Ftools%2Fdynamic-analyzer.git Opengl : implement the functionality of multi context sharing, and get event from summay page, and print the contents to download the file on the device, and filtering by process Signed-off-by: Hyunjong,park Change-Id: I7e69937a46654d91b85db85c4347046a7342474e --- diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/data/GLES20LogData.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/data/GLES20LogData.java index 68accde..26fff64 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/data/GLES20LogData.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/data/GLES20LogData.java @@ -68,6 +68,7 @@ public class GLES20LogData extends ProbeCommonData { prep.setInt(index++, apiType); prep.setLong(index++, elapsedTime); prep.setString(index++, contextValue); + } @Override @@ -79,6 +80,3 @@ public class GLES20LogData extends ProbeCommonData { contextValue = rs.getString(index++); } } - - - diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/GLDetailsView.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/GLDetailsView.java index 6bf2b7b..8447b47 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/GLDetailsView.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/GLDetailsView.java @@ -53,6 +53,7 @@ import org.tizen.dynamicanalyzer.ui.opengl.data.type.GLFrameType; import org.tizen.dynamicanalyzer.ui.opengl.data.type.GLSelectionData; import org.tizen.dynamicanalyzer.ui.opengl.data.type.GLStateShaderType; import org.tizen.dynamicanalyzer.ui.widgets.table.DATableDataFormat; +import org.tizen.dynamicanalyzer.utils.DownloadContentfileManager; import org.tizen.dynamicanalyzer.widgets.da.view.DAViewComposite; import org.tizen.dynamicanalyzer.widgets.da.view.DAViewData; @@ -110,7 +111,6 @@ public class GLDetailsView extends DAViewComposite { @Override public void updateView(DAViewData vdata) { - if (vdata instanceof GLSelectionData) { GLSelectionData data = (GLSelectionData) vdata; String id = vdata.getViewID(); @@ -125,7 +125,6 @@ public class GLDetailsView extends DAViewComposite { updateProgramTableInfo(data); } } - } @Override @@ -203,6 +202,11 @@ public class GLDetailsView extends DAViewComposite { return; } + String contextId = items[0].getText(0); + if (contextId.contains(GLPageLabels.GL_CONTEXT)) { + contextId = contextId.replace(GLPageLabels.GL_CONTEXT, + CommonConstants.EMPTY); + } String vertexShaderID = items[0].getText(2) .replace(GLPageLabels.GL_SHADER, CommonConstants.EMPTY).trim(); String fragmentID = items[0].getText(3) @@ -212,13 +216,17 @@ public class GLDetailsView extends DAViewComposite { String fragmentSrc = CommonConstants.EMPTY; List shaderList = GLDataManager.getInstance() - .getStateDataMagerInstance().getShaderList(); + .getStateDataMake().getShaderList(); for (int i = 0; i < shaderList.size(); i++) { - if (shaderList.get(i).getId() == Integer.parseInt(vertexShaderID)) { - vertexSrc = shaderList.get(i).getShaderSrc(); + if (shaderList.get(i).getContextId() == Long.parseLong(contextId) + && shaderList.get(i).getId() == Integer + .parseInt(vertexShaderID)) { + vertexSrc = DownloadContentfileManager + .getFileContents(shaderList.get(i).getShaderSrc()); } else if (shaderList.get(i).getId() == Integer .parseInt(fragmentID)) { - fragmentSrc = shaderList.get(i).getShaderSrc(); + fragmentSrc = DownloadContentfileManager + .getFileContents(shaderList.get(i).getShaderSrc()); } } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/chart/GLChartView.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/chart/GLChartView.java index 8866b77..f877f27 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/chart/GLChartView.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/chart/GLChartView.java @@ -31,17 +31,20 @@ import org.eclipse.swt.SWT; import org.eclipse.swt.custom.StackLayout; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.widgets.Composite; +import org.tizen.dynamicanalyzer.common.DASelectionData; import org.tizen.dynamicanalyzer.nl.GLPageLabels; import org.tizen.dynamicanalyzer.nl.ThreadPageLabels; import org.tizen.dynamicanalyzer.resources.ColorResources; import org.tizen.dynamicanalyzer.resources.FontResources; import org.tizen.dynamicanalyzer.resources.ImageResources; +import org.tizen.dynamicanalyzer.swap.model.data.LogData; import org.tizen.dynamicanalyzer.ui.common.SetRangeMarkerMouseMoveListener; import org.tizen.dynamicanalyzer.ui.common.UICommonConstants; import org.tizen.dynamicanalyzer.ui.opengl.GLPage; import org.tizen.dynamicanalyzer.ui.opengl.data.GLDataManager; import org.tizen.dynamicanalyzer.ui.opengl.data.type.GLSelectionData; import org.tizen.dynamicanalyzer.ui.range.RangeDataManager; +import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineConstants; import org.tizen.dynamicanalyzer.ui.timeline.logparser.LifecycleLogParser; import org.tizen.dynamicanalyzer.ui.widgets.TitleComboPopupRenderer; import org.tizen.dynamicanalyzer.widgets.button.DACustomButtonRenderer; @@ -274,6 +277,27 @@ public class GLChartView extends DAViewComposite { frameRateChartBoard.updateViewFromDBData(); } } + } else if (vdata instanceof DASelectionData) { + DASelectionData selData = (DASelectionData) vdata; + if (selData.isLogData()) { + Object obData = selData.getData(); + if (null != obData && (obData instanceof LogData)) { // summary + LogData ldata = (LogData) obData; + long dataTime = ldata.getTime(); + double selectionTime = dataTime + / TimelineConstants.MEGA_DOUBLE; + if (selectionTime <= 1) { + selectionTime = GLDataManager.getInstance() + .getStartFrameRateTime(); + } + frameRateChartBoard.setVisibleMiddleTime(selectionTime); + DAChartPlotIntervalMarker intervalMarker = (DAChartPlotIntervalMarker) frameRateChartBoard + .getMarkers().get( + UICommonConstants.SELECTION_MARKER_INDEX); + intervalMarker.setInterval(selectionTime, selectionTime); + frameRateChartBoard.updateViewFromDBData(); + } + } } } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/GLAPIDBTableManager.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/GLAPIDBTableManager.java index 6f831d9..e4e5581 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/GLAPIDBTableManager.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/GLAPIDBTableManager.java @@ -25,14 +25,11 @@ */ package org.tizen.dynamicanalyzer.ui.opengl.data; -import java.io.File; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; -import org.tizen.dynamicanalyzer.common.AnalyzerConstants; -import org.tizen.dynamicanalyzer.common.AnalyzerManager; import org.tizen.dynamicanalyzer.constant.CommonConstants; import org.tizen.dynamicanalyzer.database.DBColumn; import org.tizen.dynamicanalyzer.database.DBConstants; @@ -158,12 +155,6 @@ public class GLAPIDBTableManager extends DBTable { } public GLFrameType selectOpenGLAPIData(int frameIndex) { - if (null != AnalyzerManager.getProject()) { - SqlConnectionManager.establishConnection(AnalyzerManager - .getProject().getSavePath() - + File.separator - + AnalyzerConstants.DATABASE_NAME); - } String query = String.format( SELECT_API_TABLE_QUERY_FROM_FRAME_TIME_CHART, frameIndex); List> result = SqlConnectionManager.executeQuery(query); @@ -179,12 +170,6 @@ public class GLAPIDBTableManager extends DBTable { public List> selectOpenGLAPIData(int frameStartIndex, int frameEndIndex) { - if (null != AnalyzerManager.getProject()) { - SqlConnectionManager.establishConnection(AnalyzerManager - .getProject().getSavePath() - + File.separator - + AnalyzerConstants.DATABASE_NAME); - } String query = String.format( SELECT_API_TABLE_QUERY_FROM_FRAME_RATE_CHART, frameStartIndex, frameEndIndex); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/GLDataManager.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/GLDataManager.java index 2c2dd9e..70a2dce 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/GLDataManager.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/GLDataManager.java @@ -40,14 +40,17 @@ import org.tizen.dynamicanalyzer.swap.model.data.LogData; import org.tizen.dynamicanalyzer.ui.opengl.data.type.FrameCountInfoType; import org.tizen.dynamicanalyzer.ui.opengl.data.type.GLAPINameDefine; import org.tizen.dynamicanalyzer.ui.opengl.data.type.GLAPIType; +import org.tizen.dynamicanalyzer.ui.opengl.data.type.GLES20ErrorDefine; import org.tizen.dynamicanalyzer.ui.opengl.data.type.GLFrameType; +import org.tizen.dynamicanalyzer.ui.opengl.data.type.GLSharingContextType; +import org.tizen.dynamicanalyzer.ui.summary.failed.FailedData; import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineConstants; import org.tizen.dynamicanalyzer.util.DALogger; public class GLDataManager extends PageDataManager { private static final DALogger DA_LOG = DALogger.getInstance(); private static GLDataManager instance = null; - private GLStateDataMaker GLStateDataMagerInstance = null; + private GLStateDataMaker GLStateDataMaker = null; private GLFrameType glFrameData = null; private List frameInfoList; @@ -62,9 +65,12 @@ public class GLDataManager extends PageDataManager { private GLStateProgramDBTableManager stateProgramDBTable = null; private GLStateHistoryDBTableManager stateHistoryDBTable = null; private GLStateTextureDBTableManager stateTextureDBTable = null; + private GLStateSharingDBTableManager stateSharingDBTable = null; private boolean isShowFrameRateChart = true; + List sharingContextList = null; + public static GLDataManager getInstance() { if (instance == null) { instance = new GLDataManager(); @@ -77,7 +83,7 @@ public class GLDataManager extends PageDataManager { currentFrameTimeIndex = 1; glFrameData = new GLFrameType(currentFrameTimeIndex); frameInfoList = new ArrayList(); - GLStateDataMagerInstance = new GLStateDataMaker(); + GLStateDataMaker = new GLStateDataMaker(); apiDBTable = new GLAPIDBTableManager(); addDBTable(apiDBTable); frameRateDBTable = new GLFrameRateDBTableManager(); @@ -92,13 +98,16 @@ public class GLDataManager extends PageDataManager { addDBTable(stateHistoryDBTable); stateTextureDBTable = new GLStateTextureDBTableManager(); addDBTable(stateTextureDBTable); + stateSharingDBTable = new GLStateSharingDBTableManager(); + addDBTable(stateSharingDBTable); } public void clear() { currentFrameTimeIndex = 1; glFrameData = new GLFrameType(currentFrameTimeIndex); frameInfoList = new ArrayList(); - GLStateDataMagerInstance.clear(); + GLStateDataMaker.clear(); + sharingContextList = new ArrayList(); } public void openProcess() { @@ -155,13 +164,24 @@ public class GLDataManager extends PageDataManager { if (currentFrameTimeIndex == 1) { frameRateIndex = 1; } - GLStateDataMagerInstance.addGLAPIData(logData, frameRateIndex, + GLStateDataMaker.addGLAPIData(logData, frameRateIndex, currentFrameTimeIndex); + + checkFailedAPI(logData); + } frameTimeDBTable.insertData(insetFrameTimeChartDataList); } + private void checkFailedAPI(GLES20LogData logData) { + if (logData.getErrno() != GLES20ErrorDefine.EGL_SUCCESS + && logData.getErrno() != GLES20ErrorDefine.GL_SUCCESS) { + FailedData ffd = new FailedData(logData); + AnalyzerManager.getFailedChecker().getFailedList().add(ffd); + } + } + private void makeFrameRateChartDataList(GLES20LogData logData) { int time = getTimeLieTime(logData); for (FrameCountInfoType data : frameInfoList) { @@ -175,6 +195,7 @@ public class GLDataManager extends PageDataManager { frameRateData.setTime(time); frameRateData.setStartFrameIndex(currentFrameTimeIndex); frameRateData.setErrno(glFrameData.hasError()); + frameRateData.setPid(logData.getPid()); frameRateData.addFrameCount(); frameInfoList.add(frameRateData); } @@ -189,6 +210,7 @@ public class GLDataManager extends PageDataManager { framRateChartData.add(data.getFrameCount() - 1); framRateChartData.add(data.getStartFrameIndex()); framRateChartData.add(data.hasErrno()); + framRateChartData.add(data.getPid()); insetData.add(framRateChartData); removeframeInfoList.add(data); @@ -210,6 +232,7 @@ public class GLDataManager extends PageDataManager { framRateChartData.add(data.getFrameCount()); framRateChartData.add(data.getStartFrameIndex()); framRateChartData.add(data.hasErrno()); + framRateChartData.add(data.getPid()); insetData.add(framRateChartData); removeframeInfoList.add(data); } @@ -231,6 +254,7 @@ public class GLDataManager extends PageDataManager { framTimeChartData.add(glFrameData.hasError()); framTimeChartData.add(glFrameData.getStartSeq()); framTimeChartData.add(glFrameData.getEndSeq()); + framTimeChartData.add(logData.getPid()); return framTimeChartData; } @@ -279,8 +303,8 @@ public class GLDataManager extends PageDataManager { return apiDBTable; } - public GLStateDataMaker getStateDataMagerInstance() { - return GLStateDataMagerInstance; + public GLStateDataMaker getStateDataMake() { + return GLStateDataMaker; } public GLFrameRateDBTableManager getFrameRateDBTableManager() { @@ -307,6 +331,10 @@ public class GLDataManager extends PageDataManager { return stateTextureDBTable; } + public GLStateSharingDBTableManager getStateSharingDBTableManage() { + return stateSharingDBTable; + } + public boolean isShowFrameRateChart() { return isShowFrameRateChart; } @@ -322,4 +350,25 @@ public class GLDataManager extends PageDataManager { public void setStartFrameRateTime(int startFrameRateTime) { this.startFrameRateTime = startFrameRateTime; } + + public void updateSharingContextList() { + this.sharingContextList = GLDataManager.getInstance() + .getStateSharingDBTableManage().selectSharingData(); + } + + public boolean isSharingData(long itemContextId) { + if (null == sharingContextList) { + return false; + } + for (int i = 0; i < sharingContextList.size(); i++) { + long contextId = sharingContextList.get(i).getContextId(); + long sharingContextId = sharingContextList.get(i) + .getSharingContextId(); + if (contextId == GLDataManager.getInstance().getSelectedContextID() + && sharingContextId == itemContextId) { + return true; + } + } + return false; + } } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/GLFrameRateDBTableManager.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/GLFrameRateDBTableManager.java index 3fc5d1f..aa4e194 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/GLFrameRateDBTableManager.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/GLFrameRateDBTableManager.java @@ -25,19 +25,17 @@ */ package org.tizen.dynamicanalyzer.ui.opengl.data; -import java.io.File; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.List; -import org.tizen.dynamicanalyzer.common.AnalyzerConstants; -import org.tizen.dynamicanalyzer.common.AnalyzerManager; import org.tizen.dynamicanalyzer.constant.CommonConstants; import org.tizen.dynamicanalyzer.database.DBColumn; import org.tizen.dynamicanalyzer.database.DBConstants; import org.tizen.dynamicanalyzer.database.DBTable; import org.tizen.dynamicanalyzer.database.SqlConnectionManager; import org.tizen.dynamicanalyzer.ui.opengl.data.type.FrameCountInfoType; +import org.tizen.dynamicanalyzer.ui.toolbar.ToolbarArea; public class GLFrameRateDBTableManager extends DBTable { private static final String TABLENAME = "GL_FRAME_RATE";//$NON-NLS-1$ @@ -46,21 +44,32 @@ public class GLFrameRateDBTableManager extends DBTable { public static final String FRAME_COUNT = "FRAME_COUNT";//$NON-NLS-1$ public static final String FRAME_INDEX = "FRAME_INDEX";//$NON-NLS-1$ public static final String ERROR_INFO = "ERROR_INFO";//$NON-NLS-1$ + public static final String PID = DBConstants.COMMON_COLUMN_PID; public final static int TABLE_CHART_TIME_INDEX = 0; public final static int TABLE_FRAME_COUNT_INDEX = 1; public final static int TABLE_FRAME_INDEX_INDEX = 2; public final static int TABLE_ERROR_INFO_INDEX = 3; + public final static int TABLE_PID_INDEX = 4; private static final String SELECT_FRAME_RATE_TABLE_QUERY = "select "//$NON-NLS-1$ + CHART_TIME + CommonConstants.COMMA + FRAME_COUNT + CommonConstants.COMMA + FRAME_INDEX + CommonConstants.COMMA - + ERROR_INFO + " from "//$NON-NLS-1$ + + ERROR_INFO + CommonConstants.COMMA + PID + " from "//$NON-NLS-1$ + TABLENAME + " where '%s' <= " + CHART_TIME + " and " + CHART_TIME//$NON-NLS-1$ //$NON-NLS-2$ + " <= '%s'";//$NON-NLS-1$ + private static final String SELECT_PID_FRAME_RATE_TABLE_QUERY = "select "//$NON-NLS-1$ + + CHART_TIME + CommonConstants.COMMA + + FRAME_COUNT + + CommonConstants.COMMA + FRAME_INDEX + + CommonConstants.COMMA + + ERROR_INFO + CommonConstants.COMMA + PID + " from "//$NON-NLS-1$ + + TABLENAME + " where '%s' <= " + CHART_TIME + " and " + CHART_TIME//$NON-NLS-1$ //$NON-NLS-2$ + + " <= '%s' and " + PID + " = '%s'";//$NON-NLS-1$ + @Override public String getTableName() { return TABLENAME; @@ -75,6 +84,7 @@ public class GLFrameRateDBTableManager extends DBTable { DBConstants.INTEGER)); addColumn(new DBColumn(ERROR_INFO, DBConstants.NOT_NULL, DBConstants.INTEGER)); + addColumn(new DBColumn(PID, DBConstants.NOT_NULL, DBConstants.INTEGER)); } public final void insert(List> data) { @@ -82,12 +92,6 @@ public class GLFrameRateDBTableManager extends DBTable { } public FrameCountInfoType selectFrameCountInfo(int startIndex, int endIndex) { - if (null != AnalyzerManager.getProject()) { - SqlConnectionManager.establishConnection(AnalyzerManager - .getProject().getSavePath() - + File.separator - + AnalyzerConstants.DATABASE_NAME); - } String query = String.format(SELECT_FRAME_RATE_TABLE_QUERY, startIndex, endIndex); List> result = SqlConnectionManager.executeQuery(query); @@ -115,20 +119,13 @@ public class GLFrameRateDBTableManager extends DBTable { } public List> selectFrameRate(double startIndex, double endIndex) { - if (null != AnalyzerManager.getProject()) { - SqlConnectionManager.establishConnection(AnalyzerManager - .getProject().getSavePath() - + File.separator - + AnalyzerConstants.DATABASE_NAME); - } - if (null != AnalyzerManager.getProject()) { - SqlConnectionManager.establishConnection(AnalyzerManager - .getProject().getSavePath() - + File.separator - + AnalyzerConstants.DATABASE_NAME); - } String query = String.format(SELECT_FRAME_RATE_TABLE_QUERY, startIndex, endIndex); + if (ToolbarArea.getInstance().getSelectedPid() != 0) { + query = String.format(SELECT_PID_FRAME_RATE_TABLE_QUERY, + startIndex, endIndex, ToolbarArea.getInstance() + .getSelectedPid()); + } return SqlConnectionManager.executeQuery(query); } @@ -149,6 +146,8 @@ public class GLFrameRateDBTableManager extends DBTable { (Integer) (rowData.get(TABLE_FRAME_INDEX_INDEX))); prep.setInt(TABLE_ERROR_INFO_INDEX + 1, (Integer) (rowData.get(TABLE_ERROR_INFO_INDEX))); + prep.setInt(TABLE_PID_INDEX + 1, + (Integer) (rowData.get(TABLE_PID_INDEX))); } catch (SQLException e) { e.printStackTrace(); isPrepared = false; diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/GLFrameTimeDBTableManager.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/GLFrameTimeDBTableManager.java index b33b21d..476f42e 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/GLFrameTimeDBTableManager.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/GLFrameTimeDBTableManager.java @@ -25,18 +25,16 @@ */ package org.tizen.dynamicanalyzer.ui.opengl.data; -import java.io.File; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.List; -import org.tizen.dynamicanalyzer.common.AnalyzerConstants; -import org.tizen.dynamicanalyzer.common.AnalyzerManager; import org.tizen.dynamicanalyzer.constant.CommonConstants; import org.tizen.dynamicanalyzer.database.DBColumn; import org.tizen.dynamicanalyzer.database.DBConstants; import org.tizen.dynamicanalyzer.database.DBTable; import org.tizen.dynamicanalyzer.database.SqlConnectionManager; +import org.tizen.dynamicanalyzer.ui.toolbar.ToolbarArea; public class GLFrameTimeDBTableManager extends DBTable { private static final String TABLENAME = "GL_FRAME_TIME";//$NON-NLS-1$ @@ -47,6 +45,7 @@ public class GLFrameTimeDBTableManager extends DBTable { public static final String ERROR_INFO = "ERROR_INFO";//$NON-NLS-1$ public static final String START_SEQ = "START_SEQ";//$NON-NLS-1$ public static final String END_SEQ = "END_SEQ";//$NON-NLS-1$ + public static final String PID = DBConstants.COMMON_COLUMN_PID; public final static int TABLE_CHART_TIME_INDEX = 0; public final static int TABLE_FRAME_RATE_INDEX = 1; @@ -54,16 +53,14 @@ public class GLFrameTimeDBTableManager extends DBTable { public final static int TABLE_ERROR_INFO_INDEX = 3; public final static int TABLE_START_SEQ_INDEX = 4; public final static int TABLE_END_SEQ_INDEX = 5; + public final static int TABLE_PID_INDEX = 6; - private static final String SELECT_TOTALB_FRAME_TIME_TABLE_QUERY = "select "//$NON-NLS-1$ - + CHART_TIME - + CommonConstants.COMMA + private static final String SELECT_TOTAL_FRAME_TIME_TABLE_QUERY = "select "//$NON-NLS-1$ + + CHART_TIME + CommonConstants.COMMA + FRAME_RATE + + CommonConstants.COMMA + VALUE + CommonConstants.COMMA - + VALUE - + CommonConstants.COMMA - + ERROR_INFO - + CommonConstants.COMMA + + ERROR_INFO + CommonConstants.COMMA + START_SEQ + CommonConstants.COMMA + END_SEQ + " from "//$NON-NLS-1$ + TABLENAME; @@ -79,6 +76,17 @@ public class GLFrameTimeDBTableManager extends DBTable { + TABLENAME + " where '%s' <= " + CHART_TIME + " and "//$NON-NLS-1$//$NON-NLS-2$ + CHART_TIME + " <= '%s'";//$NON-NLS-1$ + private static final String SELECT_PID_FRAME_TIME_TABLE_QUERY = "select "//$NON-NLS-1$ + + CHART_TIME + CommonConstants.COMMA + + FRAME_RATE + + CommonConstants.COMMA + VALUE + + CommonConstants.COMMA + + ERROR_INFO + CommonConstants.COMMA + + START_SEQ + + CommonConstants.COMMA + END_SEQ + " from "//$NON-NLS-1$ + + TABLENAME + " where '%s' <= " + CHART_TIME + " and "//$NON-NLS-1$//$NON-NLS-2$ + + CHART_TIME + " <= '%s' and " + PID + " = '%'";//$NON-NLS-1$ + @Override public String getTableName() { return TABLENAME; @@ -96,17 +104,12 @@ public class GLFrameTimeDBTableManager extends DBTable { DBConstants.INTEGER)); addColumn(new DBColumn(END_SEQ, DBConstants.NOT_NULL, DBConstants.INTEGER)); + addColumn(new DBColumn(PID, DBConstants.NOT_NULL, DBConstants.INTEGER)); } public int getFrameSize() { - if (null != AnalyzerManager.getProject()) { - SqlConnectionManager.establishConnection(AnalyzerManager - .getProject().getSavePath() - + File.separator - + AnalyzerConstants.DATABASE_NAME); - } List> result = SqlConnectionManager - .executeQuery(SELECT_TOTALB_FRAME_TIME_TABLE_QUERY); + .executeQuery(SELECT_TOTAL_FRAME_TIME_TABLE_QUERY); if (null == result || result.size() == 0 || result.get(0).size() == 0) { return 0; } else { @@ -115,21 +118,20 @@ public class GLFrameTimeDBTableManager extends DBTable { } public List> selectFrameTime(double startIndex, double endIndex) { - if (null != AnalyzerManager.getProject()) { - SqlConnectionManager.establishConnection(AnalyzerManager - .getProject().getSavePath() - + File.separator - + AnalyzerConstants.DATABASE_NAME); - } String query = String.format(SELECT_FRAME_TIME_TABLE_QUERY, startIndex, endIndex); + if (ToolbarArea.getInstance().getSelectedPid() != 0) { + query = String.format(SELECT_PID_FRAME_TIME_TABLE_QUERY, + startIndex, endIndex, ToolbarArea.getInstance() + .getSelectedPid()); + } + return SqlConnectionManager.executeQuery(query); } @Override public boolean prepare(PreparedStatement prep, List rowData) { boolean isPrepared = true; - int columnsize = getColumnSize(); if (columnsize != rowData.size()) { isPrepared = false; @@ -147,6 +149,8 @@ public class GLFrameTimeDBTableManager extends DBTable { (Integer) (rowData.get(TABLE_START_SEQ_INDEX))); prep.setInt(TABLE_END_SEQ_INDEX + 1, (Integer) (rowData.get(TABLE_END_SEQ_INDEX))); + prep.setInt(TABLE_PID_INDEX + 1, + (Integer) (rowData.get(TABLE_PID_INDEX))); } catch (SQLException e) { e.printStackTrace(); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/GLStateDBTableManager.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/GLStateDBTableManager.java index ee68581..9b25366 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/GLStateDBTableManager.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/GLStateDBTableManager.java @@ -25,14 +25,11 @@ */ package org.tizen.dynamicanalyzer.ui.opengl.data; -import java.io.File; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; -import org.tizen.dynamicanalyzer.common.AnalyzerConstants; -import org.tizen.dynamicanalyzer.common.AnalyzerManager; import org.tizen.dynamicanalyzer.constant.CommonConstants; import org.tizen.dynamicanalyzer.database.DBColumn; import org.tizen.dynamicanalyzer.database.DBConstants; @@ -137,12 +134,6 @@ public class GLStateDBTableManager extends DBTable { } public List getContextData(String seq, long contextID) { - if (null != AnalyzerManager.getProject()) { - SqlConnectionManager.establishConnection(AnalyzerManager - .getProject().getSavePath() - + File.separator - + AnalyzerConstants.DATABASE_NAME); - } String query = String.format(SELECT_CONTEXT_TABLE__QUERY, seq, contextID); List> result = SqlConnectionManager.executeQuery(query); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/GLStateDataMaker.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/GLStateDataMaker.java index b986985..1f3dbd2 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/GLStateDataMaker.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/GLStateDataMaker.java @@ -28,8 +28,12 @@ package org.tizen.dynamicanalyzer.ui.opengl.data; import java.util.ArrayList; +import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Set; import org.tizen.dynamicanalyzer.constant.CommonConstants; import org.tizen.dynamicanalyzer.swap.model.data.GLES20LogData; @@ -37,20 +41,20 @@ import org.tizen.dynamicanalyzer.ui.opengl.data.type.ContextValueType; import org.tizen.dynamicanalyzer.ui.opengl.data.type.GLAPINameDefine; import org.tizen.dynamicanalyzer.ui.opengl.data.type.GLConstantDefine; import org.tizen.dynamicanalyzer.ui.opengl.data.type.GLContextNameEnum; +import org.tizen.dynamicanalyzer.ui.opengl.data.type.GLES20ErrorDefine; +import org.tizen.dynamicanalyzer.ui.opengl.data.type.GLSharingContextType; import org.tizen.dynamicanalyzer.ui.opengl.data.type.GLStateProgramType; import org.tizen.dynamicanalyzer.ui.opengl.data.type.GLStateShaderType; import org.tizen.dynamicanalyzer.ui.opengl.data.type.GLStateTextureType; import org.tizen.dynamicanalyzer.util.DALogger; +import org.tizen.dynamicanalyzer.utils.AnalyzerUtil; +import org.tizen.dynamicanalyzer.utils.DownloadContentfileManager; public class GLStateDataMaker { public static int API_TYPE_INIT = 0; public static int API_TYPE_CONTEXT = 1; public static int API_TYPE_NO_CONTEXT = 2; - private List programList; - private List shaderList; - private List textureList; - private LinkedHashMap contextHashMap; public GLStateDataMaker() { @@ -58,9 +62,6 @@ public class GLStateDataMaker { } public void init() { - programList = new ArrayList(); - shaderList = new ArrayList(); - textureList = new ArrayList(); contextHashMap = new LinkedHashMap(); } @@ -77,10 +78,6 @@ public class GLStateDataMaker { String parameter = logData.getArgs(); long errorNo = logData.getErrno(); long contextId = logData.getCurrentContextName(); - setContextValueList(contextId, seq, - GLContextNameEnum.CONTEXT_ID.ordinal(), - Long.toString(contextId), currentFrameRateIndex, - currentFrameIndex); String contextValue = logData.getContextValue().trim(); ContextValueType curretnContextValue = contextHashMap.get(contextId); @@ -92,13 +89,21 @@ public class GLStateDataMaker { } if (apiType == API_TYPE_INIT) { - String contextValues[] = contextValue.split(CommonConstants.COMMA); - int maxVertexAttribs = Integer.parseInt(contextValues[0]); - int maxTextureUnits = Integer.parseInt(contextValues[1].trim()); - + int maxVertexAttribs = 0; + int maxTextureUnits = 0; + if (contextValue.contains(CommonConstants.COMMA)) { + String contextValues[] = contextValue + .split(CommonConstants.COMMA); + maxVertexAttribs = Integer.parseInt(contextValues[0]); + maxTextureUnits = Integer.parseInt(contextValues[1].trim()); + } else { + maxVertexAttribs = 5; + maxTextureUnits = 5; + } curretnContextValue.setTextureUnits(maxTextureUnits); curretnContextValue.setVertexAttribs(maxVertexAttribs); - } else if (apiType == API_TYPE_CONTEXT && errorNo == 0) { + } else if (apiType == API_TYPE_CONTEXT + && (errorNo == GLES20ErrorDefine.EGL_SUCCESS || errorNo == GLES20ErrorDefine.GL_SUCCESS)) { String parameters[] = parameter.split(CommonConstants.COMMA + CommonConstants.SPACE); String contextValues[] = contextValue.split(CommonConstants.COMMA); @@ -609,279 +614,338 @@ public class GLStateDataMaker { viewPort.toString(), currentFrameRateIndex, currentFrameIndex); } - + eglAPILogManager(logData, currentFrameRateIndex, currentFrameIndex); programLogManage(logData); textureLogManager(logData, currentFrameRateIndex, currentFrameIndex); - } + } } - private void textureLogManager(GLES20LogData logData, + private void eglAPILogManager(GLES20LogData logData, int currentFrameRateIndex, int currentFrameIndex) { - int apiType = logData.getApiType(); - long errorNo = logData.getErrno(); - if (apiType == API_TYPE_CONTEXT && errorNo == 0) { - - String seq = String.valueOf(logData.getSeq()); - String apiName = logData.getApiName(); - String parameter = logData.getArgs(); - long contextId = logData.getCurrentContextName(); + String seq = String.valueOf(logData.getSeq()); + String apiName = logData.getApiName(); + String parameter = logData.getArgs(); + long contextId = logData.getCurrentContextName(); + String parameters[] = parameter.split(CommonConstants.COMMA + + CommonConstants.SPACE); + String returnValue = logData.getReturn(); + if (apiName.equals(GLAPINameDefine.API_EGL_CREATE_CONTEXT)) { + contextId = AnalyzerUtil.addrToLong(returnValue); + long sharingContextId = -1; + if (parameters.length > 2) { + sharingContextId = AnalyzerUtil.addrToLong(parameters[2]); + } setContextValueList(contextId, seq, GLContextNameEnum.CONTEXT_ID.ordinal(), Long.toString(contextId), currentFrameRateIndex, currentFrameIndex); - String contextValue = logData.getContextValue().trim(); - String parameters[] = parameter.split(CommonConstants.COMMA - + CommonConstants.SPACE); - String contextValues[] = contextValue.split(CommonConstants.COMMA); + if (sharingContextId != 0) { + ContextValueType curretnContextValue = contextHashMap + .get(contextId); + curretnContextValue.addSharingContextID(contextHashMap, + sharingContextId); + } - if (apiName.equals(GLAPINameDefine.API_GL_TEXTURE_ACTIVE)) { - setContextValueList(contextId, seq, - GLContextNameEnum.TEXTURE_ACTIVE.ordinal(), - parameters[0], currentFrameRateIndex, currentFrameIndex); - } else if (apiName.equals(GLAPINameDefine.API_GL_TEXTURE_GEN)) { - int num = Integer.parseInt(parameters[0]); + List sharingInfoList = new ArrayList(); + Set> set = contextHashMap.entrySet(); + Iterator> itr = set.iterator(); + while (itr.hasNext()) { + Map.Entry e = (Map.Entry) itr + .next(); + ContextValueType contextValue = e.getValue(); + for (int i = 0; i < contextValue.sharingContextIdList.size(); i++) { + sharingInfoList.add(new GLSharingContextType( + contextValue.contextID, + contextValue.sharingContextIdList.get(i))); + } + } + GLDataManager.getInstance().getStateSharingDBTableManage() + .insertSharingData(sharingInfoList); + } - for (int i = 0; i < num; i++) { - textureList.add(new GLStateTextureType(Integer - .parseInt(contextValues[i].trim()), contextId, - logData.getSeq())); + } + + private void textureLogManager(GLES20LogData logData, + int currentFrameRateIndex, int currentFrameIndex) { + + String seq = String.valueOf(logData.getSeq()); + String apiName = logData.getApiName(); + String parameter = logData.getArgs(); + long contextId = logData.getCurrentContextName(); + setContextValueList(contextId, seq, + GLContextNameEnum.CONTEXT_ID.ordinal(), + Long.toString(contextId), currentFrameRateIndex, + currentFrameIndex); + String contextValue = logData.getContextValue().trim(); + String parameters[] = parameter.split(CommonConstants.COMMA + + CommonConstants.SPACE); + String contextValues[] = contextValue.split(CommonConstants.COMMA); + ContextValueType curretnContextValue = contextHashMap.get(contextId); + + if (apiName.equals(GLAPINameDefine.API_GL_TEXTURE_ACTIVE)) { + setContextValueList(contextId, seq, + GLContextNameEnum.TEXTURE_ACTIVE.ordinal(), parameters[0], + currentFrameRateIndex, currentFrameIndex); + } else if (apiName.equals(GLAPINameDefine.API_GL_TEXTURE_GEN)) { + int num = Integer.parseInt(parameters[0]); + + for (int i = 0; i < num; i++) { + curretnContextValue.textureList.add(new GLStateTextureType( + Integer.parseInt(contextValues[i].trim()), contextId, + logData.getSeq())); + } + } else if (apiName.equals(GLAPINameDefine.API_GL_TEXTURE_BIND)) { + for (int i = 0; i < curretnContextValue.textureList.size(); i++) { + if (curretnContextValue.textureList.get(i).getObjID() == Integer + .parseInt(parameters[1].trim()) + && curretnContextValue.textureList.get(i) + .getContextID() == contextId) { + curretnContextValue.textureList.get(i).setTrxtureType( + Integer.parseInt(parameters[0].trim())); } - } else if (apiName.equals(GLAPINameDefine.API_GL_TEXTURE_BIND)) { - for (int i = 0; i < textureList.size(); i++) { - if (textureList.get(i).getObjID() == Integer - .parseInt(parameters[1].trim()) - && textureList.get(i).getContextID() == contextId) { - textureList.get(i).setTrxtureType( + } + } else if (apiName.equals(GLAPINameDefine.API_GL_TEXTURE_DEL)) { + int num = Integer.parseInt(parameters[0]); + + for (int i = 0; i < num; i++) { + for (int j = 0; j < curretnContextValue.textureList.size(); j++) { + if (curretnContextValue.textureList.get(j).getObjID() == Integer + .parseInt(parameters[0].trim()) + && curretnContextValue.textureList.get(j) + .getContextID() == contextId) { + curretnContextValue.textureList.get(j).setTrxtureType( Integer.parseInt(parameters[0].trim())); } } - } else if (apiName.equals(GLAPINameDefine.API_GL_TEXTURE_DEL)) { - int num = Integer.parseInt(parameters[0]); + } + } else if (apiName.equals(GLAPINameDefine.API_GL_TEXTURE_PARAM_F) + || apiName.equals(GLAPINameDefine.API_GL_TEXTURE_PARAM_I)) { - for (int i = 0; i < num; i++) { - for (int j = 0; j < textureList.size(); j++) { - if (textureList.get(j).getObjID() == Integer - .parseInt(parameters[0].trim()) - && textureList.get(j).getContextID() == contextId) { - textureList.get(j).setTrxtureType( - Integer.parseInt(parameters[0].trim())); - } - } - } - } else if (apiName.equals(GLAPINameDefine.API_GL_TEXTURE_PARAM_F) - || apiName.equals(GLAPINameDefine.API_GL_TEXTURE_PARAM_I)) { - - for (int i = 0; i < textureList.size(); i++) { - if (textureList.get(i).getContextID() == contextId) { - if (textureList.get(i).getTrxtureType() == Integer - .parseInt(parameters[0].trim())) { - - if (parameters[1] - .equals(GLAPINameDefine.GL_TEXTURE_MAG_FILTER)) { - textureList.get(i).setMagFilter( - Integer.parseInt(parameters[2])); - } else if (parameters[1] - .equals(GLAPINameDefine.GL_TEXTURE_MIN_FILTER)) { - textureList.get(i).setMinFilter( - Integer.parseInt(parameters[2])); - } else if (parameters[1] - .equals(GLAPINameDefine.GL_TEXTURE_WRAP_S)) { - textureList.get(i).setWrapS( - Integer.parseInt(parameters[2])); - } else if (parameters[1] - .equals(GLAPINameDefine.GL_TEXTURE_WRAP_T)) { - textureList.get(i).setWrapT( - Integer.parseInt(parameters[2])); - } else { - DALogger.getInstance().error( - "undefine type : " + parameters[1]); - } + for (int i = 0; i < curretnContextValue.textureList.size(); i++) { + if (curretnContextValue.textureList.get(i).getContextID() == contextId) { + if (curretnContextValue.textureList.get(i).getTrxtureType() == Integer + .parseInt(parameters[0].trim())) { + + if (parameters[1] + .equals(GLAPINameDefine.GL_TEXTURE_MAG_FILTER)) { + curretnContextValue.textureList.get(i) + .setMagFilter( + Integer.parseInt(parameters[2])); + } else if (parameters[1] + .equals(GLAPINameDefine.GL_TEXTURE_MIN_FILTER)) { + curretnContextValue.textureList.get(i) + .setMinFilter( + Integer.parseInt(parameters[2])); + } else if (parameters[1] + .equals(GLAPINameDefine.GL_TEXTURE_WRAP_S)) { + curretnContextValue.textureList.get(i).setWrapS( + Integer.parseInt(parameters[2])); + } else if (parameters[1] + .equals(GLAPINameDefine.GL_TEXTURE_WRAP_T)) { + curretnContextValue.textureList.get(i).setWrapT( + Integer.parseInt(parameters[2])); + } else { + DALogger.getInstance().error( + "undefine type : " + parameters[1]); } } } - insertTextureData(); - } else if (apiName.equals(GLAPINameDefine.API_GL_TEXTURE_PARAM_FV) - || apiName.equals(GLAPINameDefine.API_GL_TEXTURE_PARAM_IV)) { + } + insertTextureData(); + } else if (apiName.equals(GLAPINameDefine.API_GL_TEXTURE_PARAM_FV) + || apiName.equals(GLAPINameDefine.API_GL_TEXTURE_PARAM_IV)) { - for (int i = 0; i < textureList.size(); i++) { - if (textureList.get(i).getObjID() == Integer - .parseInt(parameters[0].trim()) - && textureList.get(i).getContextID() == contextId) { - if (textureList.get(i).getTrxtureType() == Integer - .parseInt(parameters[0].trim())) { - - if (parameters[1] - .equals(GLAPINameDefine.GL_TEXTURE_MAG_FILTER)) { - textureList.get(i).setMagFilter( - Integer.parseInt(parameters[2])); - } else if (parameters[1] - .equals(GLAPINameDefine.GL_TEXTURE_MIN_FILTER)) { - textureList.get(i).setMinFilter( - Integer.parseInt(parameters[2])); - } else if (parameters[1] - .equals(GLAPINameDefine.GL_TEXTURE_WRAP_S)) { - textureList.get(i).setWrapS( - Integer.parseInt(parameters[2])); - } else if (parameters[1] - .equals(GLAPINameDefine.GL_TEXTURE_WRAP_T)) { - textureList.get(i).setWrapT( - Integer.parseInt(parameters[2])); - } + for (int i = 0; i < curretnContextValue.textureList.size(); i++) { + if (curretnContextValue.textureList.get(i).getObjID() == Integer + .parseInt(parameters[0].trim()) + && curretnContextValue.textureList.get(i) + .getContextID() == contextId) { + if (curretnContextValue.textureList.get(i).getTrxtureType() == Integer + .parseInt(parameters[0].trim())) { + + if (parameters[1] + .equals(GLAPINameDefine.GL_TEXTURE_MAG_FILTER)) { + curretnContextValue.textureList.get(i) + .setMagFilter( + Integer.parseInt(parameters[2])); + } else if (parameters[1] + .equals(GLAPINameDefine.GL_TEXTURE_MIN_FILTER)) { + curretnContextValue.textureList.get(i) + .setMinFilter( + Integer.parseInt(parameters[2])); + } else if (parameters[1] + .equals(GLAPINameDefine.GL_TEXTURE_WRAP_S)) { + curretnContextValue.textureList.get(i).setWrapS( + Integer.parseInt(parameters[2])); + } else if (parameters[1] + .equals(GLAPINameDefine.GL_TEXTURE_WRAP_T)) { + curretnContextValue.textureList.get(i).setWrapT( + Integer.parseInt(parameters[2])); } } } - insertTextureData(); } + insertTextureData(); } } private void insertTextureData() { - for (int i = 0; i < textureList.size(); i++) { - if (textureList.get(i).validInsertState()) { - GLDataManager.getInstance().getStateTextureDBTableManage() - .insertData(textureList.get(i)); - textureList.remove(i); - break; + Set> set = contextHashMap.entrySet(); + Iterator> itr = set.iterator(); + while (itr.hasNext()) { + Map.Entry e = (Map.Entry) itr + .next(); + ContextValueType contextValue = e.getValue(); + for (int i = 0; i < contextValue.textureList.size(); i++) { + if (contextValue.textureList.get(i).validInsertState()) { + GLDataManager.getInstance().getStateTextureDBTableManage() + .insertData(contextValue.textureList.get(i)); + contextValue.textureList.remove(i); + break; + } } } - } private void programLogManage(GLES20LogData logData) { - int apiType = logData.getApiType(); - long errorNo = logData.getErrno(); - if (apiType == API_TYPE_CONTEXT && errorNo == 0) { + String apiName = logData.getApiName(); + String parameter = logData.getArgs(); + String contextValue = logData.getContextValue().trim(); + String returnValue = logData.getReturn(); + String parameters[] = parameter.split(CommonConstants.COMMA + + CommonConstants.SPACE); + String contextID = Long.toString(logData.getCurrentContextName()); + long contextId = logData.getCurrentContextName(); + ContextValueType curretnContextValue = contextHashMap.get(contextId); - String apiName = logData.getApiName(); - String parameter = logData.getArgs(); - String contextValue = logData.getContextValue().trim(); - String returnValue = logData.getReturn(); - String parameters[] = parameter.split(CommonConstants.COMMA - + CommonConstants.SPACE); - String contextID = Long.toString(logData.getCurrentContextName()); - - if (apiName.equals(GLAPINameDefine.API_GL_SHADER_CREATE)) { - int shaderID = Integer.parseInt(returnValue); - int shaderType = Integer.parseInt(parameter); - GLStateShaderType stateShaderType = new GLStateShaderType( - shaderID); - stateShaderType.setShaderType(shaderType); - shaderList.add(stateShaderType); - - } else if (apiName.equals(GLAPINameDefine.API_GL_SHADER_SOURCE)) { - int shaderID = Integer.parseInt(parameters[0]); - for (int i = 0; i < shaderList.size(); i++) { - if (shaderList.get(i).getId() == shaderID) { - shaderList.get(i).setShaderSrc(contextValue); - return; - } + if (apiName.equals(GLAPINameDefine.API_GL_SHADER_CREATE)) { + int shaderID = Integer.parseInt(returnValue); + int shaderType = Integer.parseInt(parameter); + GLStateShaderType stateShaderType = new GLStateShaderType( + contextId, shaderID); + stateShaderType.setShaderType(shaderType); + curretnContextValue.shaderList.add(stateShaderType); + + } else if (apiName.equals(GLAPINameDefine.API_GL_SHADER_SOURCE)) { + int shaderID = Integer.parseInt(parameters[0]); + for (int i = 0; i < curretnContextValue.shaderList.size(); i++) { + if (curretnContextValue.shaderList.get(i).getId() == shaderID) { + curretnContextValue.shaderList.get(i).setShaderSrc( + DownloadContentfileManager + .getDowonloadFilePath(contextValue)); + return; } - } else if (apiName.equals(GLAPINameDefine.API_GL_SHADER_COMPILE)) { - int shaderID = Integer.parseInt(parameter); - for (int i = 0; i < shaderList.size(); i++) { - if (shaderList.get(i).getId() == shaderID) { - shaderList.get(i).setCompileStatus(1); - return; - } + } + } else if (apiName.equals(GLAPINameDefine.API_GL_SHADER_COMPILE)) { + int shaderID = Integer.parseInt(parameter); + for (int i = 0; i < curretnContextValue.shaderList.size(); i++) { + if (curretnContextValue.shaderList.get(i).getId() == shaderID) { + curretnContextValue.shaderList.get(i).setCompileStatus(1); + return; } } + } - else if (apiName.equals(GLAPINameDefine.API_GL_SHADER_DEL)) { - int shaderId = Integer.parseInt(parameter); - for (int i = 0; i < shaderList.size(); i++) { - if (shaderList.get(i).getId() == shaderId) { - shaderList.get(i).setDeleteStatus(1); - break; - } + else if (apiName.equals(GLAPINameDefine.API_GL_SHADER_DEL)) { + int shaderId = Integer.parseInt(parameter); + for (int i = 0; i < curretnContextValue.shaderList.size(); i++) { + if (curretnContextValue.shaderList.get(i).getId() == shaderId) { + curretnContextValue.shaderList.get(i).setDeleteStatus(1); + break; } } + } - else if (apiName.equals(GLAPINameDefine.API_GL_PROGRAM_CREATE)) { - int programID = Integer.parseInt(returnValue); - GLStateProgramType stateProgramType = new GLStateProgramType( - programID); - programList.add(stateProgramType); - } else if (apiName - .equals(GLAPINameDefine.API_GL_PROGRAM_ATTACH_SHADER)) { - int programID = Integer.parseInt(parameters[0]); - int shaderID = Integer.parseInt(parameters[1]); - - boolean isFragementShaser = false; - for (int i = 0; i < shaderList.size(); i++) { - if (shaderList.get(i).getId() == shaderID) { - if (shaderList.get(i).isFragementShader()) { - isFragementShaser = true; - } else { - isFragementShaser = false; - } - break; + else if (apiName.equals(GLAPINameDefine.API_GL_PROGRAM_CREATE)) { + int programID = Integer.parseInt(returnValue); + GLStateProgramType stateProgramType = new GLStateProgramType( + programID); + curretnContextValue.programList.add(stateProgramType); + } else if (apiName.equals(GLAPINameDefine.API_GL_PROGRAM_ATTACH_SHADER)) { + int programID = Integer.parseInt(parameters[0]); + int shaderID = Integer.parseInt(parameters[1]); + + boolean isFragementShaser = false; + for (int i = 0; i < curretnContextValue.shaderList.size(); i++) { + if (curretnContextValue.shaderList.get(i).getId() == shaderID) { + if (curretnContextValue.shaderList.get(i) + .isFragementShader()) { + isFragementShaser = true; + } else { + isFragementShaser = false; } + break; } + } - for (int i = 0; i < programList.size(); i++) { - if (programList.get(i).getId() == programID) { - if (isFragementShaser) { - programList.get(i).setFragmentShaderId(shaderID); - } else { - programList.get(i).setVertexShaderId(shaderID); - } - return; + for (int i = 0; i < curretnContextValue.programList.size(); i++) { + if (curretnContextValue.programList.get(i).getId() == programID) { + if (isFragementShaser) { + curretnContextValue.programList.get(i) + .setFragmentShaderId(shaderID); + } else { + curretnContextValue.programList.get(i) + .setVertexShaderId(shaderID); } + return; } - } else if (apiName.equals(GLAPINameDefine.API_GL_PROGRAM_LINK)) { - int programID = Integer.parseInt(parameter); - for (int i = 0; i < programList.size(); i++) { - if (programList.get(i).getId() == programID) { - programList.get(i).setLinkStatus(1); - break; - } + } + } else if (apiName.equals(GLAPINameDefine.API_GL_PROGRAM_LINK)) { + int programID = Integer.parseInt(parameter); + for (int i = 0; i < curretnContextValue.programList.size(); i++) { + if (curretnContextValue.programList.get(i).getId() == programID) { + curretnContextValue.programList.get(i).setLinkStatus(1); + break; } - } else if (apiName - .equals(GLAPINameDefine.API_GL_PROGRAM_DETATCH_SHADER)) { - int programID = Integer.parseInt(parameters[0]); - int shaderID = Integer.parseInt(parameters[1]); - boolean isFragementShaser = false; - for (int i = 0; i < shaderList.size(); i++) { - if (shaderList.get(i).getId() == shaderID) { - if (shaderList.get(i).isFragementShader()) { - isFragementShaser = true; - } else { - isFragementShaser = false; - } - break; + } + } else if (apiName + .equals(GLAPINameDefine.API_GL_PROGRAM_DETATCH_SHADER)) { + int programID = Integer.parseInt(parameters[0]); + int shaderID = Integer.parseInt(parameters[1]); + boolean isFragementShaser = false; + for (int i = 0; i < curretnContextValue.shaderList.size(); i++) { + if (curretnContextValue.shaderList.get(i).getId() == shaderID) { + if (curretnContextValue.shaderList.get(i) + .isFragementShader()) { + isFragementShaser = true; + } else { + isFragementShaser = false; } + break; } + } - for (int i = 0; i < programList.size(); i++) { - if (programList.get(i).getId() == programID) { - if (isFragementShaser) { - programList.get(i).setFragmentShaderId(-1); - } else { - programList.get(i).setVertexShaderId(-1); - } - return; + for (int i = 0; i < curretnContextValue.programList.size(); i++) { + if (curretnContextValue.programList.get(i).getId() == programID) { + if (isFragementShaser) { + curretnContextValue.programList.get(i) + .setFragmentShaderId(-1); + } else { + curretnContextValue.programList.get(i) + .setVertexShaderId(-1); } + return; } + } - } else if (apiName.equals(GLAPINameDefine.API_GL_PROGRAM_USE)) { - int programId = Integer.parseInt(parameter); - for (int i = 0; i < programList.size(); i++) { - if (programList.get(i).getId() == programId) { - programList.get(i).setContextName( - Integer.parseInt(contextID)); - break; - } + } else if (apiName.equals(GLAPINameDefine.API_GL_PROGRAM_USE)) { + long programId = Long.parseLong(parameter); + for (int i = 0; i < curretnContextValue.programList.size(); i++) { + if (curretnContextValue.programList.get(i).getId() == programId) { + curretnContextValue.programList.get(i).setContextId( + Integer.parseInt(contextID)); + break; } + } - } else if (apiName.equals(GLAPINameDefine.API_GL_PROGRAM_DEL)) { - int programId = Integer.parseInt(parameter); - for (int i = 0; i < programList.size(); i++) { - if (programList.get(i).getId() == programId) { - programList.get(i).setDeleteStatus(1); - break; - } + } else if (apiName.equals(GLAPINameDefine.API_GL_PROGRAM_DEL)) { + int programId = Integer.parseInt(parameter); + for (int i = 0; i < curretnContextValue.programList.size(); i++) { + if (curretnContextValue.programList.get(i).getId() == programId) { + curretnContextValue.programList.get(i).setDeleteStatus(1); + break; } } } @@ -935,10 +999,32 @@ public class GLStateDataMaker { } public List getProgramList() { + List programList = new ArrayList(); + Set> set = contextHashMap.entrySet(); + Iterator> itr = set.iterator(); + while (itr.hasNext()) { + Map.Entry e = (Map.Entry) itr + .next(); + ContextValueType contextValue = e.getValue(); + for (int i = 0; i < contextValue.programList.size(); i++) { + programList.add(contextValue.programList.get(i)); + } + } return programList; } public List getShaderList() { + List shaderList = new ArrayList(); + Set> set = contextHashMap.entrySet(); + Iterator> itr = set.iterator(); + while (itr.hasNext()) { + Map.Entry e = (Map.Entry) itr + .next(); + ContextValueType contextValue = e.getValue(); + for (int i = 0; i < contextValue.shaderList.size(); i++) { + shaderList.add(contextValue.shaderList.get(i)); + } + } return shaderList; } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/GLStateHistoryDBTableManager.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/GLStateHistoryDBTableManager.java index 30a2c98..83ba1b5 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/GLStateHistoryDBTableManager.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/GLStateHistoryDBTableManager.java @@ -25,14 +25,11 @@ */ package org.tizen.dynamicanalyzer.ui.opengl.data; -import java.io.File; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; -import org.tizen.dynamicanalyzer.common.AnalyzerConstants; -import org.tizen.dynamicanalyzer.common.AnalyzerManager; import org.tizen.dynamicanalyzer.constant.CommonConstants; import org.tizen.dynamicanalyzer.database.DBColumn; import org.tizen.dynamicanalyzer.database.DBConstants; @@ -107,12 +104,6 @@ public class GLStateHistoryDBTableManager extends DBTable { public List selectLastChangedSeq(long contextId, int stateIndex, long seq) { - if (null != AnalyzerManager.getProject()) { - SqlConnectionManager.establishConnection(AnalyzerManager - .getProject().getSavePath() - + File.separator - + AnalyzerConstants.DATABASE_NAME); - } String query = String.format(SELECT_LAST_CHANGED_SEQ_QUERY, contextId, stateIndex, seq); List> result = SqlConnectionManager.executeQuery(query); @@ -124,13 +115,6 @@ public class GLStateHistoryDBTableManager extends DBTable { public List selectNextChangedSeq(long contextId, int stateIndex, long seq) { - if (null != AnalyzerManager.getProject()) { - SqlConnectionManager.establishConnection(AnalyzerManager - .getProject().getSavePath() - + File.separator - + AnalyzerConstants.DATABASE_NAME); - - } String query = String.format(SELECT_NEXT_CHANGED_SEQ_QUERY, contextId, stateIndex, seq); List> result = SqlConnectionManager.executeQuery(query); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/GLStateProgramDBTableManager.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/GLStateProgramDBTableManager.java index eca5328..f55759b 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/GLStateProgramDBTableManager.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/GLStateProgramDBTableManager.java @@ -25,14 +25,11 @@ */ package org.tizen.dynamicanalyzer.ui.opengl.data; -import java.io.File; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; -import org.tizen.dynamicanalyzer.common.AnalyzerConstants; -import org.tizen.dynamicanalyzer.common.AnalyzerManager; import org.tizen.dynamicanalyzer.constant.CommonConstants; import org.tizen.dynamicanalyzer.database.DBColumn; import org.tizen.dynamicanalyzer.database.DBConstants; @@ -56,14 +53,14 @@ public class GLStateProgramDBTableManager extends DBTable { public static final String COMPILE_STATUS = "COMPILE_STATUS"; // only shader//$NON-NLS-1$ public static final String FRAGMENT_ID = "FRAGMENT_ID"; // only program//$NON-NLS-1$ public static final String VERTEX_ID = "VERTEX_ID"; // only program//$NON-NLS-1$ - public static final String CONTEXT_NAME = "CONTEXT_NAME"; // only program//$NON-NLS-1$ + public static final String CONTEXT_ID = "CONTEXT_ID"; // only program//$NON-NLS-1$ private static final String SELECT_QUERY = "select " + TYPE//$NON-NLS-1$ + CommonConstants.COMMA + ID + CommonConstants.COMMA + SHADER_SRC + CommonConstants.COMMA + DELETE_STATUS + CommonConstants.COMMA + LINK_STATUS + CommonConstants.COMMA + COMPILE_STATUS + CommonConstants.COMMA + FRAGMENT_ID + CommonConstants.COMMA - + VERTEX_ID + CommonConstants.COMMA + CONTEXT_NAME + " from " + + VERTEX_ID + CommonConstants.COMMA + CONTEXT_ID + " from " + TABLENAME; public final static int TABLE_TYPE_INDEX = 0; @@ -96,13 +93,13 @@ public class GLStateProgramDBTableManager extends DBTable { DBConstants.INTEGER)); addColumn(new DBColumn(VERTEX_ID, DBConstants.NOT_NULL, DBConstants.INTEGER)); - addColumn(new DBColumn(CONTEXT_NAME, DBConstants.NOT_NULL, - DBConstants.INTEGER)); + addColumn(new DBColumn(CONTEXT_ID, DBConstants.NOT_NULL, + DBConstants.LONG)); } public void insertData() { List programList = GLDataManager.getInstance() - .getStateDataMagerInstance().getProgramList(); + .getStateDataMake().getProgramList(); List> insertObjectList = new ArrayList>(); for (int i = 0; i < programList.size(); i++) { @@ -116,12 +113,12 @@ public class GLStateProgramDBTableManager extends DBTable { itemList.add(STATUS_NULL); itemList.add(programType.getFragmentShaderId()); itemList.add(programType.getVertexShaderId()); - itemList.add(programType.getContextName()); + itemList.add(programType.getContextId()); insertObjectList.add(itemList); } List shaderList = GLDataManager.getInstance() - .getStateDataMagerInstance().getShaderList(); + .getStateDataMake().getShaderList(); for (int i = 0; i < shaderList.size(); i++) { GLStateShaderType shaderType = shaderList.get(i); @@ -134,19 +131,13 @@ public class GLStateProgramDBTableManager extends DBTable { itemList.add(shaderType.getCompileStatus()); itemList.add(STATUS_NULL); itemList.add(STATUS_NULL); - itemList.add(STATUS_NULL); + itemList.add(shaderType.getContextId()); insertObjectList.add(itemList); } insertData(insertObjectList); } public void initProgramData() { - if (null != AnalyzerManager.getProject()) { - SqlConnectionManager.establishConnection(AnalyzerManager - .getProject().getSavePath() - + File.separator - + AnalyzerConstants.DATABASE_NAME); - } List> result = SqlConnectionManager .executeQuery(SELECT_QUERY); if (null == result || result.size() == 0 || result.get(0).size() == 0) { @@ -165,18 +156,22 @@ public class GLStateProgramDBTableManager extends DBTable { TABLE_FRAGMENT_ID_INDEX)); programType.setVertexShaderId((Integer) result.get(i).get( TABLE_VERTEX_ID_INDEX)); - programType.setContextName((Integer) result.get(i).get( + programType.setContextId((Integer) result.get(i).get( TABLE_CONTEXT_NAME_INDEX)); - GLDataManager.getInstance().getStateDataMagerInstance() - .getProgramList().add(programType); + GLDataManager.getInstance().getStateDataMake().getProgramList() + .add(programType); } else { GLStateShaderType shaderType = new GLStateShaderType( - (Integer) result.get(i).get(1)); - shaderType.setShaderSrc((String) result.get(i).get(2)); - shaderType.setDeleteStatus((Integer) result.get(i).get(3)); - shaderType.setCompileStatus((Integer) result.get(i).get(4)); - GLDataManager.getInstance().getStateDataMagerInstance() - .getShaderList().add(shaderType); + (Long) result.get(i).get(TABLE_CONTEXT_NAME_INDEX), + (Integer) result.get(i).get(TABLE_ID_INDEX)); + shaderType.setShaderSrc((String) result.get(i).get( + TABLE_SHADER_SRC_INDEX)); + shaderType.setDeleteStatus((Integer) result.get(i).get( + TABLE_DELETE_STATUS_INDEX)); + shaderType.setCompileStatus((Integer) result.get(i).get( + TABLE_LINK_STATUS_INDEX)); + GLDataManager.getInstance().getStateDataMake().getShaderList() + .add(shaderType); } } } @@ -184,7 +179,6 @@ public class GLStateProgramDBTableManager extends DBTable { @Override public boolean prepare(PreparedStatement prep, List rowData) { boolean isPrepared = true; - int columnsize = getColumnSize(); if (columnsize != rowData.size()) { isPrepared = false; @@ -206,8 +200,8 @@ public class GLStateProgramDBTableManager extends DBTable { (Integer) (rowData.get(TABLE_FRAGMENT_ID_INDEX))); prep.setInt(TABLE_VERTEX_ID_INDEX + 1, (Integer) (rowData.get(TABLE_VERTEX_ID_INDEX))); - prep.setInt(TABLE_CONTEXT_NAME_INDEX + 1, - (Integer) (rowData.get(TABLE_CONTEXT_NAME_INDEX))); + prep.setLong(TABLE_CONTEXT_NAME_INDEX + 1, + (Long) (rowData.get(TABLE_CONTEXT_NAME_INDEX))); } catch (SQLException e) { e.printStackTrace(); isPrepared = false; diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/GLStateSharingDBTableManager.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/GLStateSharingDBTableManager.java new file mode 100644 index 0000000..c0ffdd6 --- /dev/null +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/GLStateSharingDBTableManager.java @@ -0,0 +1,138 @@ +/* + * Dynamic Analyzer + * + * Copyright (c) 2013 Samsung Electronics Co., Ltd. All rights reserved. + * + * Contact: + * Hyunjong Park + * Juyoung Kim + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Contributors: + * - S-Core Co., Ltd + * + */ +package org.tizen.dynamicanalyzer.ui.opengl.data; + +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; + +import org.tizen.dynamicanalyzer.constant.CommonConstants; +import org.tizen.dynamicanalyzer.database.DBColumn; +import org.tizen.dynamicanalyzer.database.DBConstants; +import org.tizen.dynamicanalyzer.database.DBTable; +import org.tizen.dynamicanalyzer.database.SqlConnectionManager; +import org.tizen.dynamicanalyzer.ui.opengl.data.type.GLSharingContextType; + +public class GLStateSharingDBTableManager extends DBTable { + private static final String TABLENAME = "GL_SHARING";//$NON-NLS-1$ + + public static final String CONTEXT_ID = "CONTEXT_ID";//$NON-NLS-1$ + public static final String SHARING_CONTEXT_ID = "SHARING_CONTEXT_ID";//$NON-NLS-1$ + + public final static int TABLE_CONTEXT_ID_INDEX = 0; + public final static int TABLE_SHARING_CONTEXT_ID_INDEX = 1; + + private static final String SELECT_QUERY = "select "//$NON-NLS-1$ + + CONTEXT_ID + CommonConstants.COMMA + + SHARING_CONTEXT_ID + + " from " + TABLENAME;//$NON-NLS-1$ + + List savedSharingInfoList = null; + + @Override + public String getTableName() { + return TABLENAME; + } + + public GLStateSharingDBTableManager() { + addColumn(new DBColumn(CONTEXT_ID, DBConstants.NOT_NULL, + DBConstants.LONG)); + addColumn(new DBColumn(SHARING_CONTEXT_ID, DBConstants.NOT_NULL, + DBConstants.LONG)); + savedSharingInfoList = new ArrayList(); + } + + public void insertSharingData(List sharingInfoList) { + List> insertList = new ArrayList>(); + for (int i = 0; i < sharingInfoList.size(); i++) { + GLSharingContextType insertSharingType = sharingInfoList.get(i); + boolean isSavedData = false; + for (int j = 0; j < savedSharingInfoList.size(); j++) { + GLSharingContextType savedSharingType = savedSharingInfoList + .get(j); + if (savedSharingType.getContextId() == insertSharingType + .getContextId() + && savedSharingType.getSharingContextId() == insertSharingType + .getSharingContextId()) { + isSavedData = true; + break; + } + } + if (!isSavedData) { + List objectList = new ArrayList(); + objectList.add(insertSharingType.getContextId()); + objectList.add(insertSharingType.getSharingContextId()); + insertList.add(objectList); + savedSharingInfoList.add(insertSharingType); + } + } + + insertData(insertList); + } + + public List selectSharingData() { + List> result = SqlConnectionManager + .executeQuery(SELECT_QUERY); + if (null == result || result.size() == 0 || result.get(0).size() == 0) { + return null; + } + + List sharingInfoList = new ArrayList(); + + for (int i = 0; i < result.size(); i++) { + long contextId = (Long) result.get(i).get(TABLE_CONTEXT_ID_INDEX); + long sharingContextId = (Long) result.get(i).get( + TABLE_SHARING_CONTEXT_ID_INDEX); + + sharingInfoList.add(new GLSharingContextType(contextId, + sharingContextId)); + } + + return sharingInfoList; + } + + @Override + public boolean prepare(PreparedStatement prep, List rowData) { + boolean isPrepared = true; + int columnsize = getColumnSize(); + if (columnsize != rowData.size()) { + isPrepared = false; + } else { + try { + prep.setLong(TABLE_CONTEXT_ID_INDEX + 1, + (Long) (rowData.get(TABLE_CONTEXT_ID_INDEX))); + prep.setLong(TABLE_SHARING_CONTEXT_ID_INDEX + 1, + (Long) (rowData.get(TABLE_SHARING_CONTEXT_ID_INDEX))); + } catch (SQLException e) { + e.printStackTrace(); + isPrepared = false; + } + } + return isPrepared; + } + +} diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/GLStateTextureDBTableManager.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/GLStateTextureDBTableManager.java index 8ff5dd2..b7206b5 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/GLStateTextureDBTableManager.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/GLStateTextureDBTableManager.java @@ -25,14 +25,11 @@ */ package org.tizen.dynamicanalyzer.ui.opengl.data; -import java.io.File; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; -import org.tizen.dynamicanalyzer.common.AnalyzerConstants; -import org.tizen.dynamicanalyzer.common.AnalyzerManager; import org.tizen.dynamicanalyzer.constant.CommonConstants; import org.tizen.dynamicanalyzer.database.DBColumn; import org.tizen.dynamicanalyzer.database.DBConstants; @@ -114,12 +111,6 @@ public class GLStateTextureDBTableManager extends DBTable { } public List select() { - if (null != AnalyzerManager.getProject()) { - SqlConnectionManager.establishConnection(AnalyzerManager - .getProject().getSavePath() - + File.separator - + AnalyzerConstants.DATABASE_NAME); - } List> result = SqlConnectionManager .executeQuery(SELECT_QUERY); if (null == result || result.size() == 0 || result.get(0).size() == 0) { diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/type/ContextValueType.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/type/ContextValueType.java index e8c4d61..89138ef 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/type/ContextValueType.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/type/ContextValueType.java @@ -37,7 +37,14 @@ import org.tizen.dynamicanalyzer.ui.opengl.data.GLDataManager; public class ContextValueType { private static final int CONTEXT_VALUE_SIZE = GLContextNameEnum.values().length; - private long contextID = -1; + public long contextID = -1; + + public List sharingContextIdList = null; + + public List programList; + public List shaderList; + public List textureList; + private List defaultValueList = null; private List preValueList = null; private List currentValueList = null; @@ -83,6 +90,12 @@ public class ContextValueType { vboSizeMap = new LinkedHashMap(); vboDataMap = new LinkedHashMap(); vboUsageMap = new LinkedHashMap(); + + programList = new ArrayList(); + shaderList = new ArrayList(); + textureList = new ArrayList(); + + sharingContextIdList = new ArrayList(); } public void setVertexAttribs(int size) { @@ -194,4 +207,50 @@ public class ContextValueType { } return list; } + + public void addSharingContextID( + LinkedHashMap contextMap, + long sharingContextId) { + + sharingContextIdList.add(sharingContextId); + ContextValueType sharingContextValueType = contextMap + .get(sharingContextId); + + // update sharingContextIdList of current contextValueType from + // sharingContextID of all shared contextValueType + for (int i = 0; i < sharingContextValueType.sharingContextIdList.size(); i++) { + long savedSharingContextId = sharingContextValueType.sharingContextIdList + .get(i); + if (savedSharingContextId == contextID + || savedSharingContextId == sharingContextId) { + return; + } + for (int j = 0; j < sharingContextIdList.size(); j++) { + long ContextId = sharingContextIdList.get(j); + if (savedSharingContextId == ContextId) { + return; + } + } + + sharingContextIdList.add(savedSharingContextId); + } + + sharingContextValueType.addSharingContextID(contextMap, contextID); + + // update sharingContextIdList of all shared contextValueType from + // current sharingContextId + for (int i = 0; i < sharingContextValueType.sharingContextIdList.size(); i++) { + long savedSharingContextId = sharingContextValueType.sharingContextIdList + .get(i); + if (savedSharingContextId == contextID + || savedSharingContextId == sharingContextId) { + return; + } + ContextValueType savedSharingContextValueType = contextMap + .get(savedSharingContextId); + + savedSharingContextValueType.addSharingContextID(contextMap, + contextID); + } + } } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/type/FrameCountInfoType.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/type/FrameCountInfoType.java index 0dcc0d1..d707613 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/type/FrameCountInfoType.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/type/FrameCountInfoType.java @@ -33,6 +33,7 @@ public class FrameCountInfoType { private int endFrameIndex = 0; private int frameCount = 0; private int errno = 0; + private int pid = 0; public int getTime() { return time; @@ -77,4 +78,12 @@ public class FrameCountInfoType { public void setEndFrameIndex(int endFrameIndex) { this.endFrameIndex = endFrameIndex; } + + public int getPid() { + return pid; + } + + public void setPid(int pid) { + this.pid = pid; + } } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/type/GLAPINameDefine.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/type/GLAPINameDefine.java index 05794ac..1442b25 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/type/GLAPINameDefine.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/type/GLAPINameDefine.java @@ -125,4 +125,8 @@ public class GLAPINameDefine { public static final String API_GL_ENABLE = "glEnable";//$NON-NLS-1$ public static final String API_EGL_SWAPBUFFERS = "eglSwapBuffers";//$NON-NLS-1$ public static final String API_SGL_SWAPBUFFERS = "_SglSwapBuffers";//$NON-NLS-1$ + + //EGL + public static final String API_EGL_CREATE_CONTEXT = "_SglCreateContext";//$NON-NLS-1$ + } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/type/GLContextDefaultValueHashMap.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/type/GLContextDefaultValueHashMap.java index c6457d7..2828828 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/type/GLContextDefaultValueHashMap.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/type/GLContextDefaultValueHashMap.java @@ -53,16 +53,16 @@ public class GLContextDefaultValueHashMap { defaultContextHashMap.put("BLEND_SRC_RGB", "1"); //$NON-NLS-1$ defaultContextHashMap.put("BLEND_SRC_ALPHA", "1"); //$NON-NLS-1$ - defaultContextHashMap.put("CULLING_ENABLED", CommonConstants.DISABLE); //$NON-NLS-1$ + defaultContextHashMap.put("CULLING_ENABLED", CommonConstants.ENABLE); //$NON-NLS-1$ defaultContextHashMap.put("CULLING_ORIENTATION", "2305"); //$NON-NLS-1$ defaultContextHashMap.put("CULLING_MODE", "1029"); //$NON-NLS-1$ - defaultContextHashMap.put("DEPTH_ENABLED", CommonConstants.DISABLE); //$NON-NLS-1$ + defaultContextHashMap.put("DEPTH_ENABLED", CommonConstants.ENABLE); //$NON-NLS-1$ defaultContextHashMap.put("DEPTH_FUNC", "513"); //$NON-NLS-1$ defaultContextHashMap.put("DEPTH_RANGE_N", "0"); //$NON-NLS-1$ - defaultContextHashMap.put("DEPTH_RANGE_F", "1"); //$NON-NLS-1$ + defaultContextHashMap.put("DEPTH_RANGE_F", "0"); //$NON-NLS-1$ - defaultContextHashMap.put("DITHER_ENABLED", CommonConstants.DISABLE); //$NON-NLS-1$ + defaultContextHashMap.put("DITHER_ENABLED", CommonConstants.ENABLE); //$NON-NLS-1$ defaultContextHashMap.put("FRAME_BUFFER_BINDING", "0"); //$NON-NLS-1$ diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/type/GLSharingContextType.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/type/GLSharingContextType.java new file mode 100644 index 0000000..f0366bc --- /dev/null +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/type/GLSharingContextType.java @@ -0,0 +1,55 @@ +/* + * Dynamic Analyzer + * + * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved. + * + * Contact: + * Hyunjong Park + * Sanghyun Lee + * Juyoung Kim + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Contributors: + * - S-Core Co., Ltd + * + */ + +package org.tizen.dynamicanalyzer.ui.opengl.data.type; + +public class GLSharingContextType { + private long contextId = -1; + private long sharingContextId = -1; + + public GLSharingContextType(long contextId, long sharingContextId) { + this.contextId = contextId; + this.sharingContextId = sharingContextId; + } + + public long getContextId() { + return contextId; + } + + public void setContextId(long contextId) { + this.contextId = contextId; + } + + public long getSharingContextId() { + return sharingContextId; + } + + public void setSharingContextId(long sharingContextId) { + this.sharingContextId = sharingContextId; + } + +} \ No newline at end of file diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/type/GLStateProgramType.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/type/GLStateProgramType.java index 15f3236..6143daf 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/type/GLStateProgramType.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/type/GLStateProgramType.java @@ -35,7 +35,7 @@ public class GLStateProgramType { private int deleteStatus = -1; private int fragmentShaderId = -1; private int vertexShaderId = -1; - private int contextName = -1; + private long contextId = -1; public GLStateProgramType(int id) { setId(id); @@ -81,12 +81,12 @@ public class GLStateProgramType { this.vertexShaderId = vertexShaderId; } - public int getContextName() { - return contextName; + public long getContextId() { + return contextId; } - public void setContextName(int contextName) { - this.contextName = contextName; + public void setContextId(long contextId) { + this.contextId = contextId; } } \ No newline at end of file diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/type/GLStateShaderType.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/type/GLStateShaderType.java index ffb7dff..1c9de00 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/type/GLStateShaderType.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/type/GLStateShaderType.java @@ -32,13 +32,15 @@ public class GLStateShaderType { public static int GL_FRAGMENT_SHADER = 1; public static int GL_VERTEX_SHADER = 2; + private long contextId = -1; private int id = -1; private int shaderType = -1; private String shaderSrc = CommonConstants.EMPTY; private int deleteStatus = -1; private int compileStatus = -1; - public GLStateShaderType(int id) { + public GLStateShaderType(long contextId, int id) { + setContextId(contextId); setId(id); } @@ -90,4 +92,12 @@ public class GLStateShaderType { this.compileStatus = compileStatus; } + public long getContextId() { + return contextId; + } + + public void setContextId(long contextId) { + this.contextId = contextId; + } + } \ No newline at end of file diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/table/api/GLAPIListView.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/table/api/GLAPIListView.java index e8eaa42..e333319 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/table/api/GLAPIListView.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/table/api/GLAPIListView.java @@ -32,13 +32,16 @@ import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.tizen.dynamicanalyzer.common.AnalyzerConstants; +import org.tizen.dynamicanalyzer.common.DASelectionData; import org.tizen.dynamicanalyzer.constant.CommonConstants; import org.tizen.dynamicanalyzer.nl.GLPageLabels; import org.tizen.dynamicanalyzer.resources.ColorResources; +import org.tizen.dynamicanalyzer.swap.model.data.LogData; import org.tizen.dynamicanalyzer.ui.opengl.GLPage; import org.tizen.dynamicanalyzer.ui.opengl.data.GLDataManager; import org.tizen.dynamicanalyzer.ui.opengl.data.type.FrameCountInfoType; import org.tizen.dynamicanalyzer.ui.opengl.data.type.GLSelectionData; +import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineConstants; import org.tizen.dynamicanalyzer.widgets.da.view.DAViewComposite; import org.tizen.dynamicanalyzer.widgets.da.view.DAViewData; @@ -100,23 +103,24 @@ public class GLAPIListView extends DAViewComposite { GLSelectionData data = (GLSelectionData) vdata; String id = data.getViewID(); if (id.equals(GLPage.chartViewID)) { + int startFrameIndex = data.getFrameTimeIndex(); int endFrameIndex = data.getSecondFrameIndex(); - int frameIndex = data.getFrameTimeIndex(); - if (GLDataManager.getInstance().isShowFrameRateChart()) { + + if (startFrameIndex == endFrameIndex) { title = GLPageLabels.GL_API_LIST_VIEW_TITLE - + CommonConstants.OPEN_BRACKET + frameIndex - + CommonConstants.DASH + endFrameIndex + + CommonConstants.OPEN_BRACKET + startFrameIndex + GLPageLabels.GL_FRAME + CommonConstants.CLOSE_BRACKET; - } else { title = GLPageLabels.GL_API_LIST_VIEW_TITLE - + CommonConstants.OPEN_BRACKET + frameIndex + + CommonConstants.OPEN_BRACKET + startFrameIndex + + CommonConstants.DASH + endFrameIndex + GLPageLabels.GL_FRAME + CommonConstants.CLOSE_BRACKET; } setTitle(title); - glAPIListTable.updateTableFromChart(frameIndex, endFrameIndex); + glAPIListTable.updateTableFromChart(startFrameIndex, + endFrameIndex); } else if (id.equals(GLPage.contextHistoryID)) { if (GLDataManager.getInstance().isShowFrameRateChart()) { @@ -125,27 +129,7 @@ public class GLAPIListView extends DAViewComposite { frameRateIndex = GLDataManager.getInstance() .getStartFrameRateTime(); } - - FrameCountInfoType selectionFrameCountInfo = GLDataManager - .getInstance().getFrameRateStartIndex( - frameRateIndex, frameRateIndex); - if (null == selectionFrameCountInfo) { - return; - } - int startFrameIndex = selectionFrameCountInfo - .getStartFrameIndex(); - - int endFrameIdnex = selectionFrameCountInfo - .getEndFrameIndex(); - title = GLPageLabels.GL_API_LIST_VIEW_TITLE - + CommonConstants.OPEN_BRACKET + startFrameIndex - + CommonConstants.DASH + endFrameIdnex - + GLPageLabels.GL_FRAME - + CommonConstants.CLOSE_BRACKET; - - setTitle(title); - glAPIListTable.updateTableFromContext(startFrameIndex, - endFrameIdnex, data.getSeq()); + setSelectedAPI(frameRateIndex, data.getSeq()); } else { int frameIndex = data.getFrameTimeIndex(); title = GLPageLabels.GL_API_LIST_VIEW_TITLE @@ -157,8 +141,39 @@ public class GLAPIListView extends DAViewComposite { frameIndex, data.getSeq()); } } + } else if (vdata instanceof DASelectionData) { + DASelectionData selData = (DASelectionData) vdata; + Object obData = selData.getData(); + LogData ldata = (LogData) obData; + long dataTime = ldata.getTime(); + double selectionTime = dataTime / TimelineConstants.MEGA_DOUBLE; + if (selectionTime <= 1) { + selectionTime = GLDataManager.getInstance() + .getStartFrameRateTime(); + } + setSelectedAPI((int) selectionTime, + Integer.toString(ldata.getSeq())); } + } + + private void setSelectedAPI(int selectionTime, String seq) { + FrameCountInfoType selectionFrameCountInfo = GLDataManager + .getInstance().getFrameRateStartIndex(selectionTime, + selectionTime); + if (null == selectionFrameCountInfo) { + return; + } + int startFrameIndex = selectionFrameCountInfo.getStartFrameIndex(); + + int endFrameIdnex = selectionFrameCountInfo.getEndFrameIndex(); + title = GLPageLabels.GL_API_LIST_VIEW_TITLE + + CommonConstants.OPEN_BRACKET + startFrameIndex + + CommonConstants.DASH + endFrameIdnex + GLPageLabels.GL_FRAME + + CommonConstants.CLOSE_BRACKET; + setTitle(title); + glAPIListTable.updateTableFromContext(startFrameIndex, endFrameIdnex, + seq); } @Override diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/table/state/GLContextTable.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/table/state/GLContextTable.java index 887dfd7..7c94eae 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/table/state/GLContextTable.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/table/state/GLContextTable.java @@ -143,7 +143,8 @@ public class GLContextTable extends DATableComposite { for (int i = 0; i < size; i++) { if (i == GLContextNameEnum.RID.ordinal() || i == GLContextNameEnum.SEQ.ordinal() - || i == GLContextNameEnum.CONTEXT_ID.ordinal()) { + || i == GLContextNameEnum.CONTEXT_ID.ordinal() + || i == GLContextNameEnum.TEXTURE_ACTIVE.ordinal()) { continue; } @@ -161,13 +162,11 @@ public class GLContextTable extends DATableComposite { } if (isInteger(currentValue)) { - if (i != GLContextNameEnum.TEXTURE_ACTIVE.ordinal()) { - String glConstantDefine = GLConstantDefine - .getConstantString(currentValue); - if (null != glConstantDefine) { - defaultValue = glConstantDefine; - currentValue = glConstantDefine; - } + String glConstantDefine = GLConstantDefine + .getConstantString(currentValue); + if (null != glConstantDefine) { + defaultValue = glConstantDefine; + currentValue = glConstantDefine; } } text.add(stateName); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/table/state/GLProgramTable.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/table/state/GLProgramTable.java index 25d29c5..ad6b0fa 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/table/state/GLProgramTable.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/table/state/GLProgramTable.java @@ -72,8 +72,10 @@ public class GLProgramTable extends DATableComposite { List input = new ArrayList(); + GLDataManager.getInstance().updateSharingContextList(); + List programList = GLDataManager.getInstance() - .getStateDataMagerInstance().getProgramList(); + .getStateDataMake().getProgramList(); int size = programList.size(); @@ -84,7 +86,7 @@ public class GLProgramTable extends DATableComposite { Long.parseLong(programId)); String contextName = GLPageLabels.GL_CONTEXT - + programList.get(i).getContextName(); + + programList.get(i).getContextId(); String programID = GLPageLabels.GL_PROGRAM + programId; String vertexShaderID = GLPageLabels.GL_SHADER + programList.get(i).getVertexShaderId(); @@ -101,11 +103,14 @@ public class GLProgramTable extends DATableComposite { tableInput.setData(tableData); input.add(tableInput); - int contextID = programList.get(i).getContextName(); + long contextID = programList.get(i).getContextId(); if (GLDataManager.getInstance().getSelectedContextID() == contextID) { tableInput.setInRange(true); } + if (GLDataManager.getInstance().isSharingData(contextID)) { + tableInput.setInRange(true); + } } return input; diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/table/state/GLTextureTable.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/table/state/GLTextureTable.java index 92c0f77..a6e7294 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/table/state/GLTextureTable.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/table/state/GLTextureTable.java @@ -66,8 +66,13 @@ public class GLTextureTable extends DATableComposite { List input = new ArrayList(); + GLDataManager.getInstance().updateSharingContextList(); + List textureList = GLDataManager.getInstance() .getStateTextureDBTableManage().select(); + if (null == textureList) { + return null; + } int size = textureList.size(); for (int i = 0; i < size; i++) { @@ -103,7 +108,9 @@ public class GLTextureTable extends DATableComposite { if (GLDataManager.getInstance().getSelectedContextID() == contextID) { tableInput.setInRange(true); } - + if (GLDataManager.getInstance().isSharingData(contextID)) { + tableInput.setInRange(true); + } } return input; }